The small control surface a command may drive for this conversation.
(t: Transport, chatId: string, key: string)
| 53 | for (const ac of this.busy.values()) ac.abort(); |
| 54 | for (const t of this.opts.transports) await t.stop(); |
| 55 | } |
| 56 | |
| 57 | /** Hub is sink-dumb. We only present asks whose origin is one of our chats. Never live. */ |
| 58 | private onHub(ev: HubEvent): void { |
| 59 | if (ev.kind === 'approval-cleared') { |
| 60 | for (const [key, ask] of this.asks) { |
| 61 | if (ask.hubId === ev.id) this.asks.delete(key); |
| 62 | } |
| 63 | return; |
| 64 | } |
| 65 | if (ev.kind !== 'approval') return; |
| 66 | if (!ev.origin || ev.origin === TUI_ORIGIN) return; |