Files
openclaw-xmpp/openclaw.plugin.json
Eric Ireland 93a00d9919
CI / verify (22.22.3) (push) Canceled after 0s
CI / verify (24) (push) Canceled after 0s
Initial public source prerelease
2026-09-10 00:28:38 +10:00

293 lines
8.3 KiB
JSON

{
"id": "xmpp",
"name": "XMPP",
"description": "Native XMPP direct-message channel for OpenClaw.",
"version": "0.1.2-beta.2",
"activation": {
"onStartup": false
},
"channels": [
"xmpp"
],
"channelEnvVars": {
"xmpp": [
"XMPP_JID",
"XMPP_PASSWORD",
"XMPP_SERVICE",
"XMPP_WEBSOCKET_URL"
]
},
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
},
"channelConfigs": {
"xmpp": {
"schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"defaultAccount": {
"type": "string"
},
"jid": {
"type": "string"
},
"password": {
"$ref": "#/definitions/secretInput"
},
"resource": {
"type": "string"
},
"service": {
"type": "string"
},
"websocketUrl": {
"type": "string"
},
"dmPolicy": {
"type": "string",
"enum": [
"pairing",
"allowlist",
"open",
"disabled"
]
},
"allowFrom": {
"type": "array",
"items": {
"type": "string"
}
},
"sendReceipts": {
"type": "boolean"
},
"requestReceipts": {
"type": "boolean"
},
"sendChatStates": {
"type": "boolean"
},
"textChunkLimit": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"mediaMaxMb": {
"type": "number",
"minimum": 1,
"maximum": 100
},
"healthProbe": { "type": "boolean" },
"healthProbeIntervalSeconds": { "type": "number", "minimum": 30, "maximum": 3600 },
"healthProbeTimeoutSeconds": { "type": "number", "minimum": 5, "maximum": 60 },
"reconnectDelaySeconds": { "type": "number", "minimum": 1, "maximum": 60 },
"dm": {
"type": "object",
"additionalProperties": false,
"properties": {
"sessionScope": {
"type": "string",
"enum": ["per-user", "per-channel-peer", "per-account-channel-peer"]
},
"threadReplies": {
"type": "string",
"enum": ["off", "inbound", "always"]
}
}
},
"threadBindings": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"idleHours": { "type": "number", "minimum": 0 },
"maxAgeHours": { "type": "number", "minimum": 0 },
"spawnSessions": { "type": "boolean" }
}
},
"accounts": {
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$"
},
"additionalProperties": {
"$ref": "#/definitions/account"
}
}
},
"definitions": {
"secretInput": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false,
"properties": {
"source": {
"type": "string",
"enum": [
"env",
"file",
"exec"
]
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string"
}
}
}
]
},
"account": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"jid": {
"type": "string"
},
"password": {
"$ref": "#/definitions/secretInput"
},
"resource": {
"type": "string"
},
"service": {
"type": "string"
},
"websocketUrl": {
"type": "string"
},
"dmPolicy": {
"type": "string",
"enum": [
"pairing",
"allowlist",
"open",
"disabled"
]
},
"allowFrom": {
"type": "array",
"items": {
"type": "string"
}
},
"sendReceipts": {
"type": "boolean"
},
"requestReceipts": {
"type": "boolean"
},
"sendChatStates": {
"type": "boolean"
},
"textChunkLimit": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"mediaMaxMb": {
"type": "number",
"minimum": 1,
"maximum": 100
},
"healthProbe": { "type": "boolean" },
"healthProbeIntervalSeconds": { "type": "number", "minimum": 30, "maximum": 3600 },
"healthProbeTimeoutSeconds": { "type": "number", "minimum": 5, "maximum": 60 },
"reconnectDelaySeconds": { "type": "number", "minimum": 1, "maximum": 60 },
"dm": {
"type": "object",
"additionalProperties": false,
"properties": {
"sessionScope": {
"type": "string",
"enum": ["per-user", "per-channel-peer", "per-account-channel-peer"]
},
"threadReplies": {
"type": "string",
"enum": ["off", "inbound", "always"]
}
}
},
"threadBindings": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"idleHours": { "type": "number", "minimum": 0 },
"maxAgeHours": { "type": "number", "minimum": 0 },
"spawnSessions": { "type": "boolean" }
}
}
}
}
}
},
"uiHints": {
"dm.sessionScope": {
"label": "XMPP DM Session Scope",
"help": "Controls how direct messages from the same peer are routed to OpenClaw sessions (per-channel-peer recommended for continuity)."
},
"dm.threadReplies": {
"label": "XMPP Thread Replies",
"help": "How inbound replies are presented to the model."
},
"threadBindings.enabled": {
"label": "XMPP Thread Bindings Enabled"
},
"jid": {
"label": "XMPP JID",
"placeholder": "bot@example.org"
},
"password": {
"label": "Password",
"sensitive": true
},
"service": {
"label": "XMPP service",
"placeholder": "xmpps://xmpp.example.org:5223"
},
"websocketUrl": {
"label": "WebSocket URL",
"placeholder": "wss://xmpp.example.org/xmpp-websocket"
},
"allowFrom": {
"label": "Allowed bare JIDs"
},
"textChunkLimit": {
"label": "Outbound text chunk size",
"help": "Maximum characters per outbound message (default: 4000)."
}
}
}
}
}