feat(agent): add extensible tag interception system and inline reactions

Refactor the attachment tag extraction into a generic TagResolver/StreamTagExtractor
system that supports multiple custom tags. Implement <reactions> tag allowing the
agent to embed emoji reactions directly in text responses, dispatched as side-effects
through the channel reactor interface.

- Add TagResolver interface and StreamTagExtractor streaming state machine
- Refactor AttachmentsStreamExtractor as backward-compatible wrapper
- Add reactionsResolver and ReactionDeltaAction stream event
- Wire reaction dispatch in Go channel inbound processor
- Fix .gitignore to scope compiled binary patterns to repo root
This commit is contained in:
Acbox
2026-03-11 17:43:30 +08:00
parent 05ed5a7adf
commit 1da251885d
11 changed files with 453 additions and 126 deletions
+1
View File
@@ -448,6 +448,7 @@ func provideChannelManager(log *slog.Logger, registry *channel.Registry, channel
if mw := channelRouter.IdentityMiddleware(); mw != nil {
mgr.Use(mw)
}
channelRouter.SetReactor(mgr)
return mgr
}