GitHub connector implementing IConnector protocol.
Uses the official Java SDK (kohsuke/github-api) for:
GitHub connector implementing IConnector protocol. Uses the official Java SDK (kohsuke/github-api) for: - Issue management (CRUD, comments, labels) - Pull request operations (list, comment, review status) - Webhook handling for real-time events - OAuth/PAT authentication
(close-issue! client repo number)Close an issue.
Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue number
Returns: {:ok true} on success {:ok false :error "..."} on failure
Close an issue.
Args:
client - GitHub client
repo - Repository in "owner/repo" format
number - Issue number
Returns:
{:ok true} on success
{:ok false :error "..."} on failure(comment-on-issue! client repo number body)Add a comment to an issue or pull request.
Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue/PR number body - Comment body (markdown)
Returns: {:ok true :id N} on success {:ok false :error "..."} on failure
Add a comment to an issue or pull request.
Args:
client - GitHub client
repo - Repository in "owner/repo" format
number - Issue/PR number
body - Comment body (markdown)
Returns:
{:ok true :id N} on success
{:ok false :error "..."} on failure(comment-on-pr! client repo number body)Add a comment to a pull request (alias for comment-on-issue!).
Add a comment to a pull request (alias for comment-on-issue!).
(create-client token)Create a GitHub client authenticated with a personal access token.
Args: token - GitHub PAT (ghp_...) with appropriate scopes
Returns: GitHub client instance
Create a GitHub client authenticated with a personal access token. Args: token - GitHub PAT (ghp_...) with appropriate scopes Returns: GitHub client instance
(create-client-from-env)Create a GitHub client using GITHUB_TOKEN environment variable.
Create a GitHub client using GITHUB_TOKEN environment variable.
(create-issue! client repo title body)(create-issue! client repo title body {:keys [labels assignees]})Create a new issue in a repository.
Args: client - GitHub client repo - Repository in "owner/repo" format title - Issue title body - Issue body (markdown) opts - Optional map with :labels and :assignees
Returns: {:ok true :number N :url "..."} on success {:ok false :error "..."} on failure
Create a new issue in a repository.
Args:
client - GitHub client
repo - Repository in "owner/repo" format
title - Issue title
body - Issue body (markdown)
opts - Optional map with :labels and :assignees
Returns:
{:ok true :number N :url "..."} on success
{:ok false :error "..."} on failure(format-hivemind-event {:keys [a e m]})Format a hivemind event for GitHub markdown.
Event map keys: :a - agent ID :e - event type (started, progress, completed, error, blocked) :m - message content
Returns formatted markdown string.
Format a hivemind event for GitHub markdown. Event map keys: :a - agent ID :e - event type (started, progress, completed, error, blocked) :m - message content Returns formatted markdown string.
(get-issue client repo number)Get a single issue by number.
Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue number
Returns: Issue map or nil if not found
Get a single issue by number. Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue number Returns: Issue map or nil if not found
(get-pull-request client repo number)Get a single pull request by number.
Args: client - GitHub client repo - Repository in "owner/repo" format number - PR number
Returns: PR map or nil if not found
Get a single pull request by number. Args: client - GitHub client repo - Repository in "owner/repo" format number - PR number Returns: PR map or nil if not found
(get-repo client repo)Get a repository by owner/name.
Args: client - GitHub client repo - Repository in "owner/repo" format
Returns: GHRepository instance
Get a repository by owner/name. Args: client - GitHub client repo - Repository in "owner/repo" format Returns: GHRepository instance
(list-issues client repo)(list-issues client
repo
{:keys [state labels limit] :or {state :open limit 100}})List issues in a repository.
Args: client - GitHub client repo - Repository in "owner/repo" format opts - Optional map with :state (:open, :closed, :all), :labels, :limit
Returns: Sequence of issue maps
List issues in a repository. Args: client - GitHub client repo - Repository in "owner/repo" format opts - Optional map with :state (:open, :closed, :all), :labels, :limit Returns: Sequence of issue maps
(list-pr-files client repo number)List files changed in a pull request.
Args: client - GitHub client repo - Repository in "owner/repo" format number - PR number
Returns: Sequence of file change maps
List files changed in a pull request. Args: client - GitHub client repo - Repository in "owner/repo" format number - PR number Returns: Sequence of file change maps
(list-pr-reviews client repo number)List reviews on a pull request.
Args: client - GitHub client repo - Repository in "owner/repo" format number - PR number
Returns: Sequence of review maps
List reviews on a pull request. Args: client - GitHub client repo - Repository in "owner/repo" format number - PR number Returns: Sequence of review maps
(list-pull-requests client repo)(list-pull-requests client
repo
{:keys [state sort limit] :or {state :open limit 100}})List pull requests in a repository.
Args: client - GitHub client repo - Repository in "owner/repo" format opts - Optional map with :state (:open, :closed, :all), :sort, :limit
Returns: Sequence of PR maps
List pull requests in a repository. Args: client - GitHub client repo - Repository in "owner/repo" format opts - Optional map with :state (:open, :closed, :all), :sort, :limit Returns: Sequence of PR maps
(make-connector)(make-connector {:keys [token]})Create a new GitHubConnector instance.
Args: opts - Optional map with :token
Returns: GitHubConnector record
Create a new GitHubConnector instance. Args: opts - Optional map with :token Returns: GitHubConnector record
(make-data-mapper)Create a new GitHubDataMapper instance.
Create a new GitHubDataMapper instance.
(make-webhook-handler)Create a new GitHubWebhookHandler instance.
Create a new GitHubWebhookHandler instance.
(notify-issue! client repo number event)Post a formatted hivemind event as a comment on an issue/PR.
Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue/PR number event - Hivemind event map {:a agent-id :e event-type :m message}
Returns: Result map from comment-on-issue!
Post a formatted hivemind event as a comment on an issue/PR.
Args:
client - GitHub client
repo - Repository in "owner/repo" format
number - Issue/PR number
event - Hivemind event map {:a agent-id :e event-type :m message}
Returns:
Result map from comment-on-issue!(parse-webhook-event event-type payload)Parse a GitHub webhook payload into a normalized event.
Args: event-type - X-GitHub-Event header value payload - Parsed JSON payload (map)
Returns: {:event-type :issue-opened/:pr-merged/etc. :repo "owner/repo" :data {...normalized-data...} :raw payload}
Parse a GitHub webhook payload into a normalized event.
Args:
event-type - X-GitHub-Event header value
payload - Parsed JSON payload (map)
Returns:
{:event-type :issue-opened/:pr-merged/etc.
:repo "owner/repo"
:data {...normalized-data...}
:raw payload}(reopen-issue! client repo number)Reopen a closed issue.
Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue number
Returns: {:ok true} on success {:ok false :error "..."} on failure
Reopen a closed issue.
Args:
client - GitHub client
repo - Repository in "owner/repo" format
number - Issue number
Returns:
{:ok true} on success
{:ok false :error "..."} on failure(update-issue! client repo number {:keys [title body labels assignees]})Update an existing issue.
Args: client - GitHub client repo - Repository in "owner/repo" format number - Issue number data - Map with optional :title, :body, :labels, :assignees
Returns: {:ok true} on success {:ok false :error "..."} on failure
Update an existing issue.
Args:
client - GitHub client
repo - Repository in "owner/repo" format
number - Issue number
data - Map with optional :title, :body, :labels, :assignees
Returns:
{:ok true} on success
{:ok false :error "..."} on failure(validate-webhook-signature payload signature secret)Validate GitHub webhook signature.
Args: payload - Raw request body string signature - X-Hub-Signature-256 header value (sha256=...) secret - Webhook secret configured in GitHub
Returns: true if signature is valid, false otherwise
Validate GitHub webhook signature. Args: payload - Raw request body string signature - X-Hub-Signature-256 header value (sha256=...) secret - Webhook secret configured in GitHub Returns: true if signature is valid, false otherwise
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |