Skip to content

PAL-1311 Generate the CLI alongside the shared SDKs - #1422

Draft
chris-garber-vapi wants to merge 1 commit into
mainfrom
codex/pal-1311-shared-cli-generation
Draft

chris-garber-vapi wants to merge 1 commit into
mainfrom
codex/pal-1311-shared-cli-generation

Conversation

@chris-garber-vapi

@chris-garber-vapi chris-garber-vapi commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Replace the Vapi CLI with a Fern-generated OAuth beta

Related PRs and rollout

  • CLI #21 adopts preview output generated using this configuration, removes duplicated inputs, and retains CLI customizations/tests/docs. It was not produced by a GitHub Actions run from this PR. Merge docs: Add gemini in providers section #21 before invoking the central Release CLI workflow.
  • vapi #26299 enables native OAuth token acceptance in the API/gateway; it is needed for live CLI OAuth use, independently of generation.
  • docs #1423 adds readable operation names directly to the existing shared overrides for every SDK and this CLI. It replaces vapi #26833's source-annotation approach and needs SDK version compatibility review. The generation configuration here consumes those overrides directly.

Description

Configures CLI generation in this repository alongside the server SDKs. The new cli-sdk group targets VapiAI/cli in pull-request mode; Release CLI accepts an explicit version and opens a generated PR without publishing.

How it works

The CLI workspace references the existing API's OpenAPI file, naming overrides and parameter overlay directly. Its OAuth/PKCE and staging-server overrides stay isolated from the other SDKs. A separate workspace is necessary because generator-level spec overrides did not reach the CLI's embedded OpenAPI in validation.

Before After
CLI vendors three API inputs and owns separate generation scripts Shared files are consumed directly from this repo
CLI generation runs separately Central Release CLI workflow uses Fern's SDK PR delivery path

The seven existing SDK groups and their effective API configuration remain byte-for-byte unchanged. The paired CLI #21 removes the duplicated inputs, retains repository-owned docs/tests, and uses native Fern Replay for schema and command-binding customizations. Its HTTP runtime is Fernignore-protected because Replay rejects the embedded public test certificate.

Testing Steps

  • Central publishing preview succeeds with native PKCE, the staging default server and optional provider Content-Type.
  • Shared input paths/settings match the API workspace; existing SDK configuration is unchanged.
  • Two local native Replay cycles preserve runtime, API files, wire fixtures and repository-owned checks without conflicts.
  • CLI runtime tests (2,265), wire tests (290), end-to-end checks (14) and 500 ms performance budgets pass.
  • Workflow passes actionlint.

Risks

Merge CLI #21 before the first Release CLI invocation so the destination has its Replay baseline and Fernignore protections. Keep CLI generator 0.59.1 pinned; reconcile the protected HTTP runtime with fresh output when upgrading it.

Live OAuth acceptance, production client promotion and package-publishing setup remain release gates. This PR does not publish a package or change server SDK authentication.

[Replace the Vapi CLI with a Fern-generated OAuth beta](https://linear.app/vapi/issue/PAL-1311/replace-the-vapi-cli-with-a-fern-generated-oauth-beta)

## Description

Configures CLI generation in this repository alongside the server SDKs. The new `cli-sdk` group targets `VapiAI/cli` in pull-request mode; Release CLI accepts an explicit version and opens a generated PR without publishing.

## How it works

The CLI workspace references the existing API's OpenAPI file, naming overrides and parameter overlay directly. Its OAuth/PKCE and staging-server overrides stay isolated from the other SDKs. A separate workspace is necessary because generator-level spec overrides did not reach the CLI's embedded OpenAPI in validation.

| Before | After |
| --- | --- |
| CLI vendors three API inputs and owns separate generation scripts | Shared files are consumed directly from this repo |
| CLI generation runs separately | Central Release CLI workflow uses Fern's SDK PR delivery path |

The seven existing SDK groups and their effective API configuration remain byte-for-byte unchanged. The paired [CLI #21](https://app.graphite.com/github/pr/VapiAI/cli/21) removes the duplicated inputs, retains repository-owned docs/tests, and uses native Fern Replay for schema and command-binding customizations. Its HTTP runtime is Fernignore-protected because Replay rejects the embedded public test certificate.

## Testing Steps

- [x] Central publishing preview succeeds with native PKCE, the staging default server and optional provider Content-Type.
- [x] Shared input paths/settings match the API workspace; existing SDK configuration is unchanged.
- [x] Two local native Replay cycles preserve runtime, API files, wire fixtures and repository-owned checks without conflicts.
- [x] CLI runtime tests (2,265), wire tests (290), end-to-end checks and 500 ms performance budgets pass.
- [x] Workflow passes actionlint.

## Risks

Merge CLI #21 before the first Release CLI invocation so the destination has its Replay baseline and Fernignore protections. Keep CLI generator 0.59.1 pinned; reconcile the protected HTTP runtime with fresh output when upgrading it.

Live OAuth acceptance, production client promotion and package-publishing setup remain release gates. This PR does not publish a package or change server SDK authentication.

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant