export async function postJunieCompletionComment()

in src/github/operations/comments/feedback.ts [363:427]


export async function postJunieCompletionComment(
    octokit: Octokit,
    data: FinishFeedbackData
) {
    const {owner, name} = data.parsedContext.payload.repository;
    const ownerLogin = owner.login;
    const repoFullName = `${ownerLogin}/${name}`;
    const workflowName = data.parsedContext.workflow;

    // Check if this is a Jira-triggered workflow
    if (isJiraWorkflowDispatchEvent(data.parsedContext)) {
        console.log('Jira workflow detected - posting feedback to Jira');
        try {
            await postJiraFeedback(data);
        } catch (jiraError) {
            console.warn('Failed to post feedback to Jira:', jiraError);
            // Don't fail the workflow if Jira update fails
        }
        return;
    }

    if (!data.initCommentId) {
        console.log('No initial comment ID - skipping feedback');
        return;
    }

    let feedbackBody: string | undefined;
    if (data.isJobFailed) {
        feedbackBody = getFailedBodyWithMarker(ownerLogin, name, data.parsedContext.runId, data.failureData!, workflowName)
    } else {
        feedbackBody = getSuccessBodyWithMarker(repoFullName, data.successData!, workflowName)
    }

    if (!feedbackBody) {
        console.log('No feedback body - skipping feedback');
        return;
    }

    const initCommentId = +data.initCommentId;

    console.log(`Updating feedback comment ${initCommentId}`);

    try {
        await updateExistingComment(
            octokit,
            data.parsedContext,
            initCommentId,
            feedbackBody,
            ownerLogin,
            name
        );
        console.log('✓ Feedback comment updated successfully');
    } catch (error) {
        console.error(`❌ Failed to update feedback comment ${initCommentId}:`, error);
        throw new Error(
            `❌ Failed to update feedback comment on ${repoFullName}. ` +
            `This could be due to:\n` +
            `• Insufficient token permissions (needs 'issues:write' or 'pull_requests:write' scope)\n` +
            `• GitHub API rate limits\n` +
            `• The comment may have been deleted\n` +
            `• Network connectivity issues\n` +
            `Original error: ${error instanceof Error ? error.message : String(error)}`
        );
    }
}