Files
shockbot/external.ts
T

150 lines
3.7 KiB
TypeScript

// 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<string, unknown>;
pull_request?: Record<string, unknown>;
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<string, unknown>;
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;