Files
claude-code-action/src/create-prompt/types.ts
Ashwin Bhat fcbdac91f2 feat: add base_branch input to specify source branch for new Claude branches (#72)
* feat: add base_branch input to specify source branch for new Claude branches

- Add base_branch input parameter to action.yml allowing users to specify which branch to use as source
- Update setupBranch function to accept and use the base branch parameter  
- Defaults to repository default branch if no base branch is specified
- Addresses issue #62 for better branch control

Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com>

* perf: optimize setupBranch to avoid unnecessary default branch fetch

Only fetch repository default branch when actually needed:
- Skip initial fetch when baseBranch is provided
- Fetch default branch at end only for return value and GitHub Actions output
- Eliminates unnecessary API call when users specify base branch

Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com>

* fix: properly handle base branch throughout the action workflow

- Fix TypeScript error where defaultBranch was used before being assigned
- Replace DEFAULT_BRANCH with BASE_BRANCH in subsequent workflow steps
- Update PR creation and branch comparison to use the actual base branch
- Ensure custom base_branch input is respected in all operations

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

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

* refactor: move BASE_BRANCH env reading into parseGitHubContext

- Move BASE_BRANCH environment variable reading into parseGitHubContext for consistency
- Update setupBranch to use context.inputs.baseBranch instead of process.env
- Fix test descriptions to correctly reference BASE_BRANCH instead of DEFAULT_BRANCH
- Update test environment setup to use BASE_BRANCH

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

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

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-05-29 10:08:00 -07:00

94 lines
2.0 KiB
TypeScript

export type CommonFields = {
repository: string;
claudeCommentId: string;
triggerPhrase: string;
triggerUsername?: string;
customInstructions?: string;
allowedTools?: string;
disallowedTools?: string;
directPrompt?: string;
};
type PullRequestReviewCommentEvent = {
eventName: "pull_request_review_comment";
isPR: true;
prNumber: string;
commentId?: string; // May be present for review comments
commentBody: string;
claudeBranch?: string;
baseBranch?: string;
};
type PullRequestReviewEvent = {
eventName: "pull_request_review";
isPR: true;
prNumber: string;
commentBody: string;
claudeBranch?: string;
baseBranch?: string;
};
type IssueCommentEvent = {
eventName: "issue_comment";
commentId: string;
issueNumber: string;
isPR: false;
baseBranch: string;
claudeBranch: string;
commentBody: string;
};
// Not actually a real github event, since issue comments and PR coments are both sent as issue_comment
type PullRequestCommentEvent = {
eventName: "issue_comment";
commentId: string;
prNumber: string;
isPR: true;
commentBody: string;
claudeBranch?: string;
baseBranch?: string;
};
type IssueOpenedEvent = {
eventName: "issues";
eventAction: "opened";
isPR: false;
issueNumber: string;
baseBranch: string;
claudeBranch: string;
};
type IssueAssignedEvent = {
eventName: "issues";
eventAction: "assigned";
isPR: false;
issueNumber: string;
baseBranch: string;
claudeBranch: string;
assigneeTrigger: string;
};
type PullRequestEvent = {
eventName: "pull_request";
eventAction?: string; // opened, synchronize, etc.
isPR: true;
prNumber: string;
claudeBranch?: string;
baseBranch?: string;
};
// Union type for all possible event types
export type EventData =
| PullRequestReviewCommentEvent
| PullRequestReviewEvent
| PullRequestCommentEvent
| IssueCommentEvent
| IssueOpenedEvent
| IssueAssignedEvent
| PullRequestEvent;
// Combined type with separate eventData field
export type PreparedContext = CommonFields & {
eventData: EventData;
};