diff --git a/docs/src/content/docs/reference/engines.md b/docs/src/content/docs/reference/engines.md index aaf8d0f068d..9c2b18d1b39 100644 --- a/docs/src/content/docs/reference/engines.md +++ b/docs/src/content/docs/reference/engines.md @@ -1,6 +1,6 @@ --- title: AI Engines (aka Coding Agents) -description: Complete guide to AI engines (coding agents) usable with GitHub Agentic Workflows, including Copilot, Claude, and Codex with their specific configuration options. +description: Complete guide to AI engines (coding agents) usable with GitHub Agentic Workflows, including Copilot, Claude, Codex, and Gemini with their specific configuration options. sidebar: order: 600 --- @@ -12,6 +12,7 @@ GitHub Agentic Workflows use [AI Engines](/gh-aw/reference/glossary/#engine) (no - [**Copilot CLI**](#using-copilot-cli) - [**Claude by Anthropic (Claude Code)**](#using-claude-by-anthropic-claude-code) - [**OpenAI Codex**](#using-openai-codex) +- [**Google Gemini CLI**](#using-google-gemini-cli) ## Using Copilot CLI @@ -77,6 +78,24 @@ To use [OpenAI Codex](https://openai.com/blog/openai-codex): gh aw secrets set OPENAI_API_KEY --value "" ``` +## Using Google Gemini CLI + +To use [Google Gemini CLI](https://github.com/google-gemini/gemini-cli): + +1. Request the use of the Gemini engine in your workflow frontmatter: + + ```yaml wrap + engine: gemini + ``` + +2. Configure `GEMINI_API_KEY` GitHub Actions secret. + + [Create a Gemini API key](https://aistudio.google.com/apikey) and add it to your repository: + + ```bash wrap + gh aw secrets set GEMINI_API_KEY --value "" + ``` + ## Extended Coding Agent Configuration Workflows can specify extended configuration for the coding agent: diff --git a/docs/src/content/docs/reference/frontmatter-full.md b/docs/src/content/docs/reference/frontmatter-full.md index 4c611e6534b..30f5d1e8603 100644 --- a/docs/src/content/docs/reference/frontmatter-full.md +++ b/docs/src/content/docs/reference/frontmatter-full.md @@ -1252,15 +1252,14 @@ post-steps: [] # This field supports multiple formats (oneOf): # Option 1: Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub -# Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI - -# experimental) +# Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI) engine: "claude" # Option 2: Extended engine configuration object with advanced options for model # selection, turn limiting, environment variables, and custom steps engine: # AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), - # 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI - experimental) + # 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI) id: "claude" # Optional version of the AI engine action (e.g., 'beta', 'stable', 20). Has diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index d480b1ea6a3..0b916da3a58 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -6899,7 +6899,7 @@ { "type": "string", "enum": ["claude", "codex", "copilot", "gemini"], - "description": "Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI - experimental)" + "description": "Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI)" }, { "type": "object", @@ -6908,7 +6908,7 @@ "id": { "type": "string", "enum": ["claude", "codex", "copilot", "gemini"], - "description": "AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI - experimental)" + "description": "AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI)" }, "version": { "type": ["string", "number"], diff --git a/pkg/workflow/gemini_engine.go b/pkg/workflow/gemini_engine.go index d6d746c0f0e..ed9a0524617 100644 --- a/pkg/workflow/gemini_engine.go +++ b/pkg/workflow/gemini_engine.go @@ -20,7 +20,7 @@ func NewGeminiEngine() *GeminiEngine { id: "gemini", displayName: "Google Gemini CLI", description: "Google Gemini CLI with headless mode and LLM gateway support", - experimental: true, // Marked as experimental as requested + experimental: false, supportsToolsAllowlist: true, supportsMaxTurns: false, supportsWebFetch: false, diff --git a/pkg/workflow/gemini_engine_test.go b/pkg/workflow/gemini_engine_test.go index a7dcbee85d4..4c74e1e3605 100644 --- a/pkg/workflow/gemini_engine_test.go +++ b/pkg/workflow/gemini_engine_test.go @@ -17,7 +17,7 @@ func TestGeminiEngine(t *testing.T) { assert.Equal(t, "gemini", engine.GetID(), "Engine ID should be 'gemini'") assert.Equal(t, "Google Gemini CLI", engine.GetDisplayName(), "Display name should be 'Google Gemini CLI'") assert.NotEmpty(t, engine.GetDescription(), "Description should not be empty") - assert.True(t, engine.IsExperimental(), "Gemini engine should be experimental") + assert.False(t, engine.IsExperimental(), "Gemini engine should not be experimental") }) t.Run("capabilities", func(t *testing.T) {