# Docs - @meshcorejs/client: The bot framework - [Overview](/docs/client): What @meshcorejs/client is and where to start. - [Getting started](/docs/client/getting-started): Install @meshcorejs/client and run a first bot over USB, WiFi or Bluetooth. - Guides - [Answer a command](/docs/client/guides/answer-a-command): A command that answers in a DM or on a channel, in a few lines. - [Read the arguments](/docs/client/guides/read-the-arguments): Declare what a command takes and get it typed in the handler. - [Post on a channel](/docs/client/guides/post-on-a-channel): Send a message on a channel from a command, within the radio's limits. - [A well-behaved bot](/docs/client/guides/a-well-behaved-bot): What the framework refuses by default so your bot never spams the mesh, and the knobs you have. - [Run something on a schedule](/docs/client/guides/run-on-a-schedule): A job on an interval or a cron expression, started with the bot. - [React to the mesh](/docs/client/guides/react-to-the-mesh): Run code when a node appears, an advert is heard, or the bot becomes ready. - [Restrict who can run a command](/docs/client/guides/restrict-a-command): A role for the owners and a permission on the command. - [Translate the replies](/docs/client/guides/translate-the-replies): Every text the bot says on its own, in French or in your own words. - [Write a plugin](/docs/client/guides/write-a-plugin): Group commands that belong together, configure them, reload them from the radio. - [Test without a radio](/docs/client/guides/test-without-a-radio): Drive the bot in Vitest on a fake radio, with simulated time. - Client - [Options and login](/docs/client/client/options-and-login): What the Client takes, what login() does, and how it stays connected. - [Bricks and loading](/docs/client/client/bricks-and-loading): The six bricks, one file per brick loaded from folders, register(), hot reload and validation. - [Radio settings](/docs/client/client/radio-settings): RadioConfig, what login() applies, what happens when the radio refuses, and client.radio. - [Sending messages](/docs/client/client/sending-messages): Byte budgets, MessageBuilder, the send queue and delivery status. - [Errors and logging](/docs/client/client/errors-and-logging): What throws, what is reported, and the error codes. - Commands - [Declaring a command](/docs/client/commands/declaring-a-command): The trigger rule, the builder chain, aliases, scope and the reserved names. - [Arguments](/docs/client/commands/arguments): The eight argument types, their rules, and how ctx.args gets its type. - [Context and pipeline](/docs/client/commands/context-and-pipeline): What a handler receives, what runs before it, and what happens when it throws. - [Built-in commands](/docs/client/commands/built-in-commands): /help, /plugins and /jobs, and the permissions that unlock them. - Events - [Handlers and isolation](/docs/client/events/handlers-and-isolation): EventBuilder, typed handlers, registration order and error isolation. - [Events you can listen to](/docs/client/events/events-you-can-listen-to): Every client event, when it fires, and its arguments. - Jobs - [Schedules and options](/docs/client/jobs/schedules-and-options): Cron or interval, run on start, overlap, timeout and the connection rule. - [Lifecycle and errors](/docs/client/jobs/lifecycle-and-errors): When jobs start and stop, run, pause and resume, and what happens on failure. - Roles and permissions - [Model and built-in permissions](/docs/client/permissions/model-and-built-in-permissions): Permissions come from roles. The core permissions and what they unlock. - [Roles and members](/docs/client/permissions/roles-and-members): Member sources, cache and invalidation, and the role hierarchy. - [Channels are untrusted](/docs/client/permissions/channels-are-untrusted): Why a protected command never runs from a channel. - Plugins - [Writing one](/docs/client/plugins/writing-one): What a plugin is, the bricks factory, and validation. - [Configuring and runtime](/docs/client/plugins/configuring-and-runtime): configure(), registration, load, unload and reload, and how failures are reported. - [Shipping a package](/docs/client/plugins/shipping-a-package): Publish a plugin on npm so any bot can install it. - Replies - [Overriding texts](/docs/client/replies/overriding-texts): English by default, French in one line, partial overrides, and what stays English. - [All replies](/docs/client/replies/all-replies): Every key of client.replies and its English default. - **Reference** - Reference - [@meshcorejs/client](/docs/client/reference) - Classes - [ArgBuilder<T, N, R, C>](/docs/client/reference/classes/ArgBuilder) - [ArgumentError](/docs/client/reference/classes/ArgumentError) - [BleTransport](/docs/client/reference/classes/BleTransport) - [Channel](/docs/client/reference/classes/Channel) - [ChannelManager](/docs/client/reference/classes/ChannelManager) - [Client](/docs/client/reference/classes/Client) - [ClientStateError](/docs/client/reference/classes/ClientStateError) - [Collection<K, V>](/docs/client/reference/classes/Collection) - [Command](/docs/client/reference/classes/Command) - [CommandBuilder<Args>](/docs/client/reference/classes/CommandBuilder) - [CommandContext<Args>](/docs/client/reference/classes/CommandContext) - [CommandManager](/docs/client/reference/classes/CommandManager) - [CommandTimeoutError](/docs/client/reference/classes/CommandTimeoutError) - [ConnectionError](/docs/client/reference/classes/ConnectionError) - [Contact](/docs/client/reference/classes/Contact) - [ContactManager](/docs/client/reference/classes/ContactManager) - [DeliveryFailedError](/docs/client/reference/classes/DeliveryFailedError) - [EventBuilder<E>](/docs/client/reference/classes/EventBuilder) - [EventManager](/docs/client/reference/classes/EventManager) - [GuardedCommandError](/docs/client/reference/classes/GuardedCommandError) - [Job](/docs/client/reference/classes/Job) - [JobBuilder](/docs/client/reference/classes/JobBuilder) - [JobManager](/docs/client/reference/classes/JobManager) - [JobTimeoutError](/docs/client/reference/classes/JobTimeoutError) - [LimitReachedError](/docs/client/reference/classes/LimitReachedError) - [LoadError](/docs/client/reference/classes/LoadError) - [MeshcoreError](/docs/client/reference/classes/MeshcoreError) - [Message](/docs/client/reference/classes/Message) - [MessageBuilder](/docs/client/reference/classes/MessageBuilder) - [MessageTooLongError](/docs/client/reference/classes/MessageTooLongError) - [MissingDependencyError](/docs/client/reference/classes/MissingDependencyError) - [PermissionBuilder](/docs/client/reference/classes/PermissionBuilder) - [PermissionManager](/docs/client/reference/classes/PermissionManager) - [Plugin](/docs/client/reference/classes/Plugin) - [PluginBuilder<Options>](/docs/client/reference/classes/PluginBuilder) - [PluginManager](/docs/client/reference/classes/PluginManager) - [PublicChannelError](/docs/client/reference/classes/PublicChannelError) - [Radio](/docs/client/reference/classes/Radio) - [RadioConfig](/docs/client/reference/classes/RadioConfig) - [RadioConfigError](/docs/client/reference/classes/RadioConfigError) - [RadioError](/docs/client/reference/classes/RadioError) - [RateLimitError](/docs/client/reference/classes/RateLimitError) - [Role](/docs/client/reference/classes/Role) - [RoleBuilder](/docs/client/reference/classes/RoleBuilder) - [RoleManager](/docs/client/reference/classes/RoleManager) - [SendQueue](/docs/client/reference/classes/SendQueue) - [SentMessage](/docs/client/reference/classes/SentMessage) - [SerialTransport](/docs/client/reference/classes/SerialTransport) - [TcpTransport](/docs/client/reference/classes/TcpTransport) - [TooFarError](/docs/client/reference/classes/TooFarError) - [TypedEmitter<Events>](/docs/client/reference/classes/TypedEmitter) - [UnsupportedFirmwareError](/docs/client/reference/classes/UnsupportedFirmwareError) - Interfaces - [Advert](/docs/client/reference/interfaces/Advert) - [ArgDefinition](/docs/client/reference/interfaces/ArgDefinition) - [BleTransportOptions](/docs/client/reference/interfaces/BleTransportOptions) - [Brick<Definition>](/docs/client/reference/interfaces/Brick) - [ChannelRecord](/docs/client/reference/interfaces/ChannelRecord) - [ClientEvents](/docs/client/reference/interfaces/ClientEvents) - [ClientOptions](/docs/client/reference/interfaces/ClientOptions) - [CommandDefinition](/docs/client/reference/interfaces/CommandDefinition) - [ContactRecord](/docs/client/reference/interfaces/ContactRecord) - [CreateChannelOptions](/docs/client/reference/interfaces/CreateChannelOptions) - [DeniedContext](/docs/client/reference/interfaces/DeniedContext) - [DeviceInfo](/docs/client/reference/interfaces/DeviceInfo) - [ErrorSource](/docs/client/reference/interfaces/ErrorSource) - [EventDefinition](/docs/client/reference/interfaces/EventDefinition) - [JobDefinition](/docs/client/reference/interfaces/JobDefinition) - [JobRunInfo](/docs/client/reference/interfaces/JobRunInfo) - [LoadIssue](/docs/client/reference/interfaces/LoadIssue) - [LoadOptions](/docs/client/reference/interfaces/LoadOptions) - [Location](/docs/client/reference/interfaces/Location) - [Logger](/docs/client/reference/interfaces/Logger) - [Member](/docs/client/reference/interfaces/Member) - [MessageData](/docs/client/reference/interfaces/MessageData) - [Path](/docs/client/reference/interfaces/Path) - [Permission](/docs/client/reference/interfaces/Permission) - [PermissionDefinition](/docs/client/reference/interfaces/PermissionDefinition) - [PermissionHolder](/docs/client/reference/interfaces/PermissionHolder) - [PluginDefinition<Options>](/docs/client/reference/interfaces/PluginDefinition) - [RadioConfigOptions](/docs/client/reference/interfaces/RadioConfigOptions) - [RadioEvents](/docs/client/reference/interfaces/RadioEvents) - [RadioOptions](/docs/client/reference/interfaces/RadioOptions) - [RadioParams](/docs/client/reference/interfaces/RadioParams) - [Replies](/docs/client/reference/interfaces/Replies) - [ResolvedMember](/docs/client/reference/interfaces/ResolvedMember) - [RoleDefinition](/docs/client/reference/interfaces/RoleDefinition) - [SelfInfo](/docs/client/reference/interfaces/SelfInfo) - [SendOptions](/docs/client/reference/interfaces/SendOptions) - [SerialTransportOptions](/docs/client/reference/interfaces/SerialTransportOptions) - [TcpTransportOptions](/docs/client/reference/interfaces/TcpTransportOptions) - [Transport](/docs/client/reference/interfaces/Transport) - [UnverifiedAuthor](/docs/client/reference/interfaces/UnverifiedAuthor) - Functions - [channelTextBudget()](/docs/client/reference/functions/channelTextBudget) - [createConsoleLogger()](/docs/client/reference/functions/createConsoleLogger) - [expectType()](/docs/client/reference/functions/expectType) - [hashtagChannelSecret()](/docs/client/reference/functions/hashtagChannelSecret) - [isBrick()](/docs/client/reference/functions/isBrick) - [mergeReplies()](/docs/client/reference/functions/mergeReplies) - Types - [ArgType](/docs/client/reference/type-aliases/ArgType) - [ArgValue<T, C>](/docs/client/reference/type-aliases/ArgValue) - [Author](/docs/client/reference/type-aliases/Author) - [BrickKind](/docs/client/reference/type-aliases/BrickKind) - [ClientStatus](/docs/client/reference/type-aliases/ClientStatus) - [Collector<T>](/docs/client/reference/type-aliases/Collector) - [CommandErrorHandler](/docs/client/reference/type-aliases/CommandErrorHandler) - [CommandHandler](/docs/client/reference/type-aliases/CommandHandler) - [CommandScope](/docs/client/reference/type-aliases/CommandScope) - [ContactKind](/docs/client/reference/type-aliases/ContactKind) - [DecodedFrame](/docs/client/reference/type-aliases/DecodedFrame) - [DeliveryFailureReason](/docs/client/reference/type-aliases/DeliveryFailureReason) - [DenyReason](/docs/client/reference/type-aliases/DenyReason) - [EventName](/docs/client/reference/type-aliases/EventName) - [JobSchedule](/docs/client/reference/type-aliases/JobSchedule) - [LogLevel](/docs/client/reference/type-aliases/LogLevel) - [MemberInput](/docs/client/reference/type-aliases/MemberInput) - [MemberList](/docs/client/reference/type-aliases/MemberList) - [MemberSource](/docs/client/reference/type-aliases/MemberSource) - [MessageContent](/docs/client/reference/type-aliases/MessageContent) - [OverflowMode](/docs/client/reference/type-aliases/OverflowMode) - [OverlapPolicy](/docs/client/reference/type-aliases/OverlapPolicy) - [PermissionLike](/docs/client/reference/type-aliases/PermissionLike) - [PluginBricksFactory<Options>](/docs/client/reference/type-aliases/PluginBricksFactory) - [PluginState](/docs/client/reference/type-aliases/PluginState) - [RadioSetting](/docs/client/reference/type-aliases/RadioSetting) - [RateLimitedResource](/docs/client/reference/type-aliases/RateLimitedResource) - [SentMessageStatus](/docs/client/reference/type-aliases/SentMessageStatus) - [UsageErrorHandler](/docs/client/reference/type-aliases/UsageErrorHandler) - Variables - [ADVERT_FLOOD_INTERVAL_MS](/docs/client/reference/variables/ADVERT_FLOOD_INTERVAL_MS) - [CHANNEL_SEND_LIMIT](/docs/client/reference/variables/CHANNEL_SEND_LIMIT) - [CHANNEL_SEND_WINDOW_MS](/docs/client/reference/variables/CHANNEL_SEND_WINDOW_MS) - [CORE_PERMISSION_PREFIX](/docs/client/reference/variables/CORE_PERMISSION_PREFIX) - [DEFAULT_MAX_PARTS](/docs/client/reference/variables/DEFAULT_MAX_PARTS) - [DESTROY_FLUSH_TIMEOUT_MS](/docs/client/reference/variables/DESTROY_FLUSH_TIMEOUT_MS) - [DM_MAX_RESENDS](/docs/client/reference/variables/DM_MAX_RESENDS) - [DM_TEXT_BUDGET](/docs/client/reference/variables/DM_TEXT_BUDGET) - [englishReplies](/docs/client/reference/variables/englishReplies) - [frenchReplies](/docs/client/reference/variables/frenchReplies) - [HEALTH_CHECK_INTERVAL_MS](/docs/client/reference/variables/HEALTH_CHECK_INTERVAL_MS) - [HEALTH_CHECK_MAX_FAILURES](/docs/client/reference/variables/HEALTH_CHECK_MAX_FAILURES) - [Permissions](/docs/client/reference/variables/Permissions) - [RECONNECT_BASE_DELAY_MS](/docs/client/reference/variables/RECONNECT_BASE_DELAY_MS) - [RECONNECT_MAX_DELAY_MS](/docs/client/reference/variables/RECONNECT_MAX_DELAY_MS) - [Replies](/docs/client/reference/variables/Replies) - [SEND_EXPIRY_MS](/docs/client/reference/variables/SEND_EXPIRY_MS) - [SEND_INTERVAL_MS](/docs/client/reference/variables/SEND_INTERVAL_MS) - [silentLogger](/docs/client/reference/variables/silentLogger) - Official plugins: Plugins published by the meshcore.js team - [Overview](/docs/plugins): The plugins published by the meshcore.js team, and how to add one to a bot. - [ai](/docs/plugins/ai): /ask answered by an OpenAI-compatible model, with memory and cooldown. - @meshcorejs/protocol: Companion Radio protocol codec - [Overview](/docs/protocol): What @meshcorejs/protocol is and what it is not. - **Reference** - Reference - [@meshcorejs/protocol](/docs/protocol/reference) - Classes - [ByteReader](/docs/protocol/reference/classes/ByteReader) - [ByteWriter](/docs/protocol/reference/classes/ByteWriter) - [FrameDecoder](/docs/protocol/reference/classes/FrameDecoder) - Interfaces - [AdvertPush](/docs/protocol/reference/interfaces/AdvertPush) - [BattAndStorageFrame](/docs/protocol/reference/interfaces/BattAndStorageFrame) - [ChannelInfoFrame](/docs/protocol/reference/interfaces/ChannelInfoFrame) - [ChannelMessageFrame](/docs/protocol/reference/interfaces/ChannelMessageFrame) - [ChannelRecord](/docs/protocol/reference/interfaces/ChannelRecord) - [ContactDeletedPush](/docs/protocol/reference/interfaces/ContactDeletedPush) - [ContactFrame](/docs/protocol/reference/interfaces/ContactFrame) - [ContactMessageFrame](/docs/protocol/reference/interfaces/ContactMessageFrame) - [ContactRecord](/docs/protocol/reference/interfaces/ContactRecord) - [ContactsFullPush](/docs/protocol/reference/interfaces/ContactsFullPush) - [ContactsStartFrame](/docs/protocol/reference/interfaces/ContactsStartFrame) - [CurrentTimeFrame](/docs/protocol/reference/interfaces/CurrentTimeFrame) - [DeviceInfo](/docs/protocol/reference/interfaces/DeviceInfo) - [DeviceInfoFrame](/docs/protocol/reference/interfaces/DeviceInfoFrame) - [DisabledFrame](/docs/protocol/reference/interfaces/DisabledFrame) - [EndOfContactsFrame](/docs/protocol/reference/interfaces/EndOfContactsFrame) - [ErrFrame](/docs/protocol/reference/interfaces/ErrFrame) - [ExportContactFrame](/docs/protocol/reference/interfaces/ExportContactFrame) - [MalformedFrame](/docs/protocol/reference/interfaces/MalformedFrame) - [MsgWaitingPush](/docs/protocol/reference/interfaces/MsgWaitingPush) - [NewAdvertPush](/docs/protocol/reference/interfaces/NewAdvertPush) - [NoMoreMessagesFrame](/docs/protocol/reference/interfaces/NoMoreMessagesFrame) - [OkFrame](/docs/protocol/reference/interfaces/OkFrame) - [Path](/docs/protocol/reference/interfaces/Path) - [PathLength](/docs/protocol/reference/interfaces/PathLength) - [PathUpdatedPush](/docs/protocol/reference/interfaces/PathUpdatedPush) - [SelfInfo](/docs/protocol/reference/interfaces/SelfInfo) - [SelfInfoFrame](/docs/protocol/reference/interfaces/SelfInfoFrame) - [SendChannelTxtMsgParams](/docs/protocol/reference/interfaces/SendChannelTxtMsgParams) - [SendConfirmedPush](/docs/protocol/reference/interfaces/SendConfirmedPush) - [SendTxtMsgParams](/docs/protocol/reference/interfaces/SendTxtMsgParams) - [SentFrame](/docs/protocol/reference/interfaces/SentFrame) - [SetAdvertLatLonCommand](/docs/protocol/reference/interfaces/SetAdvertLatLonCommand) - [SetChannelParams](/docs/protocol/reference/interfaces/SetChannelParams) - [SetRadioParamsCommand](/docs/protocol/reference/interfaces/SetRadioParamsCommand) - [UnknownFrame](/docs/protocol/reference/interfaces/UnknownFrame) - Functions - [contactUri()](/docs/protocol/reference/functions/contactUri) - [decodeFrame()](/docs/protocol/reference/functions/decodeFrame) - [decodePath()](/docs/protocol/reference/functions/decodePath) - [decodePathLength()](/docs/protocol/reference/functions/decodePathLength) - [encodeAddUpdateContact()](/docs/protocol/reference/functions/encodeAddUpdateContact) - [encodeAdvertPush()](/docs/protocol/reference/functions/encodeAdvertPush) - [encodeAppStart()](/docs/protocol/reference/functions/encodeAppStart) - [encodeBattAndStorageResponse()](/docs/protocol/reference/functions/encodeBattAndStorageResponse) - [encodeChannelInfoResponse()](/docs/protocol/reference/functions/encodeChannelInfoResponse) - [encodeChannelMessageResponse()](/docs/protocol/reference/functions/encodeChannelMessageResponse) - [encodeContactDeletedPush()](/docs/protocol/reference/functions/encodeContactDeletedPush) - [encodeContactMessageResponse()](/docs/protocol/reference/functions/encodeContactMessageResponse) - [encodeContactResponse()](/docs/protocol/reference/functions/encodeContactResponse) - [encodeContactsFullPush()](/docs/protocol/reference/functions/encodeContactsFullPush) - [encodeContactsStartResponse()](/docs/protocol/reference/functions/encodeContactsStartResponse) - [encodeCurrentTimeResponse()](/docs/protocol/reference/functions/encodeCurrentTimeResponse) - [encodeDeviceInfoResponse()](/docs/protocol/reference/functions/encodeDeviceInfoResponse) - [encodeDeviceQuery()](/docs/protocol/reference/functions/encodeDeviceQuery) - [encodeEndOfContactsResponse()](/docs/protocol/reference/functions/encodeEndOfContactsResponse) - [encodeErrResponse()](/docs/protocol/reference/functions/encodeErrResponse) - [encodeExportContact()](/docs/protocol/reference/functions/encodeExportContact) - [encodeExportContactResponse()](/docs/protocol/reference/functions/encodeExportContactResponse) - [encodeFrame()](/docs/protocol/reference/functions/encodeFrame) - [encodeGetBattAndStorage()](/docs/protocol/reference/functions/encodeGetBattAndStorage) - [encodeGetChannel()](/docs/protocol/reference/functions/encodeGetChannel) - [encodeGetContactByKey()](/docs/protocol/reference/functions/encodeGetContactByKey) - [encodeGetContacts()](/docs/protocol/reference/functions/encodeGetContacts) - [encodeGetDeviceTime()](/docs/protocol/reference/functions/encodeGetDeviceTime) - [encodeMsgWaitingPush()](/docs/protocol/reference/functions/encodeMsgWaitingPush) - [encodeNewAdvertPush()](/docs/protocol/reference/functions/encodeNewAdvertPush) - [encodeNoMoreMessagesResponse()](/docs/protocol/reference/functions/encodeNoMoreMessagesResponse) - [encodeOkResponse()](/docs/protocol/reference/functions/encodeOkResponse) - [encodePath()](/docs/protocol/reference/functions/encodePath) - [encodePathUpdatedPush()](/docs/protocol/reference/functions/encodePathUpdatedPush) - [encodeRemoveContact()](/docs/protocol/reference/functions/encodeRemoveContact) - [encodeResetPath()](/docs/protocol/reference/functions/encodeResetPath) - [encodeSelfInfoResponse()](/docs/protocol/reference/functions/encodeSelfInfoResponse) - [encodeSendChannelTxtMsg()](/docs/protocol/reference/functions/encodeSendChannelTxtMsg) - [encodeSendConfirmedPush()](/docs/protocol/reference/functions/encodeSendConfirmedPush) - [encodeSendSelfAdvert()](/docs/protocol/reference/functions/encodeSendSelfAdvert) - [encodeSendTxtMsg()](/docs/protocol/reference/functions/encodeSendTxtMsg) - [encodeSentResponse()](/docs/protocol/reference/functions/encodeSentResponse) - [encodeSetAdvertLatLon()](/docs/protocol/reference/functions/encodeSetAdvertLatLon) - [encodeSetAdvertName()](/docs/protocol/reference/functions/encodeSetAdvertName) - [encodeSetChannel()](/docs/protocol/reference/functions/encodeSetChannel) - [encodeSetDeviceTime()](/docs/protocol/reference/functions/encodeSetDeviceTime) - [encodeSetRadioParams()](/docs/protocol/reference/functions/encodeSetRadioParams) - [encodeSetRadioTxPower()](/docs/protocol/reference/functions/encodeSetRadioTxPower) - [encodeSyncNextMessage()](/docs/protocol/reference/functions/encodeSyncNextMessage) - [fromHex()](/docs/protocol/reference/functions/fromHex) - [isPublicKeyHex()](/docs/protocol/reference/functions/isPublicKeyHex) - [parseContactUri()](/docs/protocol/reference/functions/parseContactUri) - [publicKeyPrefixToBytes()](/docs/protocol/reference/functions/publicKeyPrefixToBytes) - [publicKeyToBytes()](/docs/protocol/reference/functions/publicKeyToBytes) - [toHex()](/docs/protocol/reference/functions/toHex) - [utf8ByteLength()](/docs/protocol/reference/functions/utf8ByteLength) - Types - [ChannelMessageParams](/docs/protocol/reference/type-aliases/ChannelMessageParams) - [ContactMessageParams](/docs/protocol/reference/type-aliases/ContactMessageParams) - [DecodedFrame](/docs/protocol/reference/type-aliases/DecodedFrame) - [FrameDirection](/docs/protocol/reference/type-aliases/FrameDirection) - [PushFrame](/docs/protocol/reference/type-aliases/PushFrame) - [ResponseFrame](/docs/protocol/reference/type-aliases/ResponseFrame) - Variables - [APP_TARGET_VERSION](/docs/protocol/reference/variables/APP_TARGET_VERSION) - [CHANNEL_SECRET_SIZE](/docs/protocol/reference/variables/CHANNEL_SECRET_SIZE) - [CommandCode](/docs/protocol/reference/variables/CommandCode) - [CONTACT_URI_PREFIX](/docs/protocol/reference/variables/CONTACT_URI_PREFIX) - [ContactType](/docs/protocol/reference/variables/ContactType) - [FROM_RADIO_MARKER](/docs/protocol/reference/variables/FROM_RADIO_MARKER) - [MAX_FRAME_SIZE](/docs/protocol/reference/variables/MAX_FRAME_SIZE) - [MAX_PATH_SIZE](/docs/protocol/reference/variables/MAX_PATH_SIZE) - [MAX_TEXT_LEN](/docs/protocol/reference/variables/MAX_TEXT_LEN) - [MIN_FIRMWARE_VERSION](/docs/protocol/reference/variables/MIN_FIRMWARE_VERSION) - [NAME_FIELD_SIZE](/docs/protocol/reference/variables/NAME_FIELD_SIZE) - [OUT_PATH_UNKNOWN](/docs/protocol/reference/variables/OUT_PATH_UNKNOWN) - [PUB_KEY_PREFIX_SIZE](/docs/protocol/reference/variables/PUB_KEY_PREFIX_SIZE) - [PUB_KEY_SIZE](/docs/protocol/reference/variables/PUB_KEY_SIZE) - [PUBLIC_CHANNEL_SECRET](/docs/protocol/reference/variables/PUBLIC_CHANNEL_SECRET) - [PushCode](/docs/protocol/reference/variables/PushCode) - [RadioErrorCode](/docs/protocol/reference/variables/RadioErrorCode) - [ResponseCode](/docs/protocol/reference/variables/ResponseCode) - [TO_RADIO_MARKER](/docs/protocol/reference/variables/TO_RADIO_MARKER) - [TxtType](/docs/protocol/reference/variables/TxtType) - @meshcorejs/testing: Test a bot without a radio - [Overview](/docs/testing): What @meshcorejs/testing is and what it is not. - **Reference** - Reference - [@meshcorejs/testing](/docs/testing/reference) - Classes - [FakeRadio](/docs/testing/reference/classes/FakeRadio) - [MockTransport](/docs/testing/reference/classes/MockTransport) - Interfaces - [FakeRadioOptions](/docs/testing/reference/interfaces/FakeRadioOptions) - [TestBot](/docs/testing/reference/interfaces/TestBot) - [TestClientOptions](/docs/testing/reference/interfaces/TestClientOptions) - Functions - [createTestClient()](/docs/testing/reference/functions/createTestClient) - [fakeContactKey()](/docs/testing/reference/functions/fakeContactKey) - [fakeContactRecord()](/docs/testing/reference/functions/fakeContactRecord) - [parseDuration()](/docs/testing/reference/functions/parseDuration) - Types - [AckMode](/docs/testing/reference/type-aliases/AckMode) - [FakeSentMessage](/docs/testing/reference/type-aliases/FakeSentMessage) - @meshcorejs/transports: TCP, serial, BLE and the fake radio - [Overview](/docs/transports): What @meshcorejs/transports is and what it is not. - **Reference** - Reference - [@meshcorejs/transports](/docs/transports/reference) - Main entry - [@meshcorejs/transports](/docs/transports/reference/main) - Classes - [BleTransport](/docs/transports/reference/main/classes/BleTransport) - [ConnectionError](/docs/transports/reference/main/classes/ConnectionError) - [MeshcoreError](/docs/transports/reference/main/classes/MeshcoreError) - [MissingDependencyError](/docs/transports/reference/main/classes/MissingDependencyError) - [SerialTransport](/docs/transports/reference/main/classes/SerialTransport) - [TcpTransport](/docs/transports/reference/main/classes/TcpTransport) - [TypedEmitter<Events>](/docs/transports/reference/main/classes/TypedEmitter) - Functions - [importOptional()](/docs/transports/reference/main/functions/importOptional) - Interfaces - [BleTransportDeps](/docs/transports/reference/main/interfaces/BleTransportDeps) - [BleTransportOptions](/docs/transports/reference/main/interfaces/BleTransportOptions) - [NobleCharacteristicLike](/docs/transports/reference/main/interfaces/NobleCharacteristicLike) - [NobleLike](/docs/transports/reference/main/interfaces/NobleLike) - [NoblePeripheralLike](/docs/transports/reference/main/interfaces/NoblePeripheralLike) - [SerialPortLike](/docs/transports/reference/main/interfaces/SerialPortLike) - [SerialPortModule](/docs/transports/reference/main/interfaces/SerialPortModule) - [SerialTransportDeps](/docs/transports/reference/main/interfaces/SerialTransportDeps) - [SerialTransportOptions](/docs/transports/reference/main/interfaces/SerialTransportOptions) - [TcpTransportOptions](/docs/transports/reference/main/interfaces/TcpTransportOptions) - [Transport](/docs/transports/reference/main/interfaces/Transport) - [TransportEvents](/docs/transports/reference/main/interfaces/TransportEvents) - Types - [EventMap](/docs/transports/reference/main/type-aliases/EventMap) - [Listener<Args>](/docs/transports/reference/main/type-aliases/Listener) - [TransportKind](/docs/transports/reference/main/type-aliases/TransportKind) - Variables - [BLE_RX_CHARACTERISTIC_UUID](/docs/transports/reference/main/variables/BLE_RX_CHARACTERISTIC_UUID) - [BLE_SERVICE_UUID](/docs/transports/reference/main/variables/BLE_SERVICE_UUID) - [BLE_TX_CHARACTERISTIC_UUID](/docs/transports/reference/main/variables/BLE_TX_CHARACTERISTIC_UUID) - /mock subpath - [@meshcorejs/transports/mock](/docs/transports/reference/mock) - Classes - [FakeRadio](/docs/transports/reference/mock/classes/FakeRadio) - [MockTransport](/docs/transports/reference/mock/classes/MockTransport) - Functions - [fakeContactRecord()](/docs/transports/reference/mock/functions/fakeContactRecord) - Interfaces - [FakeRadioOptions](/docs/transports/reference/mock/interfaces/FakeRadioOptions) - [FakeSentChannelMessage](/docs/transports/reference/mock/interfaces/FakeSentChannelMessage) - [FakeSentDirectMessage](/docs/transports/reference/mock/interfaces/FakeSentDirectMessage) - Types - [AckMode](/docs/transports/reference/mock/type-aliases/AckMode) - [FakeSentMessage](/docs/transports/reference/mock/type-aliases/FakeSentMessage) - [RadioHandler](/docs/transports/reference/mock/type-aliases/RadioHandler)