PIPELINE_CONFIG_GUIDE.md

# Pipeline Configuration Technical Guide

## Table of Contents

1. [Overview](#overview)
2. [Configuration File Structure](#configuration-file-structure)
3. [Workflow Section](#workflow-section)
4. [Defaults Section](#defaults-section)
5. [Steps Section](#steps-section)
6. [Step Types](#step-types)
7. [Prompt Templates](#prompt-templates)
8. [Token Budget Management](#token-budget-management)
9. [Claude Options](#claude-options)
10. [Advanced Features](#advanced-features)
11. [Complete Examples](#complete-examples)
12. [Best Practices](#best-practices)
13. [Troubleshooting](#troubleshooting)

## Overview

Pipeline configuration files are written in YAML format and define the complete workflow for orchestrating Gemini (planning/decision-making) and Claude (code execution) to accomplish complex tasks.

### Basic Structure

```yaml
workflow:
  name: "string"                    # Required: Workflow identifier
  checkpoint_enabled: boolean       # Optional: Enable state saving
  workspace_dir: "string"          # Optional: Claude's sandbox directory
  checkpoint_dir: "string"         # Optional: Checkpoint storage location
  
  defaults:                        # Optional: Default settings
    gemini_model: "string"         # Gemini model to use
    gemini_token_budget: {}        # Token limits for Gemini
    claude_output_format: "string" # Output format for Claude
    output_dir: "string"          # Where to save outputs
    
  gemini_functions: {}            # Optional: Function definitions
  
  steps: []                       # Required: List of workflow steps
```

## Configuration File Structure

### Root Level

The configuration file must have a single root key `workflow`:

```yaml
workflow:
  # All configuration goes here
```

### Required Fields

- `workflow.name`: Unique identifier for the workflow
- `workflow.steps`: Array of step definitions

### Optional Fields

- `workflow.checkpoint_enabled`: Enable workflow state saving (default: false)
- `workflow.workspace_dir`: Directory for Claude's file operations (default: "./workspace")
- `workflow.checkpoint_dir`: Where to save checkpoints (default: "./checkpoints")
- `workflow.defaults`: Default settings for all steps

## Workflow Section

The workflow section contains global settings:

```yaml
workflow:
  name: "data_processor"
  checkpoint_enabled: true
  workspace_dir: "./workspace"
  checkpoint_dir: "./checkpoints"
```

### Field Details

#### `name` (string, required)
- Identifies the workflow in logs and outputs
- Used in output directory naming
- Should be descriptive and unique

#### `checkpoint_enabled` (boolean, optional)
- When `true`, saves state after each step
- Allows resuming interrupted workflows
- Checkpoints include step results and timestamps

#### `workspace_dir` (string, optional)
- Directory where Claude performs file operations
- Created automatically if it doesn't exist
- Provides sandboxing for Claude's file access
- Default: "./workspace"

#### `checkpoint_dir` (string, optional)
- Directory for storing checkpoint files
- Created automatically if needed
- Default: "./checkpoints"

## Defaults Section

Sets default values for all steps:

```yaml
defaults:
  gemini_model: "gemini-2.5-flash-lite-preview-06-17"
  gemini_token_budget:
    max_output_tokens: 2048
    temperature: 0.7
    top_p: 0.95
    top_k: 40
  claude_output_format: "json"
  output_dir: "./outputs/my_workflow"
```

### Available Defaults

#### `gemini_model` (string)
Available models:
- `"gemini-2.5-flash"` - Fast, efficient model
- `"gemini-2.5-flash-lite-preview-06-17"` - Lightweight version
- `"gemini-2.5-pro"` - Most capable model
- `"gemini-2.0-flash"` - Previous generation

#### `gemini_token_budget` (object)
Default token limits for Gemini:
- `max_output_tokens`: Maximum response length (256-8192)
- `temperature`: Randomness control (0.0-1.0)
- `top_p`: Nucleus sampling (0.0-1.0)
- `top_k`: Top-k sampling (1-40)

#### `claude_output_format` (string)
Default output format for Claude:
- `"json"` - Structured JSON output
- `"text"` - Plain text output
- `"stream-json"` - Streaming JSON

#### `output_dir` (string)
Default directory for saving step outputs.

## Steps Section

The heart of the configuration - defines the workflow sequence:

```yaml
steps:
  - name: "analyze"
    type: "gemini"
    role: "brain"
    # ... step configuration
    
  - name: "implement"
    type: "claude"
    role: "muscle"
    # ... step configuration
```

### Step Fields

#### Common Fields (all step types)

##### `name` (string, required)
- Unique identifier for the step
- Referenced by other steps via `previous_response`
- Used in output filenames

##### `type` (string, required)
Options:
- `"gemini"` - Gemini AI step
- `"claude"` - Claude AI step
- `"parallel_claude"` - Multiple Claude instances

##### `role` (string, optional)
- `"brain"` - Decision-making role (typically Gemini)
- `"muscle"` - Execution role (typically Claude)
- Used for documentation/clarity

##### `condition` (string, optional)
Skip step based on previous results:
```yaml
condition: "previous_step.field_name"
```

##### `output_to_file` (string, optional)
Save step output to specified file:
```yaml
output_to_file: "analysis_result.json"
```

## Step Types

### 1. Gemini Step

For planning, analysis, and decision-making:

```yaml
- name: "plan_implementation"
  type: "gemini"
  role: "brain"
  model: "gemini-2.5-flash"  # Override default
  token_budget:
    max_output_tokens: 4096
    temperature: 0.5
  prompt:
    - type: "static"
      content: "Create an implementation plan..."
  output_to_file: "plan.json"
```

#### Gemini-Specific Fields

##### `model` (string, optional)
Override the default Gemini model for this step.

##### `token_budget` (object, optional)
Override default token limits:
```yaml
token_budget:
  max_output_tokens: 8192  # More tokens for detailed output
  temperature: 0.3         # Lower for focused responses
  top_p: 0.9              # Adjust nucleus sampling
  top_k: 20               # Limit token choices
```

##### `functions` (array, optional)
Enable function calling:
```yaml
functions:
  - "evaluate_code"
  - "generate_tests"
```

### 2. Claude Step

For code execution and file manipulation:

```yaml
- name: "implement_feature"
  type: "claude"
  role: "muscle"
  claude_options:
    print: true
    max_turns: 15
    allowed_tools: ["Write", "Edit", "Read", "Bash"]
    output_format: "json"
    cwd: "./workspace"
  prompt:
    - type: "static"
      content: "Implement the following..."
  output_to_file: "implementation.json"
```

#### Claude-Specific Fields

##### `claude_options` (object, optional)
Configuration for Claude CLI:

```yaml
claude_options:
  print: true                    # Non-interactive mode
  output_format: "json"          # Response format
  max_turns: 20                  # Conversation limit
  allowed_tools: ["Write", "Edit", "Read", "Bash", "Search"]
  verbose: true                  # Detailed logging
  append_system_prompt: "Focus on clean code"
  cwd: "./workspace/project"     # Working directory
```

### 3. Parallel Claude Step

Run multiple Claude instances simultaneously:

```yaml
- name: "parallel_development"
  type: "parallel_claude"
  parallel_tasks:
    - id: "backend"
      claude_options:
        max_turns: 15
        cwd: "./workspace/backend"
      prompt:
        - type: "static"
          content: "Implement REST API..."
      output_to_file: "backend.json"
      
    - id: "frontend"
      claude_options:
        max_turns: 15
        cwd: "./workspace/frontend"
      prompt:
        - type: "static"
          content: "Implement React UI..."
      output_to_file: "frontend.json"
```

#### Parallel-Specific Fields

##### `parallel_tasks` (array, required)
List of task definitions, each with:
- `id`: Unique task identifier
- `claude_options`: Task-specific Claude settings
- `prompt`: Task prompt configuration
- `output_to_file`: Task output file

## Prompt Templates

Prompts are built from components that can reference files and previous outputs:

### 1. Static Content

Fixed text content:

```yaml
prompt:
  - type: "static"
    content: |
      Analyze this requirement:
      - Feature A
      - Feature B
```

### 2. File Content

Load content from files:

```yaml
prompt:
  - type: "file"
    path: "requirements.txt"
  - type: "file"
    path: "src/main.py"
```

### 3. Previous Response

Reference output from earlier steps:

```yaml
prompt:
  - type: "static"
    content: "Based on the plan:"
  - type: "previous_response"
    step: "planning_step"
```

With field extraction:

```yaml
prompt:
  - type: "previous_response"
    step: "analysis_step"
    extract: "issues"  # Extract specific field from JSON
```

### 4. Complex Example

Combining all prompt types:

```yaml
prompt:
  - type: "static"
    content: "Project requirements:"
  - type: "file"
    path: "requirements.md"
  - type: "static"
    content: "\n\nPrevious analysis found these issues:"
  - type: "previous_response"
    step: "code_review"
    extract: "critical_issues"
  - type: "static"
    content: "\n\nPlease fix all critical issues."
```

## Token Budget Management

Fine-tune AI response lengths and quality:

### Understanding Token Budgets

```yaml
token_budget:
  max_output_tokens: 4096  # Response length limit
  temperature: 0.7         # Randomness (0=deterministic, 1=creative)
  top_p: 0.95             # Cumulative probability cutoff
  top_k: 40               # Consider top K tokens
```

### Common Configurations

#### Concise Analysis
```yaml
token_budget:
  max_output_tokens: 1024
  temperature: 0.5
```

#### Detailed Planning
```yaml
token_budget:
  max_output_tokens: 4096
  temperature: 0.7
```

#### Code Generation
```yaml
token_budget:
  max_output_tokens: 8192
  temperature: 0.3  # Lower for consistency
```

#### Creative Writing
```yaml
token_budget:
  max_output_tokens: 2048
  temperature: 0.9  # Higher for variety
```

## Claude Options

### Tool Configuration

Control which tools Claude can use:

```yaml
allowed_tools: ["Write", "Edit", "Read"]  # File operations only
allowed_tools: ["Write", "Edit", "Read", "Bash"]  # Include shell
allowed_tools: ["Write", "Edit", "Read", "Search", "Bash"]  # Full access
```

### Turn Limits

Set conversation length:

```yaml
max_turns: 5   # Quick tasks
max_turns: 15  # Standard implementation
max_turns: 30  # Complex projects
```

### Working Directory

Sandbox file operations:

```yaml
cwd: "./workspace"          # Default sandbox
cwd: "./workspace/backend"  # Project-specific
cwd: "/tmp/safe_dir"       # Absolute path
```

## Advanced Features

### 1. Conditional Execution

Skip steps based on conditions:

```yaml
steps:
  - name: "check_quality"
    type: "gemini"
    prompt:
      - type: "static"
        content: "Review code quality. Set needs_fixes=true if issues found."
    
  - name: "fix_issues"
    type: "claude"
    condition: "check_quality.needs_fixes"  # Only runs if true
    prompt:
      - type: "static"
        content: "Fix the identified issues"
```

### 2. Function Calling

Define functions for Gemini:

```yaml
workflow:
  gemini_functions:
    evaluate_code:
      description: "Evaluate code quality and security"
      parameters:
        type: object
        properties:
          quality_score:
            type: integer
            description: "Score from 1-10"
          security_issues:
            type: array
            items:
              type: string
          needs_refactoring:
            type: boolean
        required: ["quality_score", "security_issues"]
    
  steps:
    - name: "code_review"
      type: "gemini"
      functions:
        - "evaluate_code"
      prompt:
        - type: "static"
          content: "Review this code and call evaluate_code function"
```

### 3. Dynamic Workflows

Build prompts from multiple sources:

```yaml
steps:
  - name: "gather_context"
    type: "gemini"
    prompt:
      - type: "file"
        path: "context/project.md"
      - type: "file" 
        path: "context/architecture.md"
      - type: "static"
        content: "Summarize the project context"
    
  - name: "generate_tasks"
    type: "gemini"
    prompt:
      - type: "previous_response"
        step: "gather_context"
      - type: "static"
        content: "Based on this context, generate implementation tasks"
    
  - name: "implement"
    type: "claude"
    prompt:
      - type: "previous_response"
        step: "generate_tasks"
      - type: "static"
        content: "Implement these tasks"
```

## Complete Examples

### Example 1: Code Review and Fix

```yaml
workflow:
  name: "code_reviewer"
  workspace_dir: "./workspace"
  
  defaults:
    gemini_model: "gemini-2.5-flash"
    output_dir: "./outputs/review"
    
  steps:
    - name: "analyze_code"
      type: "gemini"
      token_budget:
        max_output_tokens: 2048
        temperature: 0.3
      prompt:
        - type: "static"
          content: "Review this code for bugs, security issues, and style:"
        - type: "file"
          path: "src/main.py"
      output_to_file: "analysis.json"
      
    - name: "fix_issues"
      type: "claude"
      claude_options:
        max_turns: 10
        allowed_tools: ["Read", "Edit"]
        cwd: "./workspace"
      prompt:
        - type: "static"
          content: "Fix all issues identified in the review:"
        - type: "previous_response"
          step: "analyze_code"
      output_to_file: "fixes.json"
```

### Example 2: Full Application Development

```yaml
workflow:
  name: "app_builder"
  checkpoint_enabled: true
  workspace_dir: "./workspace"
  
  defaults:
    gemini_model: "gemini-2.5-flash"
    gemini_token_budget:
      max_output_tokens: 4096
      temperature: 0.7
    claude_output_format: "json"
    output_dir: "./outputs/app"
    
  gemini_functions:
    design_architecture:
      description: "Design application architecture"
      parameters:
        type: object
        properties:
          components:
            type: array
            items:
              type: object
              properties:
                name:
                  type: string
                type:
                  type: string
                  enum: ["frontend", "backend", "database", "service"]
                dependencies:
                  type: array
                  items:
                    type: string
    
  steps:
    - name: "design"
      type: "gemini"
      role: "brain"
      functions:
        - "design_architecture"
      prompt:
        - type: "file"
          path: "requirements.md"
        - type: "static"
          content: |
            Design a microservices architecture for these requirements.
            Call design_architecture with the component structure.
      output_to_file: "architecture.json"
      
    - name: "plan_implementation"
      type: "gemini"
      role: "brain"
      token_budget:
        max_output_tokens: 8192
      prompt:
        - type: "static"
          content: "Create detailed implementation instructions for each component:"
        - type: "previous_response"
          step: "design"
      output_to_file: "implementation_plan.json"
      
    - name: "implement_services"
      type: "parallel_claude"
      parallel_tasks:
        - id: "auth_service"
          claude_options:
            max_turns: 20
            allowed_tools: ["Write", "Edit", "Read", "Bash"]
            cwd: "./workspace/services/auth"
          prompt:
            - type: "static"
              content: "Implement the authentication service based on the plan:"
            - type: "previous_response"
              step: "plan_implementation"
              extract: "auth_service"
          output_to_file: "auth_implementation.json"
          
        - id: "api_gateway"
          claude_options:
            max_turns: 20
            allowed_tools: ["Write", "Edit", "Read", "Bash"]
            cwd: "./workspace/services/gateway"
          prompt:
            - type: "static"
              content: "Implement the API gateway based on the plan:"
            - type: "previous_response"
              step: "plan_implementation"
              extract: "api_gateway"
          output_to_file: "gateway_implementation.json"
          
        - id: "frontend"
          claude_options:
            max_turns: 25
            allowed_tools: ["Write", "Edit", "Read", "Bash"]
            cwd: "./workspace/frontend"
          prompt:
            - type: "static"
              content: "Implement the React frontend based on the plan:"
            - type: "previous_response"
              step: "plan_implementation"
              extract: "frontend"
          output_to_file: "frontend_implementation.json"
      
    - name: "integration_tests"
      type: "gemini"
      role: "brain"
      prompt:
        - type: "static"
          content: "Design integration tests for the implemented services:"
        - type: "previous_response"
          step: "implement_services"
      output_to_file: "test_plan.json"
      
    - name: "implement_tests"
      type: "claude"
      role: "muscle"
      claude_options:
        max_turns: 15
        allowed_tools: ["Write", "Read", "Bash"]
        cwd: "./workspace/tests"
      prompt:
        - type: "previous_response"
          step: "integration_tests"
        - type: "static"
          content: "Implement these integration tests"
      output_to_file: "tests_implementation.json"
      
    - name: "final_review"
      type: "gemini"
      role: "brain"
      token_budget:
        max_output_tokens: 2048
        temperature: 0.3
      prompt:
        - type: "static"
          content: |
            Review the complete implementation:
            1. Check if all requirements are met
            2. Identify any missing features
            3. Suggest improvements
            Set 'ready_for_deployment' to true if acceptable.
        - type: "previous_response"
          step: "implement_services"
      output_to_file: "final_review.json"
```

## Best Practices

### 1. Token Budget Optimization

- Start with conservative limits and increase as needed
- Use lower temperatures (0.1-0.3) for technical tasks
- Use higher temperatures (0.7-0.9) for creative tasks
- Monitor token usage in debug logs

### 2. Step Design

- Keep prompts focused on single responsibilities
- Use descriptive step names for easy reference
- Save outputs for all important steps
- Build complex prompts from simpler components

### 3. Error Handling

- Set appropriate `max_turns` for Claude tasks
- Use conditions to handle failure cases
- Include validation steps after implementation
- Review debug logs when issues occur

### 4. Workspace Management

- Use subdirectories for different components
- Set appropriate `cwd` in claude_options
- Keep workspace separate from project files
- Clean workspace between runs if needed

### 5. Prompt Engineering

- Be specific in instructions
- Provide examples when possible
- Use previous responses to maintain context
- Break complex tasks into smaller steps

## Troubleshooting

### Common Issues

#### 1. Claude Hits Turn Limit

```yaml
# Increase max_turns
claude_options:
  max_turns: 30  # Increase from default
```

#### 2. Gemini Response Truncated

```yaml
# Increase token limit
token_budget:
  max_output_tokens: 8192  # Maximum allowed
```

#### 3. Files Created in Wrong Location

```yaml
# Check workspace configuration
workflow:
  workspace_dir: "./workspace"
  
steps:
  - name: "implement"
    claude_options:
      cwd: "./workspace/project"  # Must be under workspace_dir
```

#### 4. Step References Not Found

```yaml
# Ensure step names match exactly
- name: "step_one"  # This exact name
  type: "gemini"
  
- name: "step_two"
  prompt:
    - type: "previous_response"
      step: "step_one"  # Must match exactly
```

#### 5. JSON Parsing Errors

```yaml
# Use appropriate output format
claude_options:
  output_format: "json"  # For structured data
  # or
  output_format: "text"  # For plain text
```

### Debug Techniques

1. **Check Debug Logs**
   ```bash
   python view_debug.py -l
   ```

2. **Verify File Creation**
   ```bash
   python view_debug.py -w
   ```

3. **Test Individual Steps**
   - Comment out later steps
   - Run pipeline partially
   - Check intermediate outputs

4. **Validate YAML Syntax**
   ```bash
   python -c "import yaml; yaml.safe_load(open('config.yaml'))"
   ```

## Schema Reference

### Complete Configuration Schema

```yaml
workflow:
  name: string                    # Required
  checkpoint_enabled: boolean     # Optional
  workspace_dir: string          # Optional
  checkpoint_dir: string         # Optional
  
  # NEW: Enhanced Claude authentication and environment configuration
  claude_auth:                   # Optional
    auto_check: boolean          # Verify auth before starting
    provider: enum["anthropic", "aws_bedrock", "google_vertex"]
    fallback_mock: boolean       # Use mocks if auth fails in dev
    diagnostics: boolean         # Run AuthChecker diagnostics
  
  environment:                   # Optional
    mode: enum["development", "production", "test"]
    debug_level: enum["basic", "detailed", "performance"]
    cost_alerts:
      enabled: boolean
      threshold_usd: float
      notify_on_exceed: boolean
  
  defaults:                      # Optional
    gemini_model: string
    gemini_token_budget:
      max_output_tokens: integer
      temperature: float
      top_p: float
      top_k: integer
    claude_output_format: enum["json", "text", "stream-json"]
    claude_preset: enum["development", "production", "analysis", "chat"]  # NEW
    output_dir: string
    
  gemini_functions:              # Optional
    function_name:
      description: string
      parameters: object         # JSON Schema
      
  steps:                         # Required
    - name: string               # Required
      type: enum["gemini", "claude", "parallel_claude", "claude_session", "claude_smart", "claude_extract", "claude_batch", "claude_robust"]  # Enhanced
      role: enum["brain", "muscle"]  # Optional
      condition: string          # Optional
      output_to_file: string     # Optional
      
      # For type: "gemini"
      model: string              # Optional
      token_budget: object       # Optional
      functions: array[string]   # Optional
      
      # For type: "claude" (Enhanced options)
      claude_options:            # Optional
        # Core Configuration
        max_turns: integer
        output_format: enum["text", "json", "stream_json"]
        verbose: boolean
        
        # Tool Management
        allowed_tools: array[string]
        disallowed_tools: array[string]
        
        # System Prompts
        system_prompt: string
        append_system_prompt: string
        
        # Working Environment
        cwd: string
        
        # Permission Management (Future: MCP Support)
        permission_mode: enum["default", "accept_edits", "bypass_permissions", "plan"]
        permission_prompt_tool: string
        
        # Advanced Features (Future)
        mcp_config: string
        
        # Session Management
        session_id: string
        resume_session: boolean
        
        # Performance & Reliability
        retry_config:
          max_retries: integer
          backoff_strategy: enum["linear", "exponential"]
          retry_on: array[string]
        timeout_ms: integer
        
        # Debug & Monitoring
        debug_mode: boolean
        telemetry_enabled: boolean
        cost_tracking: boolean
      
      # NEW: For type: "claude_smart" (Using OptionBuilder presets)
      preset: enum["development", "production", "analysis", "chat"]
      environment_aware: boolean
      
      # NEW: For type: "claude_extract" (Enhanced content processing)
      extraction_config:
        use_content_extractor: boolean
        format: enum["text", "json", "structured", "summary", "markdown"]
        post_processing: array[string]
        max_summary_length: integer
        include_metadata: boolean
      
      # NEW: For type: "claude_session" (Session management)
      session_config:
        persist: boolean
        session_name: string
        continue_on_restart: boolean
        checkpoint_frequency: integer
        description: string
      
      # NEW: For type: "claude_batch" (Batch processing)
      batch_config:
        max_parallel: integer
        timeout_per_task: integer
        consolidate_results: boolean
      tasks: array
        - file: string
          prompt: string
      
      # NEW: For type: "claude_robust" (Error recovery)
      retry_config:
        max_retries: integer
        backoff_strategy: enum["linear", "exponential"]
        retry_conditions: array[string]
        fallback_action: string
      
      # For type: "parallel_claude"
      parallel_tasks: array      # Required
        - id: string
          claude_options: object
          prompt: array
          output_to_file: string
          
      prompt: array              # Required (except parallel_claude)
        - type: enum["static", "file", "previous_response", "session_context", "claude_continue"]  # Enhanced
          # For type: "static"
          content: string
          # For type: "file"
          path: string
          # For type: "previous_response"
          step: string
          extract: string        # Optional
          extract_with: enum["content_extractor"]  # NEW: Use ContentExtractor
          summary: boolean       # NEW: Summarize content
          max_length: integer    # NEW: Limit extracted content length
          # NEW: For type: "session_context"
          session_id: string
          include_last_n: integer
          # NEW: For type: "claude_continue"
          new_prompt: string
```

### Enhanced Claude Options Reference

The enhanced `claude_options` section now supports the full feature set of the Claude Code SDK:

#### Basic Configuration
- `max_turns`: Maximum conversation turns (integer)
- `output_format`: Response format - "text", "json", or "stream_json"
- `verbose`: Enable detailed logging (boolean)

#### Tool Management  
- `allowed_tools`: List of permitted tool names (array of strings)
- `disallowed_tools`: List of explicitly forbidden tools (array of strings)

#### System Prompts
- `system_prompt`: Custom system prompt override (string)
- `append_system_prompt`: Additional system prompt to append (string)

#### Working Environment
- `cwd`: Working directory for Claude operations (string)

#### Session Management
- `session_id`: Explicit session identifier for continuation (string)
- `resume_session`: Automatically resume existing session if available (boolean)

#### Performance & Reliability
- `retry_config`: Retry mechanism configuration (object)
  - `max_retries`: Maximum number of retry attempts (integer)
  - `backoff_strategy`: "linear" or "exponential" backoff (string)
  - `retry_on`: List of conditions that trigger retries (array)
- `timeout_ms`: Request timeout in milliseconds (integer)

#### Monitoring & Debug
- `debug_mode`: Enable debug output and diagnostics (boolean)
- `telemetry_enabled`: Enable performance telemetry (boolean)
- `cost_tracking`: Track and report API costs (boolean)

### Smart Configuration Presets

The new `claude_smart` step type supports OptionBuilder presets:

- **`development`**: Permissive settings, verbose logging, full tool access
- **`production`**: Restricted settings, minimal tools, safe defaults  
- **`analysis`**: Read-only tools, optimized for code analysis
- **`chat`**: Simple conversation settings, basic tools

### Future-Ready Features

The schema includes placeholders for planned features:

#### MCP Integration
- `mcp_config`: Path to MCP server configuration file
- `permission_prompt_tool`: Tool for handling permission prompts
- `permission_mode`: Permission handling strategy

#### Advanced Content Processing
- Content extraction with multiple format options
- Post-processing pipeline support
- Metadata inclusion and summarization

This guide provides comprehensive documentation for creating and managing pipeline configuration files. Use it as a reference when building your own AI-orchestrated workflows.