name: '🔄 Gemini CLI Bot: Pulse' on: schedule: - cron: '*/30 * * * *' # Every 30 minutes workflow_dispatch: concurrency: group: '${{ github.workflow }}-${{ github.ref }}' cancel-in-progress: true permissions: contents: 'write' issues: 'write' pull-requests: 'write' jobs: pulse: name: 'Pulse (Reflex Layer)' runs-on: 'ubuntu-latest' if: "github.repository == 'google-gemini/gemini-cli'" steps: - name: 'Checkout' uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' # ratchet:actions/checkout@v5 with: fetch-depth: 1 - name: 'Check for Reflex Scripts' id: 'check_scripts' run: | if [ -d "tools/gemini-cli-bot/reflexes/scripts" ] && ls tools/gemini-cli-bot/reflexes/scripts/*.ts >/dev/null 2>&1; then echo "has_scripts=true" >> "$GITHUB_OUTPUT" else echo "has_scripts=false" >> "$GITHUB_OUTPUT" fi - name: 'Setup Node.js' if: "steps.check_scripts.outputs.has_scripts == 'true'" uses: 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' # ratchet:actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: 'Install dependencies' if: "steps.check_scripts.outputs.has_scripts == 'true'" run: 'npm ci' - name: 'Run Reflex Processes' if: "steps.check_scripts.outputs.has_scripts == 'true'" env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' run: | shopt -s nullglob for script in tools/gemini-cli-bot/reflexes/scripts/*.ts; do echo "Running reflex script: $script" npx tsx "$script" done