(evt: IncomingThreadStart)
| 560 | await command.handler(ctx); |
| 561 | }, |
| 562 | async onThreadStarted(evt: IncomingThreadStart) { |
| 563 | // The adapter has already applied its static defaults (greeting / |
| 564 | // prompts) before emitting this, so handlers layer on top and never |
| 565 | // race. Zero handlers → no-op. |
| 566 | const thread = makeThread( |
| 567 | adapter, |
| 568 | evt.replyTarget, |
| 569 | evt.conversationKey, |
| 570 | ); |
| 571 | for (const h of threadStartedHandlers) |
| 572 | await h({ thread, user: evt.user }); |
| 573 | }, |
| 574 | async onReaction(evt: IncomingReaction) { |
| 575 | // Only normalize when the adapter's platform is one the emoji table |
| 576 | // knows; otherwise the raw token passes through unchanged. |
nothing calls this directly
no test coverage detected
searching dependent graphs…