eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.56 kB
JavaScript
import{callGitHubApi,createGitHubIssueComment,createGitHubReaction,createGitHubReviewCommentReply}from"#public/channels/github/api.js";function buildGitHubBinding(n){let{config:r,state:i}=n,a={fullName:`${i.owner}/${i.repo}`,id:i.repositoryId,name:i.repo,owner:i.owner,private:!1},o=i.installationId??void 0;return{github:{installationId:o,repository:a,request(t){return callGitHubApi({api:r.api,body:t.body,credentials:r.credentials,installationId:o,method:t.method,path:t.path})}},thread:{kind:i.conversationKind,post(e){return i.conversationKind===`review_thread`?createGitHubReviewCommentReply({api:r.api,body:e,commentId:requiredStateNumber(i.reviewThreadRootCommentId??i.reviewCommentId,`reviewThreadRootCommentId`),credentials:r.credentials,installationId:o,owner:i.owner,pullRequestNumber:requiredStateNumber(i.pullRequestNumber,`pullRequestNumber`),repo:i.repo}):createGitHubIssueComment({api:r.api,body:e,credentials:r.credentials,installationId:o,issueNumber:requiredStateNumber(i.issueNumber??i.pullRequestNumber,`issueNumber`),owner:i.owner,repo:i.repo})},async react(e){let t=i.conversationKind===`review_thread`?i.reviewCommentId:i.triggeringCommentId;t!==null&&await createGitHubReaction({api:r.api,commentId:t,content:e,credentials:r.credentials,installationId:o,owner:i.owner,repo:i.repo,subject:i.conversationKind===`review_thread`?`pull_request_review_comment`:`issue_comment`})}}}}function requiredStateNumber(e,t){if(typeof e==`number`&&Number.isFinite(e))return e;throw Error(`githubChannel: missing ${t}.`)}export{buildGitHubBinding};