diff --git a/.github/workflows/clawsweeper-dispatch.yml b/.github/workflows/clawsweeper-dispatch.yml index d156432df61..45b28aaac70 100644 --- a/.github/workflows/clawsweeper-dispatch.yml +++ b/.github/workflows/clawsweeper-dispatch.yml @@ -9,18 +9,29 @@ on: permissions: contents: read +concurrency: + group: clawsweeper-dispatch-${{ github.repository }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }} + cancel-in-progress: true + jobs: dispatch: runs-on: ubuntu-latest + if: ${{ !(endsWith(github.actor, '[bot]') && (github.event.action == 'labeled' || github.event.action == 'unlabeled')) }} env: HAS_CLAWSWEEPER_APP_PRIVATE_KEY: ${{ secrets.CLAWSWEEPER_APP_PRIVATE_KEY != '' }} + CLAWSWEEPER_APP_CLIENT_ID: Iv23liOECG0slfuhz093 + SUPERSEDES_IN_PROGRESS: ${{ (github.event.action == 'edited' || github.event.action == 'synchronize' || github.event.action == 'ready_for_review') && 'true' || 'false' }} steps: + - name: Debounce bursty metadata events + if: ${{ github.event.action == 'labeled' || github.event.action == 'unlabeled' }} + run: sleep 20 + - name: Create ClawSweeper dispatch token id: token if: ${{ env.HAS_CLAWSWEEPER_APP_PRIVATE_KEY == 'true' }} - uses: actions/create-github-app-token@v2 + uses: actions/create-github-app-token@v3.1.1 with: - app-id: 3306130 + client-id: ${{ env.CLAWSWEEPER_APP_CLIENT_ID }} private-key: ${{ secrets.CLAWSWEEPER_APP_PRIVATE_KEY }} owner: openclaw repositories: clawsweeper @@ -40,7 +51,10 @@ jobs: --arg target_repo "$TARGET_REPO" \ --argjson item_number "$ITEM_NUMBER" \ --arg item_kind "$ITEM_KIND" \ - '{event_type:"clawsweeper_item",client_payload:{target_repo:$target_repo,item_number:$item_number,item_kind:$item_kind}}')" + --arg source_event "${{ github.event_name }}" \ + --arg source_action "${{ github.event.action }}" \ + --argjson supersedes_in_progress "$SUPERSEDES_IN_PROGRESS" \ + '{event_type:"clawsweeper_item",client_payload:{target_repo:$target_repo,item_number:$item_number,item_kind:$item_kind,source_event:$source_event,source_action:$source_action,supersedes_in_progress:$supersedes_in_progress}}')" if gh api repos/openclaw/clawsweeper/dispatches \ --method POST \ --input - <<< "$payload"; then