CopilotKit / CopilotKit/outpost
Carry GitHub follow-up comments into the Slack mirror thread
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 7
- Forks
- 3
- Avg merge
- 7d 16h
- Merged PRs (30d)
- 15
Description
The Slack ticket mirror opens a thread per ticket and posts the AI reply underneath it. Community follow-ups reach that thread from Discord. They do not reach it from GitHub.
apps/github-app/src/webhooks/issue-comment.ts:54 appends its Message row with a bare prisma.message.create and never constructs an InboundHandler, so it never reaches enqueueSlackMirror. And apps/github-app/src/webhooks/ holds exactly three files — discussion-created.ts, issue-comment.ts, issues-opened.ts — so GitHub Discussions have no comment webhook at all.
Concretely: issue #42 opens a ticket, the Slack thread opens, the AI reply threads under it. The reporter then comments "still repros on 1.62.3", "here's a stack trace", "this is blocking our launch". None of it reaches Slack, nothing logs the omission, and an engineer scanning the mirror channel sees a ticket with one AI answer and reads it as the reporter having gone quiet.
v1 ships with this stated rather than fixed — docs/deployment.md and .env.example now say the mirror carries ticket-opens from Discord and GitHub, AI replies on both, and community follow-ups from Discord only, with a note that a quiet mirror thread is not evidence about the reporter. This issue is the wiring.
Two parts, and they are not the same size
Issue comments are the straightforward half: enqueue the reply job in handleIssueComment behind the same isSlackMirrorEnabled + isMirrorableSource pair the other producers use, with a test that a stored comment reaches the mirror as a threaded reply rather than a new root.
Discussion comments need a webhook that does not exist yet — discussion_comment is a separate GitHub event from discussion, so this is new subscription plus a new handler, not a change to an existing one.
Worth doing the first half alone if the second is not wanted soon; the docs would then narrow from "GitHub follow-ups" to "GitHub discussion follow-ups". Whichever ships, the wording in docs/deployment.md and .env.example has to move with it — the point of stating the limit is that it stays true.
Depends on #150.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with apps/github-app/src/webhooks/issue-comment.ts:54 and compare its producer path with the existing InboundHandler and enqueueSlackMirror usage; inspect the three files under apps/github-app/src/webhooks/. Add coverage for a stored GitHub comment becoming a threaded Slack reply, and align docs/deployment.md and .env.example with the shipped scope; if included, cover the separate discussion_comment webhook too.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, typescript
- Domain
- backend, documentation
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 64/100