diff --git a/action.yml b/action.yml index 2bf7393..e4b7b0a 100644 --- a/action.yml +++ b/action.yml @@ -37,6 +37,10 @@ inputs: description: "Instructions for Claude. Can be a direct prompt or custom template." required: false default: "" + direct_prompt: + description: "Deprecated alias for prompt. Use prompt instead." + required: false + default: "" settings: description: "Claude Code settings as JSON string or path to settings JSON file" required: false @@ -145,6 +149,7 @@ runs: env: MODE: ${{ inputs.mode }} PROMPT: ${{ inputs.prompt }} + DIRECT_PROMPT: ${{ inputs.direct_prompt }} TRIGGER_PHRASE: ${{ inputs.trigger_phrase }} ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }} LABEL_TRIGGER: ${{ inputs.label_trigger }} @@ -288,7 +293,7 @@ runs: fi - name: Revoke app token - if: always() && inputs.github_token == '' && steps.prepare.outputs.skipped_due_to_workflow_validation_mismatch != 'true' + if: always() && inputs.github_token == '' && steps.prepare.outputs.GITHUB_TOKEN != '' && steps.prepare.outputs.skipped_due_to_workflow_validation_mismatch != 'true' shell: bash run: | curl -L \ diff --git a/src/entrypoints/prepare.ts b/src/entrypoints/prepare.ts index af0ce9d..b13e5fb 100644 --- a/src/entrypoints/prepare.ts +++ b/src/entrypoints/prepare.ts @@ -24,6 +24,23 @@ async function run() { // Auto-detect mode based on context const mode = getMode(context); + // Check trigger conditions before token setup so skipped events do not need + // OIDC or GitHub App authentication. + const containsTrigger = mode.shouldTrigger(context); + + // Debug logging + console.log(`Mode: ${mode.name}`); + console.log(`Context prompt: ${context.inputs?.prompt || "NO PROMPT"}`); + console.log(`Trigger result: ${containsTrigger}`); + + // Set output for action.yml to check + core.setOutput("contains_trigger", containsTrigger.toString()); + + if (!containsTrigger) { + console.log("No trigger found, skipping remaining steps"); + return; + } + // Setup GitHub token const githubToken = await setupGitHubToken(); const octokit = createOctokit(githubToken); @@ -45,24 +62,6 @@ async function run() { } } - // Check trigger conditions - const containsTrigger = mode.shouldTrigger(context); - - // Debug logging - console.log(`Mode: ${mode.name}`); - console.log(`Context prompt: ${context.inputs?.prompt || "NO PROMPT"}`); - console.log(`Trigger result: ${containsTrigger}`); - - // Set output for action.yml to check - core.setOutput("contains_trigger", containsTrigger.toString()); - - if (!containsTrigger) { - console.log("No trigger found, skipping remaining steps"); - // Still set github_token output even when skipping - core.setOutput("github_token", githubToken); - return; - } - // Step 5: Use the new modular prepare function const result = await prepare({ context, diff --git a/src/github/context.ts b/src/github/context.ts index 92f272c..4e86649 100644 --- a/src/github/context.ts +++ b/src/github/context.ts @@ -137,7 +137,7 @@ export function parseGitHubContext(): GitHubContext { }, actor: context.actor, inputs: { - prompt: process.env.PROMPT || "", + prompt: process.env.PROMPT || process.env.DIRECT_PROMPT || "", triggerPhrase: process.env.TRIGGER_PHRASE ?? "@claude", assigneeTrigger: process.env.ASSIGNEE_TRIGGER ?? "", labelTrigger: process.env.LABEL_TRIGGER ?? "",