// shared constants, types, and data used across the shockbot codebase export const shockbotMcpName = "shockbot"; /** The single supported agent */ export type AgentId = "ollama"; /** Return the tool name as it should be referenced in prompts */ export function formatMcpToolRef(_agentId: AgentId, toolName: string): string { return toolName; } // tool permission types export type ToolPermission = "disabled" | "enabled"; export type ShellPermission = "disabled" | "restricted" | "enabled"; export type PushPermission = "disabled" | "restricted" | "enabled"; // permission level for the author who triggered the event export type AuthorPermission = "admin" | "maintain" | "write" | "triage" | "read" | "none"; // base interface for common payload event fields interface BasePayloadEvent { issue_number?: number; is_pr?: boolean; branch?: string; title?: string; body?: string | null; comment_id?: number; review_id?: number; review_state?: string; thread?: Record; pull_request?: Record; comment_ids?: number[] | "all"; authorPermission?: AuthorPermission; silent?: boolean; [key: string]: unknown; } interface PullRequestOpenedEvent extends BasePayloadEvent { trigger: "pull_request_opened"; issue_number: number; is_pr: true; title: string; body: string | null; branch: string; } interface PullRequestReadyForReviewEvent extends BasePayloadEvent { trigger: "pull_request_ready_for_review"; issue_number: number; is_pr: true; title: string; body: string | null; branch: string; } interface PullRequestReviewRequestedEvent extends BasePayloadEvent { trigger: "pull_request_review_requested"; issue_number: number; is_pr: true; title: string; body: string | null; branch: string; } interface PullRequestReviewSubmittedEvent extends BasePayloadEvent { trigger: "pull_request_review_submitted"; issue_number: number; is_pr: true; review_id: number; body: string | null; review_state: string; branch: string; } interface PullRequestReviewCommentCreatedEvent extends BasePayloadEvent { trigger: "pull_request_review_comment_created"; issue_number: number; is_pr: true; title: string; comment_id: number; body: string | null; thread?: Record; branch: string; } interface IssuesOpenedEvent extends BasePayloadEvent { trigger: "issues_opened"; issue_number: number; title: string; body: string | null; } interface IssuesAssignedEvent extends BasePayloadEvent { trigger: "issues_assigned"; issue_number: number; title: string; body: string | null; } interface IssuesLabeledEvent extends BasePayloadEvent { trigger: "issues_labeled"; issue_number: number; title: string; body: string | null; } interface IssueCommentCreatedEvent extends BasePayloadEvent { trigger: "issue_comment_created"; comment_id: number; comment_type: "issue"; body: string | null; issue_number: number; is_pr?: true; branch?: string; title?: string; } interface WorkflowDispatchEvent extends BasePayloadEvent { trigger: "workflow_dispatch"; } interface PullRequestSynchronizeEvent extends BasePayloadEvent { trigger: "pull_request_synchronize"; issue_number: number; is_pr: true; title: string; body: string | null; branch: string; before_sha: string; } interface UnknownEvent extends BasePayloadEvent { trigger: "unknown"; } export type PayloadEvent = | PullRequestOpenedEvent | PullRequestReadyForReviewEvent | PullRequestSynchronizeEvent | PullRequestReviewRequestedEvent | PullRequestReviewSubmittedEvent | PullRequestReviewCommentCreatedEvent | IssuesOpenedEvent | IssuesAssignedEvent | IssuesLabeledEvent | IssueCommentCreatedEvent | WorkflowDispatchEvent | UnknownEvent;