in src/github/junie/junie-tasks.ts [44:89]
export async function prepareJunieTask(
context: JunieExecutionContext,
branchInfo: BranchInfo,
octokit: Octokits,
enabledMcpServers: string[] = []
) {
const owner = context.payload.repository.owner.login;
const repo = context.payload.repository.name;
const fetcher = new GraphQLGitHubDataFetcher(octokit);
const customPrompt = context.inputs.prompt || undefined;
let junieCLITask: CliInput = {}
if (context.inputs.resolveConflicts || isReviewOrCommentHasResolveConflictsTrigger(context)) {
junieCLITask.mergeTask = {branch: branchInfo.prBaseBranch || branchInfo.baseBranch}
} else {
const formatter = new NewGitHubPromptFormatter();
let fetchedData: FetchedData = {};
const triggerTime = getTriggerTime(context);
// Fetch appropriate data
if (context.isPR && context.entityNumber) {
fetchedData = await fetcher.fetchPullRequestData(owner, repo, context.entityNumber, triggerTime);
} else if (context.entityNumber) {
fetchedData = await fetcher.fetchIssueData(owner, repo, context.entityNumber, triggerTime);
}
// Generate prompt using formatter
let promptText = await formatter.generatePrompt(context, fetchedData, customPrompt, context.inputs.attachGithubContextToCustomPrompt);
// Append MCP tools information if any MCP servers are enabled
const mcpToolsPrompt = generateMcpToolsPrompt(enabledMcpServers);
if (mcpToolsPrompt) {
promptText = promptText + mcpToolsPrompt;
}
junieCLITask.task = await getValidatedTextTask(promptText, "task");
}
if (!junieCLITask.task && !junieCLITask.mergeTask) {
throw new Error("No task was created. Please check your inputs.");
}
core.setOutput(OUTPUT_VARS.JUNIE_JSON_TASK, JSON.stringify(junieCLITask));
return junieCLITask;
}