@cometchat/skills-cli
Advanced tools
@@ -13,5 +13,20 @@ { | ||
| "component-swap": "Requires replacing one UI Kit component with a drop-in variant. One-line change. The SDK currently ships exactly one such variant (CometChatCompactMessageComposer for rich text formatting); more variants will become catalog entries here as the SDK adds them.", | ||
| "moderation": "Backend moderation feature with configuration. Like 'extension' but takes a `config` payload (keyword lists, sensitivity levels, severity thresholds, quarantine action). The CLI's `apply-feature` walks an interactive config-collection step, then POSTs to /apps/{appId}/extensions/{id}/config plus the standard enable POST. `config_schema` describes the fields the user must supply.", | ||
| "moderation": "⚠️ LEGACY moderation extension (config payload: keyword lists, sensitivity, thresholds, quarantine action). The CLI's `apply-feature` POSTs to /apps/{appId}/extensions/{id}/config + enable. **DEPRECATED in favor of Rules Management** — the canonical moderation system (Dashboard → Moderation → Settings → Rules, or the /moderation/rules REST API: rules, keywords, reasons, blocked/flagged/reviewed-messages). Rules auto-apply to all messages with NO client code. CONFLICT: do NOT run a legacy moderation extension AND Rules on the same app — each message gets processed twice (delays + perf issues); disable the legacy extension first. See docs/moderation/overview.", | ||
| "calls-feature": "Calls SDK feature configured via CallSettingsBuilder (no backend toggle, no extension). The CLI's `apply-feature` command verifies the calls SDK is installed and points the agent at the matching per-family reference doc (e.g. `cometchat-react-calls/references/raise-hand.md`). The `reference_topic` field maps to the file slug; the `settings_flag` field is the CallSettingsBuilder method involved. Idempotency: persisted in state.applied_features." | ||
| }, | ||
| "tiers": { | ||
| "1": "Core Messaging (Zero Setup) — out of the box, no config or code (e.g. Typing Indicators).", | ||
| "2": "Builder-Enabled (Config + UI Toggle) — enable via Dashboard API; toggleable/placeable in the UI Kit Builder / Widget Builder (e.g. Polls).", | ||
| "3": "Config-Only (Dashboard-Driven) — enable via Dashboard API; works automatically, no UI or code (e.g. Link Preview).", | ||
| "4": "Config + Settings (Smart) — enable via Dashboard API + additional dashboard settings (API keys, rules, thresholds); no client code (e.g. Smart Replies).", | ||
| "5": "SDK-Integrated (Config + Code) — enable via Dashboard API + custom client code. THE IMPLEMENTATION IS IN THE DOCS (`docs_topic`) — fetch and wire it, do not hand-roll (e.g. Bitly).", | ||
| "_comment": "The product's canonical 5-category model (the 'Feature Availability' matrix — columns API Call / Code / Additional Settings are the operative truth, captured per-feature as enable_api(implied by type)/code/dashboard_settings/builder). `feature_types` above is the CLI's enablement MECHANISM; `tier` is the customer-facing WORK-NEEDED category." | ||
| }, | ||
| "code_legend": { | ||
| "_comment": "Per-feature `code` field = what client work is needed (from the matrix's Code column).", | ||
| "none": "No client code — the UI Kit renders it automatically once enabled (auto_wired_in_uikit:true).", | ||
| "stitch-components": "No extension code, but you COMPOSE existing kit components to surface it — see the kit sample apps for the wiring.", | ||
| "steps-in-docs": "Follow the documented steps at `docs_topic` to wire it client-side.", | ||
| "custom-code": "Substantial custom implementation — the reference code lives at `docs_topic`; fetch and adapt it." | ||
| }, | ||
| "features": [ | ||
@@ -23,4 +38,11 @@ { | ||
| "description": "Real-time text messaging via CometChatMessageList + CometChatMessageComposer. The core of every chat experience.", | ||
| "components": ["CometChatMessageList", "CometChatMessageComposer"], | ||
| "docs_topic": "core-features#instant-messaging" | ||
| "components": [ | ||
| "CometChatMessageList", | ||
| "CometChatMessageComposer" | ||
| ], | ||
| "docs_topic": "core-features#instant-messaging", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -32,4 +54,10 @@ { | ||
| "description": "Send images, videos, audio, and documents within conversations. Built into CometChatMessageComposer's ActionSheet.", | ||
| "components": ["CometChatMessageComposer"], | ||
| "docs_topic": "core-features#media-sharing" | ||
| "components": [ | ||
| "CometChatMessageComposer" | ||
| ], | ||
| "docs_topic": "core-features#media-sharing", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -41,4 +69,11 @@ { | ||
| "description": "See when messages have been delivered and read. Visible in message bubbles and the Conversations list.", | ||
| "components": ["CometChatMessageList", "CometChatConversations"], | ||
| "docs_topic": "core-features#read-receipts" | ||
| "components": [ | ||
| "CometChatMessageList", | ||
| "CometChatConversations" | ||
| ], | ||
| "docs_topic": "core-features#read-receipts", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -50,4 +85,10 @@ { | ||
| "description": "Manually mark conversations or messages as unread.", | ||
| "components": ["CometChatMessageList"], | ||
| "docs_topic": "core-features#mark-as-unread" | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "docs_topic": "core-features#mark-as-unread", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -59,4 +100,11 @@ { | ||
| "description": "Real-time typing awareness. Shows in CometChatMessageHeader and CometChatConversations.", | ||
| "components": ["CometChatMessageHeader", "CometChatConversations"], | ||
| "docs_topic": "core-features#typing-indicator" | ||
| "components": [ | ||
| "CometChatMessageHeader", | ||
| "CometChatConversations" | ||
| ], | ||
| "docs_topic": "core-features#typing-indicator", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -68,4 +116,13 @@ { | ||
| "description": "Online/offline status across Conversations, Message Header, Users, and Group Members.", | ||
| "components": ["CometChatConversations", "CometChatMessageHeader", "CometChatUsers", "CometChatGroupMembers"], | ||
| "docs_topic": "core-features#user-presence" | ||
| "components": [ | ||
| "CometChatConversations", | ||
| "CometChatMessageHeader", | ||
| "CometChatUsers", | ||
| "CometChatGroupMembers" | ||
| ], | ||
| "docs_topic": "core-features#user-presence", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -77,4 +134,10 @@ { | ||
| "description": "React to messages with emojis without typing a full response.", | ||
| "components": ["CometChatMessageList"], | ||
| "docs_topic": "core-features#reactions" | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "docs_topic": "core-features#reactions", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -86,4 +149,11 @@ { | ||
| "description": "Address specific users with @username, including @all for groups.", | ||
| "components": ["CometChatMessageComposer", "CometChatMessageList"], | ||
| "docs_topic": "core-features#mentions" | ||
| "components": [ | ||
| "CometChatMessageComposer", | ||
| "CometChatMessageList" | ||
| ], | ||
| "docs_topic": "core-features#mentions", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -95,4 +165,11 @@ { | ||
| "description": "Reply to specific messages in a thread, keeping conversations organized.", | ||
| "components": ["CometChatMessageList", "CometChatThreadHeader"], | ||
| "docs_topic": "core-features#threaded-conversations" | ||
| "components": [ | ||
| "CometChatMessageList", | ||
| "CometChatThreadHeader" | ||
| ], | ||
| "docs_topic": "core-features#threaded-conversations", | ||
| "tier": 1, | ||
| "code": "stitch-components", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -104,4 +181,11 @@ { | ||
| "description": "Quote a specific message when replying to maintain context.", | ||
| "components": ["CometChatMessageComposer", "CometChatMessageList"], | ||
| "docs_topic": "core-features#quoted-replies" | ||
| "components": [ | ||
| "CometChatMessageComposer", | ||
| "CometChatMessageList" | ||
| ], | ||
| "docs_topic": "core-features#quoted-replies", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -113,4 +197,10 @@ { | ||
| "description": "Multi-participant conversations via CometChatGroups.", | ||
| "components": ["CometChatGroups"], | ||
| "docs_topic": "core-features#group-chat" | ||
| "components": [ | ||
| "CometChatGroups" | ||
| ], | ||
| "docs_topic": "core-features#group-chat", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -122,4 +212,10 @@ { | ||
| "description": "Users can flag inappropriate messages with predefined reasons.", | ||
| "components": ["CometChatMessageList"], | ||
| "docs_topic": "core-features#report-message" | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "docs_topic": "core-features#report-message", | ||
| "tier": 1, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -131,4 +227,10 @@ { | ||
| "description": "Full-text search across conversations, messages, and media.", | ||
| "components": ["CometChatSearch"], | ||
| "docs_topic": "core-features#search" | ||
| "components": [ | ||
| "CometChatSearch" | ||
| ], | ||
| "docs_topic": "core-features#search", | ||
| "tier": 1, | ||
| "code": "stitch-components", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -139,4 +241,6 @@ { | ||
| "type": "default", | ||
| "description": "Umbrella entry — moderation is the family of seven configurable backend features below (profanity-filter, image-moderation, data-masking, sentiment-analysis, xss-filter, slow-mode, virus-malware-scanner). Each has its own catalog entry of type 'moderation' that the CLI can configure interactively.", | ||
| "components": ["CometChatMessageList"], | ||
| "description": "Umbrella entry. The CANONICAL moderation system is **Rules Management** — Dashboard → Moderation → Settings → Rules (or the /moderation/rules REST API: rules, keywords, reasons, blocked/flagged/reviewed-messages). Configure rules once; they auto-apply to every message with NO client code (UI Kit/SDK handle it). The seven entries below (profanity-filter, image-moderation, data-masking, sentiment-analysis, xss-filter, slow-mode, virus-malware-scanner) are the **LEGACY extensions** — still toggle-able but deprecated. ⚠️ Never run a legacy extension AND Rules on the same app: each message is processed twice (delays + perf). Prefer Rules; if migrating, disable the legacy extensions first. Docs: moderation/overview + moderation/rules-management.", | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "docs_topic": "core-features#moderation" | ||
@@ -150,12 +254,54 @@ }, | ||
| "description": "Detects and filters profane language from messages. Replaces matched words with asterisks or rejects the message outright.", | ||
| "components": ["CometChatMessageList", "CometChatMessageComposer"], | ||
| "components": [ | ||
| "CometChatMessageList", | ||
| "CometChatMessageComposer" | ||
| ], | ||
| "config_schema": { | ||
| "case_sensitivity": { "type": "enum", "values": ["case-sensitive", "case-insensitive"], "default": "case-insensitive", "prompt": "Case sensitivity for keyword matching?" }, | ||
| "filter_profanities_for": { "type": "enum", "values": ["all", "specific-roles"], "default": "all", "prompt": "Apply filter to all users or specific roles?" }, | ||
| "specific_roles": { "type": "array<string>", "when": { "filter_profanities_for": "specific-roles" }, "prompt": "Comma-separated role names" }, | ||
| "profane_words": { "type": "array<string>", "default": [], "prompt": "Custom words to add to the profanity list (comma-separated; empty for default list only)" }, | ||
| "white_listed_words": { "type": "array<string>", "default": [], "prompt": "Words to whitelist that would otherwise match (comma-separated)" }, | ||
| "rule": { "type": "enum", "values": ["mask", "drop", "tag"], "default": "mask", "prompt": "What to do with matched messages? (mask: replace with ****, drop: reject, tag: deliver but flag)" } | ||
| "case_sensitivity": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "case-sensitive", | ||
| "case-insensitive" | ||
| ], | ||
| "default": "case-insensitive", | ||
| "prompt": "Case sensitivity for keyword matching?" | ||
| }, | ||
| "filter_profanities_for": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "all", | ||
| "specific-roles" | ||
| ], | ||
| "default": "all", | ||
| "prompt": "Apply filter to all users or specific roles?" | ||
| }, | ||
| "specific_roles": { | ||
| "type": "array<string>", | ||
| "when": { | ||
| "filter_profanities_for": "specific-roles" | ||
| }, | ||
| "prompt": "Comma-separated role names" | ||
| }, | ||
| "profane_words": { | ||
| "type": "array<string>", | ||
| "default": [], | ||
| "prompt": "Custom words to add to the profanity list (comma-separated; empty for default list only)" | ||
| }, | ||
| "white_listed_words": { | ||
| "type": "array<string>", | ||
| "default": [], | ||
| "prompt": "Words to whitelist that would otherwise match (comma-separated)" | ||
| }, | ||
| "rule": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "mask", | ||
| "drop", | ||
| "tag" | ||
| ], | ||
| "default": "mask", | ||
| "prompt": "What to do with matched messages? (mask: replace with ****, drop: reject, tag: deliver but flag)" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#profanity-filter" | ||
| "docs_topic": "moderation/rules-management" | ||
| }, | ||
@@ -168,11 +314,46 @@ { | ||
| "description": "Detects unsafe content in images (NSFW, violence, etc.) using ML-based classification. Configurable confidence thresholds.", | ||
| "components": ["CometChatMessageList"], | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "config_schema": { | ||
| "explicit_threshold": { "type": "number", "min": 0, "max": 100, "default": 70, "prompt": "Threshold for explicit content (0-100; lower = stricter)" }, | ||
| "suggestive_threshold": { "type": "number", "min": 0, "max": 100, "default": 70, "prompt": "Threshold for suggestive content" }, | ||
| "violence_threshold": { "type": "number", "min": 0, "max": 100, "default": 70, "prompt": "Threshold for violent content" }, | ||
| "drugs_threshold": { "type": "number", "min": 0, "max": 100, "default": 70, "prompt": "Threshold for drug-related content" }, | ||
| "rule": { "type": "enum", "values": ["block", "blur", "tag"], "default": "blur", "prompt": "Action for flagged images?" } | ||
| "explicit_threshold": { | ||
| "type": "number", | ||
| "min": 0, | ||
| "max": 100, | ||
| "default": 70, | ||
| "prompt": "Threshold for explicit content (0-100; lower = stricter)" | ||
| }, | ||
| "suggestive_threshold": { | ||
| "type": "number", | ||
| "min": 0, | ||
| "max": 100, | ||
| "default": 70, | ||
| "prompt": "Threshold for suggestive content" | ||
| }, | ||
| "violence_threshold": { | ||
| "type": "number", | ||
| "min": 0, | ||
| "max": 100, | ||
| "default": 70, | ||
| "prompt": "Threshold for violent content" | ||
| }, | ||
| "drugs_threshold": { | ||
| "type": "number", | ||
| "min": 0, | ||
| "max": 100, | ||
| "default": 70, | ||
| "prompt": "Threshold for drug-related content" | ||
| }, | ||
| "rule": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "block", | ||
| "blur", | ||
| "tag" | ||
| ], | ||
| "default": "blur", | ||
| "prompt": "Action for flagged images?" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#image-moderation" | ||
| "docs_topic": "moderation/rules-management" | ||
| }, | ||
@@ -185,12 +366,43 @@ { | ||
| "description": "Masks PII (phone numbers, email addresses, credit cards, SSNs) in messages. Critical for healthcare, fintech, marketplace apps.", | ||
| "components": ["CometChatMessageList"], | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "config_schema": { | ||
| "mask_phone": { "type": "boolean", "default": true, "prompt": "Mask phone numbers?" }, | ||
| "mask_email": { "type": "boolean", "default": true, "prompt": "Mask email addresses?" }, | ||
| "mask_ssn": { "type": "boolean", "default": false, "prompt": "Mask US Social Security Numbers?" }, | ||
| "mask_credit_card": { "type": "boolean", "default": true, "prompt": "Mask credit card numbers?" }, | ||
| "custom_patterns": { "type": "array<{name:string,regex:string}>", "default": [], "prompt": "Custom regex patterns to mask (e.g. internal IDs)" }, | ||
| "rule": { "type": "enum", "values": ["mask", "drop", "tag"], "default": "mask", "prompt": "Action for messages containing matched data?" } | ||
| "mask_phone": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Mask phone numbers?" | ||
| }, | ||
| "mask_email": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Mask email addresses?" | ||
| }, | ||
| "mask_ssn": { | ||
| "type": "boolean", | ||
| "default": false, | ||
| "prompt": "Mask US Social Security Numbers?" | ||
| }, | ||
| "mask_credit_card": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Mask credit card numbers?" | ||
| }, | ||
| "custom_patterns": { | ||
| "type": "array<{name:string,regex:string}>", | ||
| "default": [], | ||
| "prompt": "Custom regex patterns to mask (e.g. internal IDs)" | ||
| }, | ||
| "rule": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "mask", | ||
| "drop", | ||
| "tag" | ||
| ], | ||
| "default": "mask", | ||
| "prompt": "Action for messages containing matched data?" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#data-masking" | ||
| "docs_topic": "moderation/overview" | ||
| }, | ||
@@ -203,8 +415,25 @@ { | ||
| "description": "Detects negative sentiment / toxicity in messages. Optionally surfaces a 'View confidently' confirm dialog before showing flagged messages.", | ||
| "components": ["CometChatMessageList"], | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "config_schema": { | ||
| "threshold": { "type": "number", "min": 0, "max": 100, "default": 50, "prompt": "Sentiment threshold (0-100; lower = more aggressive)" }, | ||
| "rule": { "type": "enum", "values": ["confirm-view", "tag", "drop"], "default": "confirm-view", "prompt": "Action for flagged messages?" } | ||
| "threshold": { | ||
| "type": "number", | ||
| "min": 0, | ||
| "max": 100, | ||
| "default": 50, | ||
| "prompt": "Sentiment threshold (0-100; lower = more aggressive)" | ||
| }, | ||
| "rule": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "confirm-view", | ||
| "tag", | ||
| "drop" | ||
| ], | ||
| "default": "confirm-view", | ||
| "prompt": "Action for flagged messages?" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#sentiment-analysis" | ||
| "docs_topic": "moderation/rules-management" | ||
| }, | ||
@@ -217,8 +446,27 @@ { | ||
| "description": "Strips HTML/script injection from messages before delivery. Critical for chat surfaces that render rich text.", | ||
| "components": ["CometChatMessageList"], | ||
| "components": [ | ||
| "CometChatMessageList" | ||
| ], | ||
| "config_schema": { | ||
| "strict_mode": { "type": "boolean", "default": true, "prompt": "Strict mode (blocks all HTML; safer)?" }, | ||
| "allowed_tags": { "type": "array<string>", "default": ["b", "i", "u", "strong", "em"], "when": { "strict_mode": false }, "prompt": "Allowed HTML tags (when strict mode off)" } | ||
| "strict_mode": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Strict mode (blocks all HTML; safer)?" | ||
| }, | ||
| "allowed_tags": { | ||
| "type": "array<string>", | ||
| "default": [ | ||
| "b", | ||
| "i", | ||
| "u", | ||
| "strong", | ||
| "em" | ||
| ], | ||
| "when": { | ||
| "strict_mode": false | ||
| }, | ||
| "prompt": "Allowed HTML tags (when strict mode off)" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#xss-filter" | ||
| "docs_topic": "moderation/overview" | ||
| }, | ||
@@ -231,9 +479,32 @@ { | ||
| "description": "Rate-limits how often a user can post in a conversation/group. Reduces spam in busy channels.", | ||
| "components": ["CometChatMessageComposer"], | ||
| "components": [ | ||
| "CometChatMessageComposer" | ||
| ], | ||
| "config_schema": { | ||
| "interval_seconds": { "type": "number", "min": 1, "max": 3600, "default": 5, "prompt": "Minimum seconds between messages from the same user" }, | ||
| "applies_to": { "type": "enum", "values": ["all", "groups-only", "specific-groups"], "default": "groups-only", "prompt": "Apply slow mode where?" }, | ||
| "specific_group_ids": { "type": "array<string>", "when": { "applies_to": "specific-groups" }, "prompt": "Group IDs (comma-separated)" } | ||
| "interval_seconds": { | ||
| "type": "number", | ||
| "min": 1, | ||
| "max": 3600, | ||
| "default": 5, | ||
| "prompt": "Minimum seconds between messages from the same user" | ||
| }, | ||
| "applies_to": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "all", | ||
| "groups-only", | ||
| "specific-groups" | ||
| ], | ||
| "default": "groups-only", | ||
| "prompt": "Apply slow mode where?" | ||
| }, | ||
| "specific_group_ids": { | ||
| "type": "array<string>", | ||
| "when": { | ||
| "applies_to": "specific-groups" | ||
| }, | ||
| "prompt": "Group IDs (comma-separated)" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#slow-mode" | ||
| "docs_topic": "moderation/overview" | ||
| }, | ||
@@ -246,18 +517,48 @@ { | ||
| "description": "Scans uploaded files (images, documents, archives) for malware before delivery. Required for healthcare, legal, finance apps.", | ||
| "components": ["CometChatMessageList", "CometChatMessageComposer"], | ||
| "components": [ | ||
| "CometChatMessageList", | ||
| "CometChatMessageComposer" | ||
| ], | ||
| "config_schema": { | ||
| "scan_images": { "type": "boolean", "default": true, "prompt": "Scan image uploads?" }, | ||
| "scan_documents": { "type": "boolean", "default": true, "prompt": "Scan document uploads (.pdf, .docx, etc.)?" }, | ||
| "scan_archives": { "type": "boolean", "default": true, "prompt": "Scan archive uploads (.zip, .tar.gz)?" }, | ||
| "rule": { "type": "enum", "values": ["block", "quarantine", "tag"], "default": "block", "prompt": "Action when malware detected?" } | ||
| "scan_images": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Scan image uploads?" | ||
| }, | ||
| "scan_documents": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Scan document uploads (.pdf, .docx, etc.)?" | ||
| }, | ||
| "scan_archives": { | ||
| "type": "boolean", | ||
| "default": true, | ||
| "prompt": "Scan archive uploads (.zip, .tar.gz)?" | ||
| }, | ||
| "rule": { | ||
| "type": "enum", | ||
| "values": [ | ||
| "block", | ||
| "quarantine", | ||
| "tag" | ||
| ], | ||
| "default": "block", | ||
| "prompt": "Action when malware detected?" | ||
| } | ||
| }, | ||
| "docs_topic": "extensions#virus-malware-scanner" | ||
| "docs_topic": "moderation/rules-management" | ||
| }, | ||
| { | ||
| "id": "bitly", | ||
| "extension_id": "url-shortener-bitly", | ||
| "name": "Bitly URL Shortening", | ||
| "type": "extension", | ||
| "description": "Automatically shorten long URLs in messages using Bitly.", | ||
| "dashboard_path": "Extensions → Bitly → Toggle on", | ||
| "docs_topic": "extensions#bitly" | ||
| "dashboard_path": "Chat & Messaging → Features → Bitly → Toggle on", | ||
| "docs_topic": "extensions#bitly", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Bitly Key from Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -270,4 +571,8 @@ { | ||
| "description": "Show URL previews with title, description, and thumbnail. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Link Preview → Toggle on", | ||
| "docs_topic": "extensions#link-preview" | ||
| "dashboard_path": "Chat & Messaging → Features → Link Preview → Toggle on", | ||
| "docs_topic": "extensions#link-preview", | ||
| "tier": 2, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -279,4 +584,9 @@ { | ||
| "description": "Expand predefined short codes into full messages.", | ||
| "dashboard_path": "Extensions → Message Shortcuts → Configure shortcuts", | ||
| "docs_topic": "extensions#message-shortcuts" | ||
| "dashboard_path": "Chat & Messaging → Features → Message Shortcuts → Configure shortcuts", | ||
| "docs_topic": "extensions#message-shortcuts", | ||
| "tier": 5, | ||
| "code": "steps-in-docs", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure predefined templates at global level", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -288,12 +598,23 @@ { | ||
| "description": "Pin important messages for easy access.", | ||
| "dashboard_path": "Extensions → Pin Message → Toggle on", | ||
| "docs_topic": "extensions#pin-message" | ||
| "dashboard_path": "Chat & Messaging → Features → Pin Message → Toggle on", | ||
| "docs_topic": "extensions#pin-message", | ||
| "tier": 5, | ||
| "code": "steps-in-docs", | ||
| "builder": "code", | ||
| "dashboard_settings": null, | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
| { | ||
| "id": "rich-media-preview", | ||
| "extension_id": "rich-media", | ||
| "name": "Rich Media Preview", | ||
| "type": "extension", | ||
| "description": "Generate rich preview panels for URLs via iFramely.", | ||
| "dashboard_path": "Extensions → Rich Media Preview → Toggle on", | ||
| "docs_topic": "extensions#rich-media-preview" | ||
| "dashboard_path": "Chat & Messaging → Features → Rich Media Preview → Toggle on", | ||
| "docs_topic": "extensions#rich-media-preview", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "API Key", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -305,4 +626,9 @@ { | ||
| "description": "Bookmark messages privately for later.", | ||
| "dashboard_path": "Extensions → Save Message → Toggle on", | ||
| "docs_topic": "extensions#save-message" | ||
| "dashboard_path": "Chat & Messaging → Features → Save Message → Toggle on", | ||
| "docs_topic": "extensions#save-message", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": null, | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -315,12 +641,22 @@ { | ||
| "description": "Auto-generate thumbnails for shared media to reduce bandwidth. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Thumbnail Generation → Toggle on", | ||
| "docs_topic": "extensions#thumbnail-generation" | ||
| "dashboard_path": "Chat & Messaging → Features → Thumbnail Generation → Toggle on", | ||
| "docs_topic": "extensions#thumbnail-generation", | ||
| "tier": 2, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
| { | ||
| "id": "tinyurl", | ||
| "extension_id": "url-shortener-tinyurl", | ||
| "name": "TinyURL Shortening", | ||
| "type": "extension", | ||
| "description": "Shorten URLs using TinyURL service.", | ||
| "dashboard_path": "Extensions → TinyURL → Toggle on", | ||
| "docs_topic": "extensions#tinyurl" | ||
| "dashboard_path": "Chat & Messaging → Features → TinyURL → Toggle on", | ||
| "docs_topic": "extensions#tinyurl", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -332,4 +668,9 @@ { | ||
| "description": "Convert audio messages to text automatically.", | ||
| "dashboard_path": "Extensions → Voice Transcription → Toggle on", | ||
| "docs_topic": "extensions#voice-transcription" | ||
| "dashboard_path": "Chat & Messaging → Features → Voice Transcription → Toggle on", | ||
| "docs_topic": "extensions#voice-transcription", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -341,4 +682,9 @@ { | ||
| "description": "Search and share GIFs from Giphy.", | ||
| "dashboard_path": "Extensions → Giphy → Configure API key", | ||
| "docs_topic": "extensions#giphy" | ||
| "dashboard_path": "Chat & Messaging → Features → Giphy → Configure API key", | ||
| "docs_topic": "extensions#giphy", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -351,4 +697,8 @@ { | ||
| "description": "Translate messages into the user's locale. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Message Translation → Toggle on", | ||
| "docs_topic": "extensions#message-translation" | ||
| "dashboard_path": "Chat & Messaging → Features → Message Translation → Toggle on", | ||
| "docs_topic": "extensions#message-translation", | ||
| "tier": 2, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -361,4 +711,8 @@ { | ||
| "description": "Create polls in group discussions with preset answers. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Polls → Toggle on", | ||
| "docs_topic": "extensions#polls" | ||
| "dashboard_path": "Chat & Messaging → Features → Polls → Toggle on", | ||
| "docs_topic": "extensions#polls", | ||
| "tier": 2, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -370,4 +724,9 @@ { | ||
| "description": "Set message reminders or personal notifications via bot.", | ||
| "dashboard_path": "Extensions → Reminders → Toggle on", | ||
| "docs_topic": "extensions#reminders" | ||
| "dashboard_path": "Chat & Messaging → Features → Reminders → Toggle on", | ||
| "docs_topic": "extensions#reminders", | ||
| "tier": 5, | ||
| "code": "steps-in-docs", | ||
| "builder": "code", | ||
| "dashboard_settings": null, | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -380,4 +739,8 @@ { | ||
| "description": "Send pre-designed stickers in conversations. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Stickers → Toggle on", | ||
| "docs_topic": "extensions#stickers" | ||
| "dashboard_path": "Chat & Messaging → Features → Stickers → Toggle on", | ||
| "docs_topic": "extensions#stickers", | ||
| "tier": 4, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": "All the sticker need to be enable via API" | ||
| }, | ||
@@ -389,4 +752,9 @@ { | ||
| "description": "Integrates the Stipop sticker library.", | ||
| "dashboard_path": "Extensions → Stipop → Configure API key", | ||
| "docs_topic": "extensions#stipop" | ||
| "dashboard_path": "Chat & Messaging → Features → Stipop → Configure API key", | ||
| "docs_topic": "extensions#stipop", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -398,7 +766,13 @@ { | ||
| "description": "Search and share GIFs from Tenor.", | ||
| "dashboard_path": "Extensions → Tenor → Configure API key", | ||
| "docs_topic": "extensions#tenor" | ||
| "dashboard_path": "Chat & Messaging → Features → Tenor → Configure API key", | ||
| "docs_topic": "extensions#tenor", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
| { | ||
| "id": "collaborative-document", | ||
| "extension_id": "document", | ||
| "name": "Collaborative Document", | ||
@@ -408,7 +782,12 @@ "type": "extension", | ||
| "description": "Real-time shared document editing. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Collaborative Document → Toggle on", | ||
| "docs_topic": "extensions#collaborative-document" | ||
| "dashboard_path": "Chat & Messaging → Features → Collaborative Document → Toggle on", | ||
| "docs_topic": "extensions#collaborative-document", | ||
| "tier": 2, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
| { | ||
| "id": "collaborative-whiteboard", | ||
| "extension_id": "whiteboard", | ||
| "name": "Collaborative Whiteboard", | ||
@@ -418,4 +797,8 @@ "type": "extension", | ||
| "description": "Shared whiteboard for drawing and brainstorming. UI decorator auto-attached by the UI Kit (in defaultExtensions[]).", | ||
| "dashboard_path": "Extensions → Collaborative Whiteboard → Toggle on", | ||
| "docs_topic": "extensions#collaborative-whiteboard" | ||
| "dashboard_path": "Chat & Messaging → Features → Collaborative Whiteboard → Toggle on", | ||
| "docs_topic": "extensions#collaborative-whiteboard", | ||
| "tier": 2, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": null | ||
| }, | ||
@@ -427,4 +810,9 @@ { | ||
| "description": "Messages auto-delete after a specified interval.", | ||
| "dashboard_path": "Extensions → Disappearing Messages → Configure interval", | ||
| "docs_topic": "extensions#disappearing-messages" | ||
| "dashboard_path": "Chat & Messaging → Features → Disappearing Messages → Configure interval", | ||
| "docs_topic": "extensions#disappearing-messages", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": null, | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -436,4 +824,9 @@ { | ||
| "description": "Route messages to Chatwoot for customer support.", | ||
| "dashboard_path": "Extensions → Chatwoot → Configure webhook", | ||
| "docs_topic": "extensions#chatwoot" | ||
| "dashboard_path": "Chat & Messaging → Features → Chatwoot → Configure webhook", | ||
| "docs_topic": "extensions#chatwoot", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -445,4 +838,9 @@ { | ||
| "description": "Integrate Intercom for in-app customer support.", | ||
| "dashboard_path": "Extensions → Intercom → Configure API key", | ||
| "docs_topic": "extensions#intercom" | ||
| "dashboard_path": "Chat & Messaging → Features → Intercom → Configure API key", | ||
| "docs_topic": "extensions#intercom", | ||
| "tier": 5, | ||
| "code": "custom-code", | ||
| "builder": "code", | ||
| "dashboard_settings": "Configure Key on Dashboard", | ||
| "auto_wired_in_uikit": false | ||
| }, | ||
@@ -456,4 +854,8 @@ { | ||
| "description": "AI-generated opening messages for new chats.", | ||
| "dashboard_path": "AI Features → Conversation Starter → Toggle on", | ||
| "docs_topic": "ai-features#conversation-starter" | ||
| "dashboard_path": "Chat & Messaging → Features → Conversation Starter → Toggle on", | ||
| "docs_topic": "ai-features#conversation-starter", | ||
| "tier": 4, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": "Configure Key on Dashboard" | ||
| }, | ||
@@ -467,4 +869,8 @@ { | ||
| "description": "AI-generated contextual response suggestions.", | ||
| "dashboard_path": "AI Features → Smart Replies → Toggle on", | ||
| "docs_topic": "ai-features#smart-replies" | ||
| "dashboard_path": "Chat & Messaging → Features → Smart Replies → Toggle on", | ||
| "docs_topic": "ai-features#smart-replies", | ||
| "tier": 4, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": "Configure Key on Dashboard" | ||
| }, | ||
@@ -478,4 +884,8 @@ { | ||
| "description": "AI-generated recaps of extended conversations.", | ||
| "dashboard_path": "AI Features → Conversation Summary → Toggle on", | ||
| "docs_topic": "ai-features#conversation-summary" | ||
| "dashboard_path": "Chat & Messaging → Features → Conversation Summary → Toggle on", | ||
| "docs_topic": "ai-features#conversation-summary", | ||
| "tier": 4, | ||
| "code": "none", | ||
| "builder": "toggle", | ||
| "dashboard_settings": "Configure Key on Dashboard" | ||
| }, | ||
@@ -496,3 +906,7 @@ { | ||
| ], | ||
| "components": ["CometChatIncomingCall", "CometChatOutgoingCall", "CometChatCallLogs"], | ||
| "components": [ | ||
| "CometChatIncomingCall", | ||
| "CometChatOutgoingCall", | ||
| "CometChatCallLogs" | ||
| ], | ||
| "docs_topic": "call-features" | ||
@@ -513,6 +927,17 @@ }, | ||
| "type": "calls-feature", | ||
| "description": "Record calls to cloud storage. Built into Calls SDK; configured via CallSettingsBuilder. Server-side recording requires the Recording add-on enabled on your CometChat plan.", | ||
| "description": "Server-side call recording to cloud storage. Configured via CallSettingsBuilder (startRecordingOnCallStart, or call startRecording()/stopRecording() at runtime). ENABLEMENT IS NOT SELF-SERVICE: 'Recording must be enabled for your CometChat app — contact CometChat support' (plan add-on). There is no dashboard toggle / API call the CLI can flip. Recordings are then accessed via the Dashboard call logs or the Call Logs API.", | ||
| "settings_flag": "startRecordingOnCallStart", | ||
| "requires_dashboard_setup": true, | ||
| "enablement": "contact-support", | ||
| "reference_topic": "recording", | ||
| "platforms_supported": ["web", "react-native", "angular", "ios", "android-v5", "android-v6", "flutter-v5", "flutter-v6"], | ||
| "platforms_supported": [ | ||
| "web", | ||
| "react-native", | ||
| "angular", | ||
| "ios", | ||
| "android-v5", | ||
| "android-v6", | ||
| "flutter-v5", | ||
| "flutter-v6" | ||
| ], | ||
| "docs_topic": "calls/recording" | ||
@@ -524,6 +949,15 @@ }, | ||
| "type": "calls-feature", | ||
| "description": "Share screen during a call. Built into Calls SDK; configured via CallSettingsBuilder hideScreenShareButton flag. Mobile platforms have OS-level gating (iOS broadcast extension, Android MediaProjection).", | ||
| "settings_flag": "hideScreenShareButton", | ||
| "description": "Share screen during a call. Built into Calls SDK; the button shows by default — toggle via CallSettingsBuilder showScreenShareButton(bool) (default-mode / CometChatOngoingCall), or the session-settings object field hideScreenSharingButton (joinSession mode). Mobile platforms have OS-level gating (iOS broadcast extension, Android MediaProjection).", | ||
| "settings_flag": "showScreenShareButton", | ||
| "reference_topic": "screen-sharing", | ||
| "platforms_supported": ["web", "react-native", "angular", "ios", "android-v5", "android-v6", "flutter-v5", "flutter-v6"], | ||
| "platforms_supported": [ | ||
| "web", | ||
| "react-native", | ||
| "angular", | ||
| "ios", | ||
| "android-v5", | ||
| "android-v6", | ||
| "flutter-v5", | ||
| "flutter-v6" | ||
| ], | ||
| "docs_topic": "calls/screen-sharing" | ||
@@ -535,6 +969,9 @@ }, | ||
| "type": "calls-feature", | ||
| "description": "Blur or replace the user's background during a call. JavaScript-only feature — not available on iOS/Android/RN browsers (mobile webviews don't ship the ML Kit needed).", | ||
| "settings_flag": "hideVirtualBackgroundButton", | ||
| "description": "Blur or replace the user's background during a call. Toggle the control via CallSettingsBuilder showVirtualBackgroundSetting(bool); set a background with setVirtualBackground / enforceBackgroundBlur. JavaScript-only feature — not available on iOS/Android/RN browsers (mobile webviews don't ship the ML Kit needed).", | ||
| "settings_flag": "showVirtualBackgroundSetting", | ||
| "reference_topic": "virtual-background", | ||
| "platforms_supported": ["web", "angular"], | ||
| "platforms_supported": [ | ||
| "web", | ||
| "angular" | ||
| ], | ||
| "docs_topic": "calls/virtual-background" | ||
@@ -549,3 +986,12 @@ }, | ||
| "reference_topic": "raise-hand", | ||
| "platforms_supported": ["web", "react-native", "angular", "ios", "android-v5", "android-v6", "flutter-v5", "flutter-v6"], | ||
| "platforms_supported": [ | ||
| "web", | ||
| "react-native", | ||
| "angular", | ||
| "ios", | ||
| "android-v5", | ||
| "android-v6", | ||
| "flutter-v5", | ||
| "flutter-v6" | ||
| ], | ||
| "docs_topic": "calls/raise-hand" | ||
@@ -557,6 +1003,15 @@ }, | ||
| "type": "calls-feature", | ||
| "description": "Minimize an in-progress call into a floating window so the user can keep using the rest of your app (or other apps on mobile). Per-platform constraints — iOS PIP requires a multitasking-capable iPad or iOS 15+ iPhone, Android requires API 26+.", | ||
| "settings_flag": "hidePIPButton", | ||
| "description": "Minimize an in-progress call into a floating window so the user can keep using the rest of your app (or other apps on mobile). PIP is toggled via the STATIC methods CometChatCalls.enablePictureInPictureLayout() / disablePictureInPictureLayout() — NOT a CallSettingsBuilder/settings-object flag (there is no hidePIPButton). Per-platform constraints — iOS PIP requires a multitasking-capable iPad or iOS 15+ iPhone, Android requires API 26+.", | ||
| "settings_flag": "disablePictureInPictureLayout", | ||
| "reference_topic": "picture-in-picture", | ||
| "platforms_supported": ["web", "react-native", "angular", "ios", "android-v5", "android-v6", "flutter-v5", "flutter-v6"], | ||
| "platforms_supported": [ | ||
| "web", | ||
| "react-native", | ||
| "angular", | ||
| "ios", | ||
| "android-v5", | ||
| "android-v6", | ||
| "flutter-v5", | ||
| "flutter-v6" | ||
| ], | ||
| "docs_topic": "calls/picture-in-picture" | ||
@@ -568,6 +1023,15 @@ }, | ||
| "type": "calls-feature", | ||
| "description": "Auto-end a call after a configurable period of no activity. Prevents zombie calls + unbounded billing. Built into Calls SDK; configured via CallSettingsBuilder callIdleTime.", | ||
| "settings_flag": "callIdleTime", | ||
| "description": "Auto-end a call after a configurable period of no activity. Prevents zombie calls + unbounded billing. Configured via CallSettingsBuilder setIdleTimeoutPeriod(ms) (single period, default-mode), OR the session-settings object fields idleTimeoutPeriodBeforePrompt / idleTimeoutPeriodAfterPrompt in ms (joinSession mode; AfterPrompt has a 60_000ms minimum). There is NO callIdleTime.", | ||
| "settings_flag": "setIdleTimeoutPeriod", | ||
| "reference_topic": "idle-timeout", | ||
| "platforms_supported": ["web", "react-native", "angular", "ios", "android-v5", "android-v6", "flutter-v5", "flutter-v6"], | ||
| "platforms_supported": [ | ||
| "web", | ||
| "react-native", | ||
| "angular", | ||
| "ios", | ||
| "android-v5", | ||
| "android-v6", | ||
| "flutter-v5", | ||
| "flutter-v6" | ||
| ], | ||
| "docs_topic": "calls/idle-timeout" | ||
@@ -574,0 +1038,0 @@ } |
+1
-1
| { | ||
| "name": "@cometchat/skills-cli", | ||
| "version": "2.4.0", | ||
| "version": "2.4.1", | ||
| "description": "CLI for the CometChat skills v3 architecture — auth, provision, detect, apply, verify CometChat integrations in React/Next.js/React-Router/Astro/Expo/React-Native/Angular/Android/iOS/Flutter projects.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
Sorry, the diff of this file is too big to display
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
781850
4%16756
5.19%