feat: add repository_dispatch event support (#546)

* feat: add repository_dispatch event support

Add support for repository_dispatch events in GitHub context parsing system. This enables the action to handle custom API-triggered events properly.

Changes:
- Add RepositoryDispatchEvent type definition
- Include repository_dispatch in automation event names
- Update context parsing to handle repository_dispatch events
- Update documentation to reflect repository_dispatch availability

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* style: format code with prettier

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* test: add comprehensive repository_dispatch event test coverage

- Add mockRepositoryDispatchContext with realistic payload structure
- Add repository_dispatch mode detection tests in registry.test.ts
- Add repository_dispatch trigger tests in agent.test.ts
- Ensure repository_dispatch events are properly handled as automation events
- Verify agent mode trigger behavior with and without prompts
- All 394 tests passing with new coverage

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* style: format test files with prettier

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
bogini
2025-09-05 15:06:00 -07:00
committed by GitHub
parent 765fadc6a6
commit 13e47489f4
5 changed files with 99 additions and 5 deletions

View File

@@ -26,6 +26,20 @@ export type WorkflowDispatchEvent = {
workflow: string;
};
export type RepositoryDispatchEvent = {
action: string;
client_payload?: Record<string, any>;
repository: {
name: string;
owner: {
login: string;
};
};
sender: {
login: string;
};
};
export type ScheduleEvent = {
action?: never;
schedule?: string;
@@ -48,6 +62,7 @@ const ENTITY_EVENT_NAMES = [
const AUTOMATION_EVENT_NAMES = [
"workflow_dispatch",
"repository_dispatch",
"schedule",
"workflow_run",
] as const;
@@ -95,10 +110,14 @@ export type ParsedGitHubContext = BaseContext & {
isPR: boolean;
};
// Context for automation events (workflow_dispatch, schedule, workflow_run)
// Context for automation events (workflow_dispatch, repository_dispatch, schedule, workflow_run)
export type AutomationContext = BaseContext & {
eventName: AutomationEventName;
payload: WorkflowDispatchEvent | ScheduleEvent | WorkflowRunEvent;
payload:
| WorkflowDispatchEvent
| RepositoryDispatchEvent
| ScheduleEvent
| WorkflowRunEvent;
};
// Union type for all contexts
@@ -190,6 +209,13 @@ export function parseGitHubContext(): GitHubContext {
payload: context.payload as unknown as WorkflowDispatchEvent,
};
}
case "repository_dispatch": {
return {
...commonFields,
eventName: "repository_dispatch",
payload: context.payload as unknown as RepositoryDispatchEvent,
};
}
case "schedule": {
return {
...commonFields,