From 2e19dd0cc520ac05b884a6a0aab62aa294687c42 Mon Sep 17 00:00:00 2001 From: DmitryAnansky Date: Tue, 25 Aug 2026 18:34:27 +0300 Subject: [PATCH 1/6] feat: add the experimental `--with-ai` and `--ai-provider` options for `generate-arazzo` command --- .changeset/generate-arazzo-respect-hint.md | 5 + .changeset/generate-arazzo-with-ai.md | 7 + docs/@v2/commands/generate-arazzo.md | 54 ++++- .../commands/generate-arazzo.test.ts | 128 +++++++++++- packages/cli/src/commands/generate-arazzo.ts | 45 ----- .../__tests__/generate-workflows.test.ts | 166 ++++++++++++++++ .../generate-arazzo/ai/generate-workflows.ts | 185 ++++++++++++++++++ .../src/commands/generate-arazzo/ai/prompt.ts | 58 ++++++ .../cli/src/commands/generate-arazzo/index.ts | 147 ++++++++++++++ .../generate-spec/__tests__/refine.test.ts | 6 +- .../src/commands/generate-spec/ai/refine.ts | 23 +-- .../cli/src/commands/generate-spec/index.ts | 2 +- packages/cli/src/index.ts | 22 ++- packages/cli/src/types.ts | 2 +- .../ai}/__tests__/providers.test.ts | 10 +- packages/cli/src/utils/ai/output.ts | 21 ++ .../generate-spec => utils}/ai/providers.ts | 2 +- packages/respect-core/src/generate.ts | 3 +- .../generate-arazzo-description.test.ts | 8 +- .../generate-inputs-arazzo-components.test.ts | 46 ++++- .../generate-step-security.test.ts | 100 ++++++++++ ...erate-workflow-security-parameters.test.ts | 133 ------------- .../generate-arazzo-description.ts | 2 +- .../generate-inputs-arazzo-components.ts | 34 ++-- .../generate-step-security.ts | 73 +++++++ .../generate-workflow-security-parameters.ts | 52 ----- .../generate-workflows-from-description.ts | 9 +- .../arazzo-description-generator/index.ts | 2 +- 28 files changed, 1051 insertions(+), 294 deletions(-) create mode 100644 .changeset/generate-arazzo-respect-hint.md create mode 100644 .changeset/generate-arazzo-with-ai.md delete mode 100644 packages/cli/src/commands/generate-arazzo.ts create mode 100644 packages/cli/src/commands/generate-arazzo/__tests__/generate-workflows.test.ts create mode 100644 packages/cli/src/commands/generate-arazzo/ai/generate-workflows.ts create mode 100644 packages/cli/src/commands/generate-arazzo/ai/prompt.ts create mode 100644 packages/cli/src/commands/generate-arazzo/index.ts rename packages/cli/src/{commands/generate-spec => utils/ai}/__tests__/providers.test.ts (90%) create mode 100644 packages/cli/src/utils/ai/output.ts rename packages/cli/src/{commands/generate-spec => utils}/ai/providers.ts (98%) create mode 100644 packages/respect-core/src/modules/__tests__/arazzo-description-generator/generate-step-security.test.ts delete mode 100644 packages/respect-core/src/modules/__tests__/arazzo-description-generator/generate-workflow-security-parameters.test.ts create mode 100644 packages/respect-core/src/modules/arazzo-description-generator/generate-step-security.ts delete mode 100644 packages/respect-core/src/modules/arazzo-description-generator/generate-workflow-security-parameters.ts diff --git a/.changeset/generate-arazzo-respect-hint.md b/.changeset/generate-arazzo-respect-hint.md new file mode 100644 index 0000000000..c54592b914 --- /dev/null +++ b/.changeset/generate-arazzo-respect-hint.md @@ -0,0 +1,5 @@ +--- +'@redocly/cli': minor +--- + +The `generate-arazzo` command now prints a ready-to-run `respect` command after generation, including an `--input` placeholder for every workflow input. diff --git a/.changeset/generate-arazzo-with-ai.md b/.changeset/generate-arazzo-with-ai.md new file mode 100644 index 0000000000..ec73be67cb --- /dev/null +++ b/.changeset/generate-arazzo-with-ai.md @@ -0,0 +1,7 @@ +--- +'@redocly/cli': minor +--- + +Added `--with-ai`, `--ai-provider`, and `--max-workflows` options to the `generate-arazzo` command. +With `--with-ai`, the generated one-workflow-per-operation skeleton is redesigned by a locally installed AI CLI (`claude`, `codex`, or `cursor`) into realistic multi-step workflows that chain operations through outputs and runtime expressions, using the OpenAPI description as context. +The AI designs at most `--max-workflows` workflows (default 10), and the generated file is marked as AI-inferred. diff --git a/docs/@v2/commands/generate-arazzo.md b/docs/@v2/commands/generate-arazzo.md index f903abb02a..38f808c63a 100644 --- a/docs/@v2/commands/generate-arazzo.md +++ b/docs/@v2/commands/generate-arazzo.md @@ -17,10 +17,16 @@ It acts as a starting point for a test file and needs to be extended to be funct The first HTTP response is used as the success criteria for each step. +After writing the file, the command prints a ready-to-run [`respect`](./respect.md) command, including an `--input` placeholder for every workflow input — replace the placeholder values with real ones before running it. + +With `--with-ai`, the generated one-workflow-per-operation skeleton is redesigned by an AI provider into realistic multi-step workflows, using the OpenAPI description as context. +See the [Redesign workflows with AI](#redesign-workflows-with-ai) section. + ## Usage ```sh npx @redocly/cli@latest generate-arazzo [-o | --output-file] +npx @redocly/cli@latest generate-arazzo --with-ai [--ai-provider=