pipecatcloud 1.2.0__tar.gz → 1.4.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-1.4.0/.claude/skills/update-docs/SOURCE_DOC_MAPPING.md +201 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.github/workflows/publish-pypi.yml +39 -0
- pipecatcloud-1.4.0/.github/workflows/tests.yml +75 -0
- pipecatcloud-1.4.0/.github/workflows/update-docs.yml +375 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/CHANGELOG.md +140 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/CLAUDE.md +7 -5
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/PKG-INFO +2 -2
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/pyproject.toml +3 -1
- pipecatcloud-1.4.0/scripts/release-changelog.py +113 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/__init__.py +4 -1
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/agent.py +46 -1
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/api.py +34 -2
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/agent.py +97 -16
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/github.py +142 -39
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/regions.py +4 -1
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/registry_keys.py +71 -8
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/spend_limit.py +40 -11
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/config.py +1 -2
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/PKG-INFO +2 -2
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/SOURCES.txt +3 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/requires.txt +1 -1
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/scm_file_list.json +3 -0
- pipecatcloud-1.4.0/src/pipecatcloud.egg-info/scm_version.json +8 -0
- pipecatcloud-1.4.0/tests/test_agent_args.py +329 -0
- pipecatcloud-1.4.0/tests/test_agent_sessions.py +187 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_api_client.py +68 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_github_integration.py +346 -6
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_json_output.py +25 -1
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_regions_lifecycle.py +175 -1
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_spend_limit.py +44 -3
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/uv.lock +806 -572
- pipecatcloud-1.2.0/.github/workflows/tests.yml +0 -38
- pipecatcloud-1.2.0/src/pipecatcloud.egg-info/scm_version.json +0 -8
- pipecatcloud-1.2.0/tests/test_agent_args.py +0 -64
- pipecatcloud-1.2.0/tests/test_agent_sessions.py +0 -70
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.claude/settings.json +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.github/workflows/format.yml +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.github/workflows/publish-test.yml +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.github/workflows/python-compatibility.yml +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.gitignore +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/.pre-commit-config.yaml +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/LICENSE +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/README.md +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/pipecat-cloud.png +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/pytest.ini +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/scripts/fix-ruff.sh +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/setup.cfg +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/__version__.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/__init__.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/async_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/auth_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/build_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/console_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/deploy_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/github_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/_utils/regions.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/__init__.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/api.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/__init__.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/agent_profiles.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/auth.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/build.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/deploy.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/docker.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/organizations.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/commands/secrets.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/config.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/cli/entry_point.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/constants.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/exception.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/py.typed +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/session.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud/smallwebrtc/session_manager.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/dependency_links.txt +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/entry_points.txt +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/src/pipecatcloud.egg-info/top_level.txt +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/__init__.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/conftest.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_agent_profiles_and_resources.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_agent_status_output.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_agent_stop.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_auth.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_build_id_display.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_build_utils.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_config_file.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_deploy_architecture.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_deploy_image_pull_secret.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_deploy_poll.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_deploy_referenced_secret_set.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_deployment_status.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_docker_commands.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_exit_codes.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_krisp_viva.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_max_session_duration.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_organizations.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_output_modes.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_pat_auth.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_regions.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_secrets_reference.py +0 -0
- {pipecatcloud-1.2.0 → pipecatcloud-1.4.0}/tests/test_secrets_set_referenced.py +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Source-to-Doc Mapping — pipecatcloud
|
|
2
|
+
|
|
3
|
+
The profile for the shared `update-docs` skill, which lives in
|
|
4
|
+
`pipecat-ai/pipecat` at `.claude/skills/update-docs/SKILL.md` and is published
|
|
5
|
+
through the `pipecat-dev-skills` marketplace. `PROFILE_CONTRACT.md` beside it
|
|
6
|
+
describes what this file has to provide.
|
|
7
|
+
|
|
8
|
+
Most of what this package ships is a **command-line surface**, so the mapping is
|
|
9
|
+
dominated by command-group-to-page rules rather than the class-to-page rules a
|
|
10
|
+
library profile would use.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Every `.py` file under `src/pipecatcloud/` is in scope. The package ships two
|
|
15
|
+
public surfaces — the `pipecat cloud` CLI and the Python SDK — and both are
|
|
16
|
+
documented.
|
|
17
|
+
|
|
18
|
+
Exclude only:
|
|
19
|
+
|
|
20
|
+
- `tests/**`
|
|
21
|
+
- `__pycache__/`, `*.pyc`, `py.typed`
|
|
22
|
+
- `src/pipecatcloud/__version__.py`
|
|
23
|
+
|
|
24
|
+
Changes outside `src/pipecatcloud/` — examples, CI config, the docs directory —
|
|
25
|
+
don't trigger doc updates on their own.
|
|
26
|
+
|
|
27
|
+
Note that `src/pipecatcloud/__init__.py` is **not** excluded despite being a
|
|
28
|
+
re-export file. Its `__all__` is the definition of the SDK's public surface, so
|
|
29
|
+
a name added or removed there is a documentation change even when the
|
|
30
|
+
implementation moved not at all.
|
|
31
|
+
|
|
32
|
+
## Skip list
|
|
33
|
+
|
|
34
|
+
| File | Why |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| `_utils/async_utils.py` | `synchronizer` plumbing that turns async commands into blocking ones. No observable surface. |
|
|
37
|
+
| `api.py`, `cli/api.py` | The HTTP client. The class is `_API`, underscore-private, and the REST reference is generated from a hand-maintained `openapi.json` in the docs repo with no upstream to diff against. A change here that implies a REST contract change should be **reported as an unmapped finding** rather than edited into the REST pages blind. |
|
|
38
|
+
| `cli/__init__.py` | Holds `PIPECAT_CLI_NAME`. Reaches users only through message text already documented elsewhere. |
|
|
39
|
+
|
|
40
|
+
Nothing else is internal. In particular `_utils/` is not a skip zone — most of
|
|
41
|
+
this package's documented behavior lives there.
|
|
42
|
+
|
|
43
|
+
## Base classes
|
|
44
|
+
|
|
45
|
+
`pipecatcloud` has no service base classes. Its analogue is the shared console
|
|
46
|
+
layer, which every command's output and exit behavior passes through.
|
|
47
|
+
|
|
48
|
+
| File | Pages to check |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| `_utils/console_utils.py` | `api-reference/cli/cloud/output.mdx` first — it defines `OutputMode`, the rich/plain/json rendering, `output_json`, and `require_interactive`, which is where the exit-2-on-no-TTY contract comes from. A change to the table or listing shape also affects every command page that shows example output. |
|
|
51
|
+
| `_utils/auth_utils.py` | `api-reference/cli/cloud/output.mdx` (exit behavior when unauthenticated), `pipecat-cloud/guides/personal-access-tokens.mdx` |
|
|
52
|
+
|
|
53
|
+
## Non-standard locations
|
|
54
|
+
|
|
55
|
+
| File | Page |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| `cli/entry_point.py` | `api-reference/cli/cloud/output.mdx` — global options (`--output`, `--show-cli-config`) and their resolution order |
|
|
58
|
+
| `cli/config.py`, `config.py` | `api-reference/cli/cloud/output.mdx` — `PIPECAT_`-prefixed environment variables and config-file keys. `PIPECAT_TOKEN` also appears in `pipecat-cloud/guides/personal-access-tokens.mdx` and `guides/cloud-builds.mdx`. |
|
|
59
|
+
| `_utils/deploy_utils.py` | `api-reference/cli/cloud/deploy.mdx` — the `pcc-deploy.toml` reference. `DeployConfigParams` and its nested config classes are the source of truth for every accepted key. |
|
|
60
|
+
| `_utils/build_utils.py` | `pipecat-cloud/guides/cloud-builds.mdx` — `DEFAULT_EXCLUSIONS` is enumerated on that page |
|
|
61
|
+
| `_utils/github_utils.py` | `api-reference/cli/cloud/github.mdx`, `pipecat-cloud/guides/deploy-from-github.mdx` |
|
|
62
|
+
| `_utils/regions.py` | `api-reference/cli/cloud/regions.mdx`, `pipecat-cloud/guides/regions.mdx` |
|
|
63
|
+
| `constants.py` | Depends on the constant. Krisp values → `pipecat-cloud/guides/krisp-viva.mdx`. Grep the value itself. |
|
|
64
|
+
| `exception.py` | `api-reference/pipecat-cloud/sdk-reference/exceptions.mdx` **and** `pipecat-cloud/fundamentals/error-codes.mdx`. The first documents the classes, the second the `PCC-` codes they carry. |
|
|
65
|
+
| `session.py` | `api-reference/pipecat-cloud/sdk-reference/sessions.mdx`, and `api-reference/pipecat-cloud/sdk-reference/examples.mdx` — its first sample constructs a `Session` |
|
|
66
|
+
| `agent.py` | `api-reference/pipecat-cloud/sdk-reference/session-arguments.mdx`, and `api-reference/pipecat-cloud/sdk-reference/examples.mdx` — two of its three samples are `bot()` entry points |
|
|
67
|
+
| `smallwebrtc/session_manager.py` | `api-reference/pipecat-cloud/sdk-reference/sessions.mdx` |
|
|
68
|
+
| `__init__.py` | `api-reference/pipecat-cloud/sdk-reference/overview.mdx` — its Key Components list should name everything in `__all__` |
|
|
69
|
+
|
|
70
|
+
## Pattern matching
|
|
71
|
+
|
|
72
|
+
`src/pipecatcloud/cli/commands/<group>.py` →
|
|
73
|
+
`api-reference/cli/cloud/<group>.mdx`, with underscores becoming hyphens.
|
|
74
|
+
|
|
75
|
+
| Source | Page |
|
|
76
|
+
| --- | --- |
|
|
77
|
+
| `cli/commands/agent.py` | `api-reference/cli/cloud/agent.mdx` |
|
|
78
|
+
| `cli/commands/auth.py` | `api-reference/cli/cloud/auth.mdx` |
|
|
79
|
+
| `cli/commands/build.py` | `api-reference/cli/cloud/build.mdx` |
|
|
80
|
+
| `cli/commands/deploy.py` | `api-reference/cli/cloud/deploy.mdx` |
|
|
81
|
+
| `cli/commands/docker.py` | `api-reference/cli/cloud/docker.mdx` |
|
|
82
|
+
| `cli/commands/github.py` | `api-reference/cli/cloud/github.mdx` |
|
|
83
|
+
| `cli/commands/organizations.py` | `api-reference/cli/cloud/organizations.mdx` |
|
|
84
|
+
| `cli/commands/regions.py` | `api-reference/cli/cloud/regions.mdx` |
|
|
85
|
+
| `cli/commands/secrets.py` | `api-reference/cli/cloud/secrets.mdx` |
|
|
86
|
+
| `cli/commands/spend_limit.py` | `api-reference/cli/cloud/spend-limit.mdx` |
|
|
87
|
+
|
|
88
|
+
A command group's page is not the whole story. Flags that change how a deploy
|
|
89
|
+
behaves usually also appear in a guide — check `pipecat-cloud/fundamentals/` and
|
|
90
|
+
`pipecat-cloud/guides/` per Step 7.
|
|
91
|
+
|
|
92
|
+
### Self-hosted regions — currently being documented separately
|
|
93
|
+
|
|
94
|
+
`cli/commands/agent_profiles.py` and `cli/commands/registry_keys.py`, and the
|
|
95
|
+
self-hosted subcommands within `regions.py` and `secrets.py`
|
|
96
|
+
(`regions register|show|delete|enroll-token`, `secrets reference`), have **no
|
|
97
|
+
page yet**. They are covered by an in-flight docs PR adding
|
|
98
|
+
`pipecat-cloud/self-hosted/`.
|
|
99
|
+
|
|
100
|
+
Report changes to these as unmapped findings rather than creating pages for
|
|
101
|
+
them, until that section exists and this table names it.
|
|
102
|
+
|
|
103
|
+
## Search
|
|
104
|
+
|
|
105
|
+
When the tables come up empty, grep `DOCS_PATH` for:
|
|
106
|
+
|
|
107
|
+
- **CLI files** — the literal command name as the page heading spells it
|
|
108
|
+
(`## agent link`, `### keys revoke`), then the flag string with its dashes
|
|
109
|
+
(`--no-credentials`). Flags are the most reliable anchor: a page that
|
|
110
|
+
documents a command documents its flags.
|
|
111
|
+
- **SDK files** — the class name (`AgentStartError`, `SessionParams`).
|
|
112
|
+
- **TOML keys** — the bare key (`websocket_auth`, `min_agents`) across
|
|
113
|
+
`api-reference/cli/cloud/deploy.mdx` and the guides.
|
|
114
|
+
|
|
115
|
+
## Section vocabulary
|
|
116
|
+
|
|
117
|
+
Two page shapes, and they do not share a vocabulary.
|
|
118
|
+
|
|
119
|
+
**CLI reference pages** — one `##` heading per subcommand, then:
|
|
120
|
+
|
|
121
|
+
| Section | Built from | Form |
|
|
122
|
+
| --- | --- | --- |
|
|
123
|
+
| Usage | the command's argument and option signature | fenced `shell` block |
|
|
124
|
+
| Arguments | `typer.Argument(...)` declarations | `<ParamField>` entries |
|
|
125
|
+
| Options | `typer.Option(...)` declarations | `<ParamField>` entries, with both long and short forms in `path` (`--organization / -o`) |
|
|
126
|
+
|
|
127
|
+
A `<ParamField>` `default` must be the Typer default, not what the help text or
|
|
128
|
+
spinner displays. `agent logs --level` was documented as defaulting to `ALL`
|
|
129
|
+
because that is what the spinner prints; the real default is `None`, and `ALL`
|
|
130
|
+
is not a valid value.
|
|
131
|
+
|
|
132
|
+
**SDK reference pages** — one `##` heading per class, then Constructor
|
|
133
|
+
Parameters (`<ParamField>`), Methods (`<ResponseField>`), and Properties.
|
|
134
|
+
Exceptions a method raises belong in its `<ResponseField>`.
|
|
135
|
+
|
|
136
|
+
**`pcc-deploy.toml` keys** live in `api-reference/cli/cloud/deploy.mdx` under
|
|
137
|
+
Configuration Options, as `<ParamField>` entries carrying a short TOML example
|
|
138
|
+
each. Top-level keys go under Optional Fields; a `[section]` gets its own
|
|
139
|
+
`####` heading.
|
|
140
|
+
|
|
141
|
+
## Guide directories
|
|
142
|
+
|
|
143
|
+
- `pipecat-cloud/fundamentals/` — deploy, scaling, secrets, active sessions, agent images, error codes, health checks, logging, accounts
|
|
144
|
+
- `pipecat-cloud/guides/` — cloud builds, GitHub deploys, CI, telephony, container registries, websockets, regions, Krisp
|
|
145
|
+
- `pipecat-cloud/security/` — security and compliance, HIPAA
|
|
146
|
+
- `pipecat-cloud/introduction.mdx` — the section landing page; only changes when a whole capability arrives or leaves
|
|
147
|
+
|
|
148
|
+
These carry a lot of copy-pasteable commands, and a renamed flag breaks every
|
|
149
|
+
one of them silently. When a flag changes, grep all three directories for the
|
|
150
|
+
old spelling before finishing.
|
|
151
|
+
|
|
152
|
+
## New pages
|
|
153
|
+
|
|
154
|
+
### Location and template
|
|
155
|
+
|
|
156
|
+
A new command group goes at `DOCS_PATH/api-reference/cli/cloud/<group>.mdx`:
|
|
157
|
+
|
|
158
|
+
````
|
|
159
|
+
---
|
|
160
|
+
title: "pipecat cloud <group>"
|
|
161
|
+
sidebarTitle: "<group>"
|
|
162
|
+
description: "pipecat cloud <group> ..., 110-140 chars naming what it manages"
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
[One or two sentences on what the group is for, and when to reach for it.]
|
|
166
|
+
|
|
167
|
+
## <subcommand>
|
|
168
|
+
|
|
169
|
+
[What it does.]
|
|
170
|
+
|
|
171
|
+
**Usage:**
|
|
172
|
+
|
|
173
|
+
```shell
|
|
174
|
+
pipecat cloud <group> <subcommand> [ARGS] [OPTIONS]
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Arguments:**
|
|
178
|
+
|
|
179
|
+
<ParamField path="arg-name" type="string" required>
|
|
180
|
+
[From the typer.Argument help text, expanded.]
|
|
181
|
+
</ParamField>
|
|
182
|
+
|
|
183
|
+
**Options:**
|
|
184
|
+
|
|
185
|
+
<ParamField path="--flag / -f" type="string">
|
|
186
|
+
[From the typer.Option help text, expanded.]
|
|
187
|
+
</ParamField>
|
|
188
|
+
|
|
189
|
+
[Behavior worth stating: what prompts, what is required in CI, what the command
|
|
190
|
+
refuses to do.]
|
|
191
|
+
````
|
|
192
|
+
|
|
193
|
+
### Registration
|
|
194
|
+
|
|
195
|
+
Add the path, without `.mdx`, to `DOCS_PATH/docs.json` under the CLI tab's
|
|
196
|
+
`cloud` group. There is no support-matrix page to update — unlike pipecat, this
|
|
197
|
+
is the only registration step.
|
|
198
|
+
|
|
199
|
+
The group's pages are ordered roughly by workflow rather than alphabetically
|
|
200
|
+
(`output` first as the cross-cutting one, then auth, build, deploy, and so on).
|
|
201
|
+
Place a new page where a reader would look for it.
|
|
@@ -78,3 +78,42 @@ jobs:
|
|
|
78
78
|
verbose: true
|
|
79
79
|
print-hash: true
|
|
80
80
|
repository-url: https://test.pypi.org/legacy/
|
|
81
|
+
|
|
82
|
+
# Runs once the package is installable from PyPI, so the release notification
|
|
83
|
+
# never points at a version nobody can install yet. Notes come from the
|
|
84
|
+
# CHANGELOG.md section at the tag: the changelog is the single source of
|
|
85
|
+
# release notes, reformatted for GitHub by scripts/release-changelog.py. A tag
|
|
86
|
+
# whose version has no changelog section fails the run.
|
|
87
|
+
github-release:
|
|
88
|
+
name: 'Create GitHub Release'
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
needs: [publish-to-pypi]
|
|
91
|
+
permissions:
|
|
92
|
+
contents: write
|
|
93
|
+
steps:
|
|
94
|
+
- name: Checkout repo
|
|
95
|
+
uses: actions/checkout@v4
|
|
96
|
+
with:
|
|
97
|
+
ref: ${{ github.event.inputs.gitref }}
|
|
98
|
+
|
|
99
|
+
- name: Set up Python
|
|
100
|
+
uses: actions/setup-python@v5
|
|
101
|
+
with:
|
|
102
|
+
python-version: '3.12'
|
|
103
|
+
|
|
104
|
+
- name: Generate release notes
|
|
105
|
+
env:
|
|
106
|
+
GITREF: ${{ github.event.inputs.gitref }}
|
|
107
|
+
run: |
|
|
108
|
+
python scripts/release-changelog.py --no-heading "${GITREF#v}" > release-notes.md
|
|
109
|
+
|
|
110
|
+
- name: Publish release
|
|
111
|
+
env:
|
|
112
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
113
|
+
GITREF: ${{ github.event.inputs.gitref }}
|
|
114
|
+
run: |
|
|
115
|
+
if gh release view "$GITREF" >/dev/null 2>&1; then
|
|
116
|
+
gh release edit "$GITREF" --notes-file release-notes.md
|
|
117
|
+
else
|
|
118
|
+
gh release create "$GITREF" --title "$GITREF" --notes-file release-notes.md
|
|
119
|
+
fi
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- '**'
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: build-test-${{ github.event.pull_request.number || github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
test:
|
|
18
|
+
name: 'Unit Tests'
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout repo
|
|
22
|
+
uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v3
|
|
26
|
+
with:
|
|
27
|
+
version: 'latest'
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
run: uv python install 3.12
|
|
31
|
+
|
|
32
|
+
- name: Install dependencies
|
|
33
|
+
run: |
|
|
34
|
+
uv sync --group dev
|
|
35
|
+
|
|
36
|
+
- name: Run tests
|
|
37
|
+
run: |
|
|
38
|
+
uv run pytest -v
|
|
39
|
+
|
|
40
|
+
# The job above runs the agent session-argument types against the pipecat-ai
|
|
41
|
+
# in uv.lock. These legs run them against releases before MOQRunnerArguments
|
|
42
|
+
# gained relay_url, where pipecatcloud.agent must still import and refuse only
|
|
43
|
+
# MOQSessionArguments: 1.11.0 has the class without the field, 1.5.0 has no
|
|
44
|
+
# class at all.
|
|
45
|
+
agent-types:
|
|
46
|
+
name: 'Agent types on pipecat-ai ${{ matrix.pipecat-ai }}'
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
strategy:
|
|
49
|
+
fail-fast: false
|
|
50
|
+
matrix:
|
|
51
|
+
pipecat-ai: ['1.11.0', '1.5.0']
|
|
52
|
+
steps:
|
|
53
|
+
- name: Checkout repo
|
|
54
|
+
uses: actions/checkout@v4
|
|
55
|
+
|
|
56
|
+
- name: Install uv
|
|
57
|
+
uses: astral-sh/setup-uv@v3
|
|
58
|
+
with:
|
|
59
|
+
version: 'latest'
|
|
60
|
+
|
|
61
|
+
- name: Set up Python
|
|
62
|
+
run: uv python install 3.12
|
|
63
|
+
|
|
64
|
+
- name: Install dependencies
|
|
65
|
+
run: |
|
|
66
|
+
uv sync --group dev
|
|
67
|
+
|
|
68
|
+
# `python -m pytest`: a bare `pytest` can resolve to the locked
|
|
69
|
+
# environment's entry point instead of the layered one. The tests check,
|
|
70
|
+
# in their own process, that they run on the version this leg names.
|
|
71
|
+
- name: Run the agent type tests
|
|
72
|
+
env:
|
|
73
|
+
PCC_EXPECTED_PIPECAT_AI: ${{ matrix.pipecat-ai }}
|
|
74
|
+
run: |
|
|
75
|
+
uv run --with "pipecat-ai==${{ matrix.pipecat-ai }}" python -m pytest -v tests/test_agent_args.py
|