diff --git a/example-dispatch-workflow.yml b/example-dispatch-workflow.yml deleted file mode 100644 index 74cd95de..00000000 --- a/example-dispatch-workflow.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Claude Task Executor - -on: - repository_dispatch: - types: [claude-task] - -permissions: - contents: write - pull-requests: write - issues: write - id-token: write # Required for OIDC authentication - -jobs: - execute-claude-task: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Execute Claude Task - uses: anthropics/claude-code-action@main - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - # Base branch for creating task branches - base_branch: main - # Optional: Custom instructions for Claude - custom_instructions: | - Follow the CLAUDE.md guidelines strictly. - Commit changes with descriptive messages. - # Optional: Tool restrictions - allowed_tools: | - file_editor - bash_command - github_comment - mcp__github__create_or_update_file - # Optional: Anthropic API configuration - anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - # Or use AWS Bedrock - # aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} - # aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # aws_region: us-east-1 - # Or use Google Vertex AI - # google_credentials: ${{ secrets.GOOGLE_CREDENTIALS }} - # vertex_project: my-project - # vertex_location: us-central1 -# Example: Triggering this workflow from another service -# -# curl -X POST \ -# https://api.github.com/repos/owner/repo/dispatches \ -# -H "Authorization: token $GITHUB_TOKEN" \ -# -H "Accept: application/vnd.github.v3+json" \ -# -d '{ -# "event_type": "claude-task", -# "client_payload": { -# "description": "Analyze the codebase and create a comprehensive test suite for the authentication module", -# "progress_endpoint": "https://api.example.com/claude/progress", -# "correlation_id": "task-auth-tests-2024-01-17" -# } -# }' -# -# The progress_endpoint will receive POST requests with: -# { -# "repository": "owner/repo", -# "run_id": "123456789", -# "correlation_id": "task-auth-tests-2024-01-17", -# "status": "in_progress" | "completed" | "failed", -# "message": "Current progress description", -# "completed_tasks": ["task1", "task2"], -# "current_task": "Working on task3", -# "timestamp": "2024-01-17T12:00:00Z" -# } -# -# Authentication: Progress updates include a GitHub OIDC token in the Authorization header diff --git a/pr-summary.md b/pr-summary.md deleted file mode 100644 index 08306497..00000000 --- a/pr-summary.md +++ /dev/null @@ -1,118 +0,0 @@ -## Summary - -Adds support for `repository_dispatch` events, enabling backend services to programmatically trigger Claude to perform tasks and receive progress updates via API. - -## Architecture - -```mermaid -sequenceDiagram - participant Backend as Backend Service - participant GH as GitHub - participant Action as Claude Action - participant Claude as Claude - participant MCP as Progress MCP Server - participant API as Progress API - - Backend->>GH: POST /repos/{owner}/{repo}/dispatches - Note over Backend,GH: Payload includes:
- description (task)
- progress_endpoint
- correlation_id - - GH->>Action: Trigger workflow
(repository_dispatch) - - Action->>Action: Parse dispatch payload - Note over Action: Extract task description,
endpoint, correlation_id - - Action->>MCP: Install Progress Server - Note over MCP: Configure with:
- PROGRESS_ENDPOINT
- CORRELATION_ID
- GITHUB_RUN_ID - - Action->>Claude: Execute task with
MCP tools available - - loop Task Execution - Claude->>MCP: update_claude_progress() - MCP->>MCP: Get OIDC token - MCP->>API: POST progress update - Note over API: Payload includes:
- correlation_id
- status
- message
- completed_tasks - API->>Backend: Forward update - end - - Claude->>Action: Task complete - Action->>GH: Commit changes -``` - -## Key Features - -### 1. Repository Dispatch Support - -- New event handler for `repository_dispatch` events -- Extracts task description, progress endpoint, and correlation ID from `client_payload` -- Bypasses GitHub UI interaction for fully programmatic operation - -### 2. Progress Reporting MCP Server - -- New MCP server (`progress-server.ts`) for sending progress updates -- OIDC authentication for secure API communication -- Includes correlation ID in all updates for request tracking - -### 3. Simplified Dispatch Prompts - -- Focused instructions for dispatch events (no PR/issue context) -- Clear directives: answer questions or implement changes -- Automatic progress updates at start and completion - -## Implementation Details - -### Triggering a Dispatch - -```bash -curl -X POST \ - https://api.github.com/repos/{owner}/{repo}/dispatches \ - -H "Authorization: token $GITHUB_TOKEN" \ - -H "Accept: application/vnd.github.v3+json" \ - -d '{ - "event_type": "claude-task", - "client_payload": { - "description": "Implement a new feature that...", - "progress_endpoint": "https://api.example.com/progress", - "correlation_id": "req-123-abc" - } - }' -``` - -### Progress Update Payload - -```json -{ - "repository": "owner/repo", - "run_id": "123456789", - "correlation_id": "req-123-abc", - "status": "in_progress", - "message": "Implementing feature...", - "completed_tasks": ["Setup environment", "Created base structure"], - "current_task": "Writing tests", - "timestamp": "2024-01-17T12:00:00Z" -} -``` - -## Security - -- **OIDC Authentication**: All progress updates use GitHub OIDC tokens -- **Correlation IDs**: Included in request body (not URL) for security -- **Endpoint Validation**: Progress endpoint must be explicitly provided -- **No Credential Storage**: Tokens are generated per-request - -## Testing - -To test the repository_dispatch flow: - -1. Configure workflow with `repository_dispatch` trigger -2. Send dispatch event with required payload -3. Monitor GitHub Actions logs for execution -4. Verify progress updates at configured endpoint - -## Changes - -- Added `repository_dispatch` event handling in `context.ts` -- Created new `progress-server.ts` MCP server -- Updated `isDispatch` flag across all event types -- Modified prompt generation for dispatch events -- Made `githubData` optional for dispatch workflows -- Added correlation ID support throughout the pipeline