# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

language: en-US

reviews:
  # Enable high-level summary of changes
  high_level_summary: false

  # Add a poem... just kidding, disable it
  poem: false

  # Collapse walkthrough to keep PR comments clean
  collapse_walkthrough: true

  # Auto-review on every push
  auto_review:
    enabled: true
    drafts: true

  # Sparse-checkout / review scope: include .github explicitly; exclude generated and vendor paths
  path_filters:
    - ".github/**"
    - "!dist/**"
    - "!lib/**"
    - "!upload/**"
    - "!node_modules/**"
    - "!package-lock.json"
    - "!.pubnub.yml"
    - "!.vscode/**"

  # Path-based review instructions
  path_instructions:
    - path: "src/core/**"
      instructions: |
        This is the core SDK module. Pay close attention to:
        - Backward compatibility of public API changes
        - Proper TypeScript typing (strict mode is enabled)
        - No platform-specific code (Node.js, Web, React Native specifics belong in their respective platform directories)
        - Thread safety considerations for shared state
    - path: "src/core/endpoints/**"
      instructions: |
        These are REST API endpoint implementations. Review for:
        - Correct request/response type definitions
        - Proper error handling and status code mapping
        - Consistent parameter validation
        - Adherence to PubNub REST API contracts
    - path: "src/core/types/**"
      instructions: |
        TypeScript type definitions. Ensure:
        - Types are precise and not overly permissive (avoid `any`)
        - Exported types maintain backward compatibility
        - Proper use of generics and utility types
    - path: "src/event-engine/**"
      instructions: |
        State-machine-based subscription management. Review for:
        - Correct state transitions and edge cases
        - No leaked subscriptions or event listeners
        - Proper cleanup on state exit
    - path: "src/entities/**"
      instructions: |
        High-level subscription API (Channel, ChannelGroup, etc.). Review for:
        - Proper event handler lifecycle management
        - Memory leak prevention (listener cleanup)
    - path: "src/transport/**"
      instructions: |
        Platform-specific HTTP transport implementations. Review for:
        - Proper timeout and cancellation handling
        - Correct header management
        - Error propagation consistency across platforms
    - path: "src/node/**"
      instructions: "Node.js platform implementation. Ensure no browser/DOM APIs are used."
    - path: "src/web/**"
      instructions: "Browser platform implementation. Ensure no Node.js-specific APIs (fs, crypto, etc.) are used."
    - path: "src/react_native/**"
      instructions: "React Native platform implementation. Verify compatibility with RN runtime."
    - path: "test/**"
      instructions: |
        Test files. Review for:
        - Adequate coverage of edge cases
        - Proper use of mocks/stubs (Sinon + Nock)
        - No flaky patterns (hardcoded timeouts, race conditions)
        - Tests that actually assert meaningful behavior
    - path: ".github/**"
      instructions: |
        GitHub Actions workflows and repo automation. Review for:
        - Valid workflow YAML (triggers, concurrency, job dependencies)
        - Safe use of secrets and minimal required permissions
        - Reasonable timeouts and matrix coverage; actionlint/YAMLlint findings should be addressed

  # Tools configuration
  tools:
    # Enable GitHub checks integration
    github-checks:
      enabled: true
      timeout_ms: 120000
    yamllint:
      enabled: true
    actionlint:
      enabled: true

chat:
  auto_reply: true

knowledge_base:
  mcp:
    usage: enabled
