name: CI

on:
  push:
    branches: [main, master]
  pull_request:
    branches: [main, master]

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [18, 20, 22]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Build TypeScript
        run: npm run build

      - name: Type check
        run: npx tsc --noEmit

      - name: Verify dist files exist
        run: |
          test -f dist/index.js
          test -f dist/db/index.js
          test -f dist/db/store.js
          test -f dist/search/fts.js

  plugin-validate:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Validate plugin.json
        run: |
          node -e "
            const plugin = require('./.claude-plugin/plugin.json');
            if (!plugin.name) throw new Error('Missing plugin name');
            if (!plugin.version) throw new Error('Missing plugin version');
            if (!plugin.skills) throw new Error('Missing skills array');
            console.log('Plugin validation passed:', plugin.name, 'v' + plugin.version);
          "

      - name: Validate hooks.json
        run: |
          node -e "
            const config = require('./hooks/hooks.json');
            if (!config.hooks || typeof config.hooks !== 'object') throw new Error('Invalid hooks.json');
            const hookTypes = Object.keys(config.hooks);
            if (hookTypes.length === 0) throw new Error('No hooks configured');
            console.log('Hooks validation passed:', hookTypes.length, 'hook types configured:', hookTypes.join(', '));
          "

      - name: Check required files exist
        run: |
          test -f skills/pro-workflow/SKILL.md
          test -f commands/wrap-up.md
          test -f commands/learn.md
          test -f commands/search.md
          test -f README.md
