name: aeries-2-simulation
description: "Aeries Phase 2: The Spark of Life. Extracts Agent Simulation logic into a dedicated service."
version: 1

vars:
  project_id: "" # Required - ID from genesis run
  feature_slug: "extract-simulation"

steps:
  # --- Step 1: Mitosis (Extraction) ---
  create-simulation-svc:
    description: "Scaffold new Simulation Service"
    action: api
    method: POST
    endpoint: "/projects/{{ .vars.project_id }}/components"
    body: { type: worker, name: "simulation-svc" }

  extract-logic:
    description: "Agent moves Agent Logic from Core to Simulation Service"
    action: api
    method: POST
    endpoint: "/projects/{{ .vars.project_id }}/builds"
    body:
      prompt: "/extract-service core-api/internal/domain/agent_logic simulation-svc --pattern strangler"
      auto_commit: true
      auto_push: true
      git_clone_url: "https://git.threesix.ai/jordan/{{ .vars.project_id }}.git"
    outputs:
      - build_id: .data.task_id

  wait-extraction:
    description: Wait for extraction to complete
    depends_on: [extract-logic]
    action: wait_build
    build_id: "{{ .outputs.extract-logic.build_id }}"
    max_attempts: 120
    poll_interval: 5

  wait-deploy:
    action: wait_pipeline
    project_id: "{{ .vars.project_id }}"

  # --- Verification: Parity ---
  verify-parity:
    description: "Ensure Core API still returns Agent data (now proxied)"
    depends_on: [wait-deploy]
    action: shell
    command: |
      DOMAIN=$(curl -s "$RDEV_API_URL/projects/{{ .vars.project_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r .domain)
      # Assuming we have an agent from Genesis
      ID=$(curl -s "https://$DOMAIN/api/agents" | jq -r '.[0].id')
      
      RESP=$(curl -s "https://$DOMAIN/api/agents/$ID")
      if [[ -n "$ID" && "$ID" != "null" ]] && echo "$RESP" | grep -q "$ID"; then
        echo "Parity Verified: Proxied request succeeded"
        exit 0
      else
        echo "Failure: Request failed after extraction"
        exit 1
      fi
