Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/workflows/weekly-research.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ You will see the changes reflected in the `.lock.yml` file, which is the actual
By default Claude Code is used as the agentic processor. You can configure the agentic processor by editing the frontmatter of the markdown workflow files.

```markdown
engine: codex # Optional: specify AI engine (claude, codex, ai-inference, gemini)
engine: codex # Optional: specify AI engine (claude, codex, gemini)
```

You can also specify this on the command line when adding or running workflows:
Expand Down
7 changes: 3 additions & 4 deletions docs/frontmatter.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,14 +147,13 @@ Specifies which AI engine to use. Defaults to `claude`.
### Simple String Format

```yaml
engine: claude # or codex, opencode, ai-inference
engine: claude # or codex, gemini
```

**Available engines:**
- `claude` (default): Claude Code with full MCP tool support and allow-listing (see [MCP Guide](mcps.md))
- `codex` (**experimental**): Codex with OpenAI endpoints
- `opencode` (**experimental**): OpenCode AI coding assistant
- `ai-inference`: GitHub Models via actions/ai-inference with GitHub MCP support (see [MCP Guide](mcps.md))
- `gemini`: Google Gemini AI models

### Extended Object Format

Expand All @@ -166,7 +165,7 @@ engine:
```

**Fields:**
- **`id`** (required): Engine identifier (`claude`, `codex`, `opencode`, `ai-inference`)
- **`id`** (required): Engine identifier (`claude`, `codex`, `gemini`)
- **`version`** (optional): Action version (`beta`, `stable`)
- **`model`** (optional): Specific LLM model

Expand Down
6 changes: 3 additions & 3 deletions pkg/cli/templates/instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ The YAML frontmatter supports these fields:
### Agentic Workflow Specific Fields

- **`engine:`** - AI processor configuration
- String format: `"claude"` (default), `"codex"`, `"ai-inference"`, `"gemini"`
- String format: `"claude"` (default), `"codex"`, `"gemini"`
- Object format for extended configuration:
```yaml
engine:
id: claude # Required: agent CLI identifier (claude, codex, ai-inference, gemini)
id: claude # Required: agent CLI identifier (claude, codex, gemini)
version: beta # Optional: version of the action
model: claude-3-5-sonnet-20241022 # Optional: LLM model to use
```
Expand Down Expand Up @@ -412,7 +412,7 @@ The workflow frontmatter is validated against JSON Schema during compilation. Co

- **Invalid field names** - Only fields in the schema are allowed
- **Wrong field types** - e.g., `timeout_minutes` must be integer
- **Invalid enum values** - e.g., `engine` must be "claude", "codex", "ai-inference", or "gemini"
- **Invalid enum values** - e.g., `engine` must be "claude", "codex", or "gemini"
- **Missing required fields** - Some triggers require specific configuration

Use `gh aw compile --verbose` to see detailed validation messages.
8 changes: 4 additions & 4 deletions pkg/parser/schemas/main_workflow_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -254,17 +254,17 @@
"oneOf": [
{
"type": "string",
"enum": ["claude", "codex", "opencode", "ai-inference", "gemini", "genaiscript"],
"description": "Simple engine name (claude, codex, opencode, ai-inference, gemini, or genaiscript)"
"enum": ["claude", "codex", "gemini"],
"description": "Simple engine name (claude, codex, or gemini)"
},
{
"type": "object",
"description": "Extended engine configuration object",
"properties": {
"id": {
"type": "string",
"enum": ["claude", "codex", "opencode", "ai-inference", "gemini", "genaiscript"],
"description": "Agent CLI identifier (claude, codex, opencode, ai-inference, gemini, or genaiscript)"
"enum": ["claude", "codex", "gemini"],
"description": "Agent CLI identifier (claude, codex, or gemini)"
},
"version": {
"type": "string",
Expand Down
3 changes: 0 additions & 3 deletions pkg/workflow/agentic_engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,6 @@ func NewEngineRegistry() *EngineRegistry {
registry.Register(NewClaudeEngine())
registry.Register(NewCodexEngine())
registry.Register(NewGeminiEngine())
registry.Register(NewOpenCodeEngine())
registry.Register(NewAIInferenceEngine())
registry.Register(NewGenAIScriptEngine())

return registry
}
Expand Down
28 changes: 4 additions & 24 deletions pkg/workflow/agentic_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ func TestEngineRegistry(t *testing.T) {

// Test that built-in engines are registered
supportedEngines := registry.GetSupportedEngines()
if len(supportedEngines) != 6 {
t.Errorf("Expected 6 supported engines, got %d", len(supportedEngines))
if len(supportedEngines) != 3 {
t.Errorf("Expected 3 supported engines, got %d", len(supportedEngines))
}

// Test getting engines by ID
Expand All @@ -30,22 +30,6 @@ func TestEngineRegistry(t *testing.T) {
t.Errorf("Expected codex engine ID, got '%s'", codexEngine.GetID())
}

opencodeEngine, err := registry.GetEngine("opencode")
if err != nil {
t.Errorf("Expected to find opencode engine, got error: %v", err)
}
if opencodeEngine.GetID() != "opencode" {
t.Errorf("Expected opencode engine ID, got '%s'", opencodeEngine.GetID())
}

aiInferenceEngine, err := registry.GetEngine("ai-inference")
if err != nil {
t.Errorf("Expected to find ai-inference engine, got error: %v", err)
}
if aiInferenceEngine.GetID() != "ai-inference" {
t.Errorf("Expected ai-inference engine ID, got '%s'", aiInferenceEngine.GetID())
}

geminiEngine, err := registry.GetEngine("gemini")
if err != nil {
t.Errorf("Expected to find gemini engine, got error: %v", err)
Expand All @@ -69,10 +53,6 @@ func TestEngineRegistry(t *testing.T) {
t.Error("Expected codex to be valid engine")
}

if !registry.IsValidEngine("opencode") {
t.Error("Expected opencode to be valid engine")
}

if !registry.IsValidEngine("gemini") {
t.Error("Expected gemini to be valid engine")
}
Expand Down Expand Up @@ -136,7 +116,7 @@ func TestEngineRegistryCustomEngine(t *testing.T) {

// Test that supported engines list is updated
supportedEngines := registry.GetSupportedEngines()
if len(supportedEngines) != 7 {
t.Errorf("Expected 7 supported engines after adding custom, got %d", len(supportedEngines))
if len(supportedEngines) != 4 {
t.Errorf("Expected 4 supported engines after adding custom, got %d", len(supportedEngines))
}
}
136 changes: 0 additions & 136 deletions pkg/workflow/ai_inference_engine.go

This file was deleted.

Loading