diff --git a/.fullsend/config.yaml b/.fullsend/config.yaml new file mode 100644 index 0000000000..4f93d18d31 --- /dev/null +++ b/.fullsend/config.yaml @@ -0,0 +1,19 @@ +# fullsend per-repo configuration +# https://github.com/fullsend-ai/fullsend +# +# This file configures fullsend for per-repo installation mode. +# See ADR 0033 for details. +version: "1" +roles: + - triage + - coder + - review + - fix +allowed_remote_resources: + - https://raw.githubusercontent.com/fullsend-ai/fullsend/ + - https://raw.githubusercontent.com/fullsend-ai/agents/ +create_issues: + allow_targets: + repos: + - packit/packit.dev + - fullsend-ai/fullsend diff --git a/.fullsend/customized/agents/.gitkeep b/.fullsend/customized/agents/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/env/.gitkeep b/.fullsend/customized/env/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/harness/.gitkeep b/.fullsend/customized/harness/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/plugins/.gitkeep b/.fullsend/customized/plugins/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/policies/.gitkeep b/.fullsend/customized/policies/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/profiles/.gitkeep b/.fullsend/customized/profiles/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/providers/.gitkeep b/.fullsend/customized/providers/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/schemas/.gitkeep b/.fullsend/customized/schemas/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/scripts/.gitkeep b/.fullsend/customized/scripts/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.fullsend/customized/skills/.gitkeep b/.fullsend/customized/skills/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/fullsend.yaml b/.github/workflows/fullsend.yaml new file mode 100644 index 0000000000..c1f84655f2 --- /dev/null +++ b/.github/workflows/fullsend.yaml @@ -0,0 +1,54 @@ +# This file is managed by fullsend. Do not edit it directly. +# Upstream: https://github.com/fullsend-ai/fullsend/blob/main/internal/scaffold/fullsend-repo/.github/workflows/fullsend.yaml +--- +# fullsend shim workflow (per-repo installation mode) +# Routes events to agent workflows via reusable-dispatch.yml. +# All agent execution happens in this repo's context — no external +# config repo is needed. +# +# Security: pull_request_target runs the BASE branch version of this workflow, +# preventing PRs from modifying it to exfiltrate credentials. +# This shim never checks out PR code, so it is not vulnerable to "pwn request" +# attacks. +# +# Routing: this shim forwards the raw event context to reusable-dispatch.yml, +# which determines the stage and runs the agent inline (ADR 62). +# Adding a new stage requires only a job in reusable-dispatch.yml — zero changes to this repo. +# +# Concurrency: per-role cancel-in-progress groups live in reusable-dispatch.yml +# stage jobs with -agent- suffix. Roles operate independently (#2452). +name: fullsend + +permissions: + actions: write + id-token: write + contents: write + issues: write + packages: read + pull-requests: write + +on: + issues: + types: [opened, edited, labeled] + issue_comment: + types: [created] + pull_request_target: + types: [opened, synchronize, ready_for_review, closed, labeled, unlabeled] + pull_request_review: + types: [submitted] + +jobs: + dispatch: + if: >- + github.event_name != 'issue_comment' + || github.event.comment.user.type != 'Bot' + uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@3cfa255ab4cc8190670585ea42da529119251632 # v0.32.0 + with: + event_action: ${{ github.event.action }} + install_mode: per-repo + mint_url: ${{ vars.FULLSEND_MINT_URL }} + gcp_region: ${{ vars.FULLSEND_GCP_REGION }} + runner_image: ubuntu-24.04 + secrets: + FULLSEND_GCP_WIF_PROVIDER: ${{ secrets.FULLSEND_GCP_WIF_PROVIDER }} + FULLSEND_GCP_PROJECT_ID: ${{ secrets.FULLSEND_GCP_PROJECT_ID }}