Improve repo setup with gh cli
This commit is contained in:
+72
-72
@@ -8,84 +8,84 @@ import { getModes } from "../modes.ts";
|
||||
* Removes verbose GitHub API metadata (user objects, repository metadata, etc.)
|
||||
* and keeps only the fields agents actually need.
|
||||
*/
|
||||
function extractEssentialEventData(event: Payload["event"]): Record<string, unknown> {
|
||||
const trigger = event.trigger;
|
||||
const essential: Record<string, unknown> = { trigger };
|
||||
// function extractEssentialEventData(event: Payload["event"]): Record<string, unknown> {
|
||||
// const trigger = event.trigger;
|
||||
// const essential: Record<string, unknown> = { trigger };
|
||||
|
||||
// common fields
|
||||
if ("issue_number" in event) {
|
||||
essential.issue_number = event.issue_number;
|
||||
}
|
||||
if ("branch" in event && event.branch) {
|
||||
essential.branch = event.branch;
|
||||
}
|
||||
// // common fields
|
||||
// if ("issue_number" in event) {
|
||||
// essential.issue_number = event.issue_number;
|
||||
// }
|
||||
// if ("branch" in event && event.branch) {
|
||||
// essential.branch = event.branch;
|
||||
// }
|
||||
|
||||
// trigger-specific fields
|
||||
switch (trigger) {
|
||||
case "issue_comment_created":
|
||||
if ("comment_id" in event) essential.comment_id = event.comment_id;
|
||||
if ("comment_body" in event) essential.comment_body = event.comment_body;
|
||||
// include issue title/body if available in context (but not the entire context object)
|
||||
if ("context" in event && event.context && typeof event.context === "object") {
|
||||
const ctx = event.context as Record<string, unknown>;
|
||||
if (ctx.issue && typeof ctx.issue === "object") {
|
||||
const issue = ctx.issue as Record<string, unknown>;
|
||||
if (issue.title) essential.issue_title = issue.title;
|
||||
if (issue.body) essential.issue_body = issue.body;
|
||||
}
|
||||
}
|
||||
break;
|
||||
// // trigger-specific fields
|
||||
// switch (trigger) {
|
||||
// case "issue_comment_created":
|
||||
// if ("comment_id" in event) essential.comment_id = event.comment_id;
|
||||
// if ("comment_body" in event) essential.comment_body = event.comment_body;
|
||||
// // include issue title/body if available in context (but not the entire context object)
|
||||
// if ("context" in event && event.context && typeof event.context === "object") {
|
||||
// const ctx = event.context as Record<string, unknown>;
|
||||
// if (ctx.issue && typeof ctx.issue === "object") {
|
||||
// const issue = ctx.issue as Record<string, unknown>;
|
||||
// if (issue.title) essential.issue_title = issue.title;
|
||||
// if (issue.body) essential.issue_body = issue.body;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
|
||||
case "issues_opened":
|
||||
case "issues_assigned":
|
||||
case "issues_labeled":
|
||||
if ("issue_title" in event) essential.issue_title = event.issue_title;
|
||||
if ("issue_body" in event) essential.issue_body = event.issue_body;
|
||||
break;
|
||||
// case "issues_opened":
|
||||
// case "issues_assigned":
|
||||
// case "issues_labeled":
|
||||
// if ("issue_title" in event) essential.issue_title = event.issue_title;
|
||||
// if ("issue_body" in event) essential.issue_body = event.issue_body;
|
||||
// break;
|
||||
|
||||
case "pull_request_opened":
|
||||
case "pull_request_review_requested":
|
||||
if ("pr_title" in event) essential.pr_title = event.pr_title;
|
||||
if ("pr_body" in event) essential.pr_body = event.pr_body;
|
||||
if ("branch" in event) essential.branch = event.branch;
|
||||
break;
|
||||
// case "pull_request_opened":
|
||||
// case "pull_request_review_requested":
|
||||
// if ("pr_title" in event) essential.pr_title = event.pr_title;
|
||||
// if ("pr_body" in event) essential.pr_body = event.pr_body;
|
||||
// if ("branch" in event) essential.branch = event.branch;
|
||||
// break;
|
||||
|
||||
case "pull_request_review_submitted":
|
||||
if ("review_id" in event) essential.review_id = event.review_id;
|
||||
if ("review_body" in event) essential.review_body = event.review_body;
|
||||
if ("review_state" in event) essential.review_state = event.review_state;
|
||||
if ("branch" in event) essential.branch = event.branch;
|
||||
break;
|
||||
// case "pull_request_review_submitted":
|
||||
// if ("review_id" in event) essential.review_id = event.review_id;
|
||||
// if ("review_body" in event) essential.review_body = event.review_body;
|
||||
// if ("review_state" in event) essential.review_state = event.review_state;
|
||||
// if ("branch" in event) essential.branch = event.branch;
|
||||
// break;
|
||||
|
||||
case "pull_request_review_comment_created":
|
||||
if ("comment_id" in event) essential.comment_id = event.comment_id;
|
||||
if ("comment_body" in event) essential.comment_body = event.comment_body;
|
||||
if ("pr_title" in event) essential.pr_title = event.pr_title;
|
||||
if ("branch" in event) essential.branch = event.branch;
|
||||
break;
|
||||
// case "pull_request_review_comment_created":
|
||||
// if ("comment_id" in event) essential.comment_id = event.comment_id;
|
||||
// if ("comment_body" in event) essential.comment_body = event.comment_body;
|
||||
// if ("pr_title" in event) essential.pr_title = event.pr_title;
|
||||
// if ("branch" in event) essential.branch = event.branch;
|
||||
// break;
|
||||
|
||||
case "check_suite_completed":
|
||||
if ("pr_title" in event) essential.pr_title = event.pr_title;
|
||||
if ("pr_body" in event) essential.pr_body = event.pr_body;
|
||||
if ("branch" in event) essential.branch = event.branch;
|
||||
if ("check_suite" in event) {
|
||||
essential.check_suite = {
|
||||
id: event.check_suite.id,
|
||||
head_sha: event.check_suite.head_sha,
|
||||
head_branch: event.check_suite.head_branch,
|
||||
status: event.check_suite.status,
|
||||
conclusion: event.check_suite.conclusion,
|
||||
};
|
||||
}
|
||||
break;
|
||||
// case "check_suite_completed":
|
||||
// if ("pr_title" in event) essential.pr_title = event.pr_title;
|
||||
// if ("pr_body" in event) essential.pr_body = event.pr_body;
|
||||
// if ("branch" in event) essential.branch = event.branch;
|
||||
// if ("check_suite" in event) {
|
||||
// essential.check_suite = {
|
||||
// id: event.check_suite.id,
|
||||
// head_sha: event.check_suite.head_sha,
|
||||
// head_branch: event.check_suite.head_branch,
|
||||
// status: event.check_suite.status,
|
||||
// conclusion: event.check_suite.conclusion,
|
||||
// };
|
||||
// }
|
||||
// break;
|
||||
|
||||
case "workflow_dispatch":
|
||||
if ("inputs" in event) essential.inputs = event.inputs;
|
||||
break;
|
||||
}
|
||||
// case "workflow_dispatch":
|
||||
// if ("inputs" in event) essential.inputs = event.inputs;
|
||||
// break;
|
||||
// }
|
||||
|
||||
return essential;
|
||||
}
|
||||
// return essential;
|
||||
// }
|
||||
|
||||
export const addInstructions = (payload: Payload) => {
|
||||
let encodedEvent = "";
|
||||
@@ -95,8 +95,8 @@ export const addInstructions = (payload: Payload) => {
|
||||
// no meaningful event data to encode
|
||||
} else {
|
||||
// extract only essential fields to reduce token usage
|
||||
const essentialEvent = extractEssentialEventData(payload.event);
|
||||
encodedEvent = toonEncode(essentialEvent);
|
||||
// const essentialEvent = payload.event;
|
||||
encodedEvent = toonEncode(payload.event);
|
||||
}
|
||||
|
||||
return `
|
||||
@@ -168,7 +168,7 @@ MCP servers provide tools you can call. Inspect your available MCP servers at st
|
||||
|
||||
Tool names may be formatted as \`(server name)/(tool name)\`, for example: \`${ghPullfrogMcpName}/create_issue_comment\`
|
||||
|
||||
**GitHub CLI prohibition**: Do not use the \`gh\` CLI under any circumstances. Use the corresponding tool from ${ghPullfrogMcpName} instead.
|
||||
**GitHub CLI**: Prefer using MCP tools from ${ghPullfrogMcpName} for GitHub operations. The \`gh\` CLI is available as a fallback if needed, but MCP tools handle authentication and provide better integration.
|
||||
|
||||
**Git operations**: All git operations must use ${ghPullfrogMcpName} MCP tools to ensure proper authentication and commit attribution. Do NOT use git commands directly (e.g., \`git commit\`, \`git push\`, \`git checkout\`, \`git branch\`) - these will use incorrect credentials and attribute commits to the wrong author.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user