# Agentic Loop Deferred MCP Fixture
# Requires `--features openai-mcp-tools,store-sqlite` because these filters are opt-in.
#
# Minimal agentic-loop pipeline that sanitizes deferred MCP connectors on the
# first inference round. `defer_loading: true` skips `tools/list`, so replay
# never opens an independent MCP callout. The configured connector URL is the
# replay-owned inference backend and is not contacted on this path.
#
# Later-round discovery after `tool_search_call` requires `openai_mcp_dispatch`
# and a live MCP server; that flow is covered by functional tests, not replay.

listeners:
  - name: ai-gateway
    address: "127.0.0.1:8080"
    filter_chains: [agentic-deferred-mcp-fixture]

filter_chains:
  - name: agentic-deferred-mcp-fixture
    filters:
      - filter: openai_responses_format
        on_invalid: reject
        headers:
          format: x-praxis-ai-format
          model: x-praxis-ai-model
          stream: x-praxis-ai-stream

      - filter: openai_responses_validate

      - filter: openai_tool_parse

      - filter: state_owner
        mode: single_tenant
        tenant_id: default

      - filter: openai_response_store
        backend: sqlite
        database_url: "sqlite://responses.db?mode=rwc"
        responses_table: openai_responses
        conversations_table: openai_conversations

      - filter: openai_responses_rehydrate

      - filter: openai_mcp_tool_resolve
        connectors:
          - id: corp_drive
            server_url: http://127.0.0.1:3001/mcp

      - filter: iterative_request_router
        initial_step: inference
        max_iterations: 2
        steps:
          - name: inference
            filters:
              - filter: openai_agentic_loop
                max_infer_iters: 1
              - filter: openai_responses_proxy
              - filter: router
                routes:
                  - path_prefix: "/"
                    cluster: "inference-backend"
              - filter: load_balancer
                clusters:
                  - name: "inference-backend"
                    endpoints:
                      - "127.0.0.1:3001"
            on_result:
              - default: true
                done: true

insecure_options:
  allow_private_endpoints: true # fixture proxies to a local controlled backend
