name: CI on: push: branches: [main, "codex/**"] pull_request: branches: [main] permissions: contents: read jobs: test: name: Node ${{ matrix.node-version }} runs-on: ubuntu-latest timeout-minutes: 10 strategy: fail-fast: false matrix: node-version: [20, 22, 24] steps: - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 with: persist-credentials: false - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: ${{ matrix.node-version }} cache: npm - run: npm ci --ignore-scripts - run: npm test - run: npm run check - run: npm pack --dry-run integration: name: GitHub Action and policy fixtures runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 with: persist-credentials: false - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 - name: Exercise the local GitHub Action uses: ./ with: path: examples/safe-support-agent.workflow.json output: vibeflow.sarif - name: Ensure unsafe fixture is rejected run: | if node bin/vibeflow.mjs check examples/unsafe-support-agent.workflow.json --format sarif --output unsafe.sarif; then echo "Unsafe fixture unexpectedly passed" exit 1 fi - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: vibeflow-sarif path: | vibeflow.sarif unsafe.sarif