Skip to content

chore: Replace OnSnapshot callback with Emitter interface - #185

Merged
johnstcn merged 6 commits into
mainfrom
cj/refactor/event-emitter
Feb 16, 2026
Merged

chore: Replace OnSnapshot callback with Emitter interface#185
johnstcn merged 6 commits into
mainfrom
cj/refactor/event-emitter

Conversation

@johnstcn

@johnstcnjohnstcn commented Feb 12, 2026

Copy link
Copy Markdown
Member
  • Add Emitter interface to screentracker package
  • Remove OnSnapshot from PTYConversationConfig, accept Emitter in NewPTY
  • Rename EventEmitter methods: EmitMessages, EmitStatus, EmitScreen
  • Accept agentType at NewEventEmitter construction instead of per-call
  • Update server.go wiring, all tests pass

Created using Mux (Opus 4.5)

- Add Emitter interface to screentracker package
- Remove OnSnapshot from PTYConversationConfig, accept Emitter in NewPTY
- Rename EventEmitter methods: EmitMessages, EmitStatus, EmitScreen
- Accept agentType at NewEventEmitter construction instead of per-call
- Update server.go wiring, all tests pass
- Add Emitter interface to screentracker package
- Remove OnSnapshot from PTYConversationConfig, accept Emitter in NewPTY
- Rename EventEmitter methods: EmitMessages, EmitStatus, EmitScreen
- Accept agentType at NewEventEmitter construction instead of per-call
- Update server.go wiring, all tests pass
@johnstcnjohnstcn self-assigned this Feb 12, 2026
@github-actions

Copy link
Copy Markdown

✅ Preview binaries are ready!

To test with modules: agentapi_version = "agentapi_185" or download from: https://github.com/coder/agentapi/releases/tag/agentapi_185

@johnstcn
johnstcn marked this pull request as ready for review February 12, 2026 22:19
CopilotAI review requested due to automatic review settings February 12, 2026 22:19

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors how PTY conversation snapshot updates are propagated by replacing the OnSnapshot callback with a screentracker.Emitter interface, and wires the HTTP API event stream through that interface.

Changes:

  • Introduces screentracker.Emitter and updates PTYConversation to emit status/messages/screen via the interface.
  • Refactors httpapi.EventEmitter to use a functional-options constructor and renames update methods to Emit*.
  • Updates server wiring and tests to pass an emitter into st.NewPTY.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
lib/screentracker/conversation.goAdds the Emitter interface to represent conversation state emission.
lib/screentracker/pty_conversation.goRemoves OnSnapshot callback and emits via Emitter; updates NewPTY signature.
lib/screentracker/pty_conversation_test.goUpdates tests to pass a stub emitter into NewPTY.
lib/httpapi/events.goRefactors EventEmitter construction to options + renames methods to Emit*.
lib/httpapi/server.goPasses EventEmitter directly to st.NewPTY as an Emitter.
lib/httpapi/events_test.goUpdates tests for NewEventEmitter options and Emit* method names.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadlib/httpapi/events.go
Comment threadlib/screentracker/pty_conversation_test.go Outdated
Comment threadlib/screentracker/pty_conversation.go
Comment threadlib/httpapi/events.go Outdated

@35C4n0r35C4n0r left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@johnstcn
johnstcn merged commit 25cbbcb into mainFeb 16, 2026
3 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@johnstcn@35C4n0r