1---2name: monitor3description: Skill for the Monitor area of Wiki. 1258 symbols across 394 files.4---56# Monitor781258 symbols | 394 files | Cohesion: 65%910## When to Use1112- Working with code in `AI/`13- Understanding how normalizeE164, isSelfChatMode, toWhatsappJid work14- Modifying monitor-related functionality1516## Key Files1718| File | Symbols |19|------|---------|20| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/agent-components.ts` | dispatchDiscordComponentEvent, handleDiscordComponentEvent, handleDiscordModalTrigger, run, run (+20) |21| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/model-picker.ts` | loadDiscordModelPickerData, renderDiscordModelPickerModelsView, toDiscordModelPickerMessagePayload, normalizePage, clampPageSize (+19) |22| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/allow-list.ts` | resolveDiscordOwnerAccess, resolveDiscordChannelConfigWithFallback, resolveDiscordShouldRequireMention, isDiscordAutoThreadOwnedByBot, isDiscordGroupAllowedByPolicy (+18) |23| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/listeners.ts` | registerDiscordListener, DiscordMessageListener, DiscordReactionListener, DiscordReactionRemoveListener, DiscordPresenceListener (+18) |24| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/exec-approvals.ts` | ExecApprovalButton, createExecApprovalButton, extractDiscordChannelId, ExecApprovalActionRow, buildExecApprovalPayload (+18) |25| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/agent-components-helpers.ts` | ensureDmComponentAuthorized, readParsedComponentId, mapOptionLabels, resolveAgentComponentRoute, ackComponentInteraction (+16) |26| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/message-utils.ts` | resolveDiscordChannelInfo, mergeHostnameList, resolveDiscordMediaSsrFPolicy, resolveMediaList, resolveForwardedMediaList (+15) |27| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/native-command-ui.ts` | buildDiscordModelPickerAllowedModelRefs, resolveDiscordModelPickerPreferenceScope, resolveDiscordModelPickerRoute, resolveDiscordModelPickerCurrentModel, replyWithDiscordModelPickerProviders (+12) |28| `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/thread-bindings.state.ts` | rememberThreadBindingToken, getThreadBindingToken, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingInactivityExpiresAt (+12) |29| `AI/3-Application/Openclaw-source/extensions/matrix/src/matrix/monitor/verification-events.ts` | readVerificationSignal, trimMaybeString, formatVerificationStageNotice, sendVerificationNotice, rememberVerificationUserRoom (+11) |3031## Entry Points3233Start here when exploring this area:3435- **`normalizeE164`** (Function) — `AI/3-Application/Openclaw-source/src/utils.ts:75`36- **`isSelfChatMode`** (Function) — `AI/3-Application/Openclaw-source/src/utils.ts:89`37- **`toWhatsappJid`** (Function) — `AI/3-Application/Openclaw-source/src/utils.ts:112`38- **`jidToE164`** (Function) — `AI/3-Application/Openclaw-source/src/utils.ts:168`39- **`resolveJidToE164`** (Function) — `AI/3-Application/Openclaw-source/src/utils.ts:193`4041## Key Symbols4243| Symbol | Type | File | Line |44|--------|------|------|------|45| `KeyedAsyncQueue` | Class | `AI/3-Application/Openclaw-source/src/plugin-sdk/keyed-async-queue.ts` | 33 |46| `TwitchClientManager` | Class | `AI/3-Application/Openclaw-source/extensions/twitch/src/twitch-client.ts` | 10 |47| `DiscordStatusReadyListener` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/provider.ts` | 729 |48| `DiscordMessageListener` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/listeners.ts` | 200 |49| `DiscordReactionListener` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/listeners.ts` | 225 |50| `DiscordReactionRemoveListener` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/listeners.ts` | 243 |51| `DiscordPresenceListener` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/listeners.ts` | 696 |52| `DiscordThreadUpdateListener` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/listeners.ts` | 729 |53| `ExecApprovalButton` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/exec-approvals.ts` | 799 |54| `AgentComponentButton` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/agent-components.ts` | 777 |55| `AgentSelectMenu` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/agent-components.ts` | 867 |56| `UrbitSSEClient` | Class | `AI/3-Application/Openclaw-source/extensions/tlon/src/urbit/sse-client.ts` | 25 |57| `DefaultSentMessageCache` | Class | `AI/3-Application/Openclaw-source/extensions/imessage/src/monitor/echo-cache.ts` | 34 |58| `DiscordFormModal` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/components.ts` | 1128 |59| `DiscordExecApprovalHandler` | Class | `AI/3-Application/Openclaw-source/extensions/discord/src/monitor/exec-approvals.ts` | 369 |60| `normalizeE164` | Function | `AI/3-Application/Openclaw-source/src/utils.ts` | 75 |61| `isSelfChatMode` | Function | `AI/3-Application/Openclaw-source/src/utils.ts` | 89 |62| `toWhatsappJid` | Function | `AI/3-Application/Openclaw-source/src/utils.ts` | 112 |63| `jidToE164` | Function | `AI/3-Application/Openclaw-source/src/utils.ts` | 168 |64| `resolveJidToE164` | Function | `AI/3-Application/Openclaw-source/src/utils.ts` | 193 |6566## Execution Flows6768| Flow | Type | Steps |69|------|------|-------|70| `HandleModelPickerInteraction → Dep` | cross_community | 10 |71| `ProcessMessage → Trim` | cross_community | 9 |72| `HandleModelPickerInteraction → ToRaw` | cross_community | 9 |73| `HandleModelPickerInteraction → IsShallow` | cross_community | 9 |74| `ProcessMessage → ToLowerCase` | cross_community | 8 |75| `ProcessMessage → IsValidProfileName` | cross_community | 8 |76| `MonitorMattermostProvider → IsRecord` | cross_community | 8 |77| `MonitorMattermostProvider → Trim` | cross_community | 8 |78| `HandleModelPickerInteraction → CreateEmptyPluginRegistry` | cross_community | 8 |79| `HandleModelPickerInteraction → Trim` | cross_community | 8 |8081## Connected Areas8283| Area | Connections |84|------|-------------|85| Scripts | 257 calls |86| Auto-reply | 79 calls |87| Reply | 48 calls |88| Ink | 46 calls |89| Matrix | 46 calls |90| Channels | 37 calls |91| Plugins | 27 calls |92| Config | 27 calls |9394## How to Explore95961. `gitnexus_context({name: "normalizeE164"})` — see callers and callees972. `gitnexus_query({query: "monitor"})` — find related execution flows983. Read key files listed above for implementation details