@cometchat/skills 4.2.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -12
  3. package/bin/install.js +59 -4
  4. package/package.json +14 -1
  5. package/skills/cometchat/SKILL.md +460 -77
  6. package/skills/cometchat/references/asking-questions.md +48 -0
  7. package/skills/cometchat-a11y/SKILL.md +3 -2
  8. package/skills/cometchat-android-v5/SKILL.md +2 -1
  9. package/skills/cometchat-android-v5-calls/SKILL.md +36 -22
  10. package/skills/cometchat-android-v5-calls/references/README.md +1 -1
  11. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +7 -5
  12. package/skills/cometchat-android-v5-calls/references/audio-controls.md +4 -4
  13. package/skills/cometchat-android-v5-calls/references/call-layouts.md +33 -25
  14. package/skills/cometchat-android-v5-calls/references/call-session.md +2 -2
  15. package/skills/cometchat-android-v5-calls/references/custom-ui.md +5 -5
  16. package/skills/cometchat-android-v5-calls/references/event-listeners.md +2 -2
  17. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +20 -14
  18. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +1 -1
  19. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +43 -27
  20. package/skills/cometchat-android-v5-calls/references/participant-management.md +3 -3
  21. package/skills/cometchat-android-v5-calls/references/raise-hand.md +25 -19
  22. package/skills/cometchat-android-v5-calls/references/recording.md +2 -2
  23. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +1 -1
  24. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +5 -9
  25. package/skills/cometchat-android-v5-calls/references/session-settings.md +3 -3
  26. package/skills/cometchat-android-v5-calls/references/setup.md +1 -1
  27. package/skills/cometchat-android-v5-calls/references/share-invite.md +9 -4
  28. package/skills/cometchat-android-v5-calls/references/video-controls.md +4 -4
  29. package/skills/cometchat-android-v5-calls/references/voip-calling.md +2 -2
  30. package/skills/cometchat-android-v5-components/SKILL.md +4 -3
  31. package/skills/cometchat-android-v5-core/SKILL.md +20 -2
  32. package/skills/cometchat-android-v5-customization/SKILL.md +171 -7
  33. package/skills/cometchat-android-v5-extensions/SKILL.md +7 -4
  34. package/skills/cometchat-android-v5-features/SKILL.md +5 -4
  35. package/skills/cometchat-android-v5-placement/SKILL.md +2 -1
  36. package/skills/cometchat-android-v5-production/SKILL.md +2 -1
  37. package/skills/cometchat-android-v5-push/SKILL.md +2 -3
  38. package/skills/cometchat-android-v5-testing/SKILL.md +2 -1
  39. package/skills/cometchat-android-v5-theming/SKILL.md +2 -1
  40. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +3 -2
  41. package/skills/cometchat-android-v6/SKILL.md +2 -1
  42. package/skills/cometchat-android-v6-builder-settings/SKILL.md +11 -7
  43. package/skills/cometchat-android-v6-calls/SKILL.md +79 -18
  44. package/skills/cometchat-android-v6-calls/references/advanced-features.md +87 -0
  45. package/skills/cometchat-android-v6-calls/references/call-layouts.md +24 -15
  46. package/skills/cometchat-android-v6-calls/references/call-session.md +2 -2
  47. package/skills/cometchat-android-v6-calls/references/device-management.md +17 -16
  48. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +7 -4
  49. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +13 -8
  50. package/skills/cometchat-android-v6-calls/references/raise-hand.md +6 -4
  51. package/skills/cometchat-android-v6-compose-components/SKILL.md +52 -29
  52. package/skills/cometchat-android-v6-compose-customization/SKILL.md +156 -1
  53. package/skills/cometchat-android-v6-compose-placement/SKILL.md +129 -40
  54. package/skills/cometchat-android-v6-compose-theming/SKILL.md +27 -1
  55. package/skills/cometchat-android-v6-core/SKILL.md +389 -9
  56. package/skills/cometchat-android-v6-events/SKILL.md +4 -1
  57. package/skills/cometchat-android-v6-extensions/SKILL.md +2 -1
  58. package/skills/cometchat-android-v6-features/SKILL.md +26 -2
  59. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +31 -1
  60. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +172 -1
  61. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +20 -5
  62. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +36 -5
  63. package/skills/cometchat-android-v6-migration/SKILL.md +44 -42
  64. package/skills/cometchat-android-v6-production/SKILL.md +6 -3
  65. package/skills/cometchat-android-v6-push/SKILL.md +43 -2
  66. package/skills/cometchat-android-v6-testing/SKILL.md +11 -8
  67. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +26 -5
  68. package/skills/cometchat-angular-calls/SKILL.md +256 -389
  69. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +3 -2
  70. package/skills/cometchat-angular-calls/references/call-layouts.md +29 -12
  71. package/skills/cometchat-angular-calls/references/call-session.md +2 -2
  72. package/skills/cometchat-angular-calls/references/custom-ui.md +18 -10
  73. package/skills/cometchat-angular-calls/references/device-management.md +53 -34
  74. package/skills/cometchat-angular-calls/references/group-calls.md +45 -24
  75. package/skills/cometchat-angular-calls/references/idle-timeout.md +31 -15
  76. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +7 -6
  77. package/skills/cometchat-angular-calls/references/raise-hand.md +9 -4
  78. package/skills/cometchat-angular-calls/references/recording-screen-share.md +32 -39
  79. package/skills/cometchat-angular-calls/references/ringing-integration.md +3 -1
  80. package/skills/cometchat-angular-calls/references/share-invite.md +11 -5
  81. package/skills/cometchat-angular-calls/references/virtual-background.md +29 -0
  82. package/skills/cometchat-angular-components/SKILL.md +149 -620
  83. package/skills/cometchat-angular-core/SKILL.md +235 -293
  84. package/skills/cometchat-angular-customization/SKILL.md +415 -223
  85. package/skills/cometchat-angular-features/SKILL.md +216 -334
  86. package/skills/cometchat-angular-patterns/SKILL.md +168 -359
  87. package/skills/cometchat-angular-placement/SKILL.md +189 -560
  88. package/skills/cometchat-angular-production/SKILL.md +241 -92
  89. package/skills/cometchat-angular-push/SKILL.md +280 -294
  90. package/skills/cometchat-angular-testing/SKILL.md +430 -158
  91. package/skills/cometchat-angular-theming/SKILL.md +190 -265
  92. package/skills/cometchat-angular-troubleshooting/SKILL.md +192 -157
  93. package/skills/cometchat-astro-patterns/SKILL.md +22 -1
  94. package/skills/cometchat-calls/SKILL.md +25 -19
  95. package/skills/cometchat-calls/references/use-case-broadcast.md +15 -10
  96. package/skills/cometchat-calls/references/use-case-marketplace.md +2 -3
  97. package/skills/cometchat-calls/references/use-case-support.md +3 -4
  98. package/skills/cometchat-calls/references/use-case-team.md +23 -12
  99. package/skills/cometchat-calls/references/use-case-telehealth.md +3 -4
  100. package/skills/cometchat-components/SKILL.md +163 -25
  101. package/skills/cometchat-core/SKILL.md +412 -13
  102. package/skills/cometchat-customization/SKILL.md +50 -25
  103. package/skills/cometchat-features/SKILL.md +313 -34
  104. package/skills/cometchat-flutter-v5/SKILL.md +10 -4
  105. package/skills/cometchat-flutter-v5-calls/SKILL.md +188 -158
  106. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +48 -24
  107. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +20 -15
  108. package/skills/cometchat-flutter-v5-calls/references/call-session.md +100 -145
  109. package/skills/cometchat-flutter-v5-calls/references/device-management.md +12 -8
  110. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +30 -36
  111. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +15 -13
  112. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +12 -9
  113. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +115 -65
  114. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +41 -30
  115. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +17 -14
  116. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +8 -2
  117. package/skills/cometchat-flutter-v5-conversations/SKILL.md +2 -1
  118. package/skills/cometchat-flutter-v5-core/SKILL.md +20 -2
  119. package/skills/cometchat-flutter-v5-customization/SKILL.md +136 -5
  120. package/skills/cometchat-flutter-v5-events/SKILL.md +2 -1
  121. package/skills/cometchat-flutter-v5-messages/SKILL.md +2 -1
  122. package/skills/cometchat-flutter-v5-production/SKILL.md +15 -6
  123. package/skills/cometchat-flutter-v5-push/SKILL.md +2 -1
  124. package/skills/cometchat-flutter-v5-testing/SKILL.md +17 -6
  125. package/skills/cometchat-flutter-v5-theming/SKILL.md +2 -1
  126. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +7 -6
  127. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +3 -2
  128. package/skills/cometchat-flutter-v6/SKILL.md +17 -16
  129. package/skills/cometchat-flutter-v6-calls/SKILL.md +78 -63
  130. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +8 -6
  131. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +89 -0
  132. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +15 -12
  133. package/skills/cometchat-flutter-v6-calls/references/call-session.md +2 -2
  134. package/skills/cometchat-flutter-v6-calls/references/device-management.md +9 -3
  135. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +10 -10
  136. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +15 -7
  137. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +6 -3
  138. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +23 -16
  139. package/skills/cometchat-flutter-v6-components/SKILL.md +32 -11
  140. package/skills/cometchat-flutter-v6-conversations/SKILL.md +39 -11
  141. package/skills/cometchat-flutter-v6-core/SKILL.md +348 -10
  142. package/skills/cometchat-flutter-v6-customization/SKILL.md +97 -25
  143. package/skills/cometchat-flutter-v6-events/SKILL.md +3 -2
  144. package/skills/cometchat-flutter-v6-features/SKILL.md +15 -6
  145. package/skills/cometchat-flutter-v6-messages/SKILL.md +111 -60
  146. package/skills/cometchat-flutter-v6-migration/SKILL.md +18 -25
  147. package/skills/cometchat-flutter-v6-placement/SKILL.md +79 -50
  148. package/skills/cometchat-flutter-v6-production/SKILL.md +13 -12
  149. package/skills/cometchat-flutter-v6-push/SKILL.md +43 -21
  150. package/skills/cometchat-flutter-v6-testing/SKILL.md +6 -6
  151. package/skills/cometchat-flutter-v6-theming/SKILL.md +38 -5
  152. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +182 -17
  153. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +12 -4
  154. package/skills/cometchat-i18n/SKILL.md +139 -78
  155. package/skills/cometchat-ios/SKILL.md +4 -2
  156. package/skills/cometchat-ios-calls/SKILL.md +225 -95
  157. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +11 -9
  158. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +45 -0
  159. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +6 -7
  160. package/skills/cometchat-ios-calls/references/call-layouts.md +31 -91
  161. package/skills/cometchat-ios-calls/references/call-session.md +51 -54
  162. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +33 -29
  163. package/skills/cometchat-ios-calls/references/custom-ui.md +38 -38
  164. package/skills/cometchat-ios-calls/references/group-calls.md +33 -70
  165. package/skills/cometchat-ios-calls/references/idle-timeout.md +24 -25
  166. package/skills/cometchat-ios-calls/references/in-call-chat.md +19 -23
  167. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +128 -70
  168. package/skills/cometchat-ios-calls/references/picture-in-picture.md +20 -20
  169. package/skills/cometchat-ios-calls/references/raise-hand.md +14 -227
  170. package/skills/cometchat-ios-calls/references/recording-screen-share.md +35 -122
  171. package/skills/cometchat-ios-calls/references/ringing-integration.md +17 -16
  172. package/skills/cometchat-ios-calls/references/share-invite.md +8 -12
  173. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +4 -4
  174. package/skills/cometchat-ios-components/SKILL.md +200 -12
  175. package/skills/cometchat-ios-core/SKILL.md +281 -11
  176. package/skills/cometchat-ios-customization/SKILL.md +276 -110
  177. package/skills/cometchat-ios-features/SKILL.md +64 -36
  178. package/skills/cometchat-ios-placement/SKILL.md +15 -12
  179. package/skills/cometchat-ios-production/SKILL.md +12 -4
  180. package/skills/cometchat-ios-push/SKILL.md +53 -19
  181. package/skills/cometchat-ios-testing/SKILL.md +14 -9
  182. package/skills/cometchat-ios-theming/SKILL.md +39 -3
  183. package/skills/cometchat-ios-troubleshooting/SKILL.md +41 -21
  184. package/skills/cometchat-native-bare-patterns/SKILL.md +56 -18
  185. package/skills/cometchat-native-calls/SKILL.md +89 -19
  186. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +2 -2
  187. package/skills/cometchat-native-calls/references/call-layouts.md +15 -14
  188. package/skills/cometchat-native-calls/references/call-session.md +2 -2
  189. package/skills/cometchat-native-calls/references/custom-ui.md +12 -8
  190. package/skills/cometchat-native-calls/references/device-management.md +53 -30
  191. package/skills/cometchat-native-calls/references/group-calls.md +35 -30
  192. package/skills/cometchat-native-calls/references/idle-timeout.md +6 -6
  193. package/skills/cometchat-native-calls/references/in-call-chat.md +10 -8
  194. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +2 -2
  195. package/skills/cometchat-native-calls/references/raise-hand.md +15 -13
  196. package/skills/cometchat-native-calls/references/recording-screen-share.md +49 -170
  197. package/skills/cometchat-native-calls/references/share-invite.md +7 -5
  198. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +4 -2
  199. package/skills/cometchat-native-components/SKILL.md +91 -57
  200. package/skills/cometchat-native-core/SKILL.md +281 -9
  201. package/skills/cometchat-native-customization/SKILL.md +150 -28
  202. package/skills/cometchat-native-expo-patterns/SKILL.md +77 -27
  203. package/skills/cometchat-native-features/SKILL.md +79 -49
  204. package/skills/cometchat-native-placement/SKILL.md +19 -10
  205. package/skills/cometchat-native-production/SKILL.md +9 -3
  206. package/skills/cometchat-native-push/SKILL.md +2 -1
  207. package/skills/cometchat-native-testing/SKILL.md +1 -2
  208. package/skills/cometchat-native-theming/SKILL.md +54 -29
  209. package/skills/cometchat-native-troubleshooting/SKILL.md +71 -3
  210. package/skills/cometchat-nextjs-patterns/SKILL.md +48 -6
  211. package/skills/cometchat-placement/SKILL.md +42 -3
  212. package/skills/cometchat-production/SKILL.md +12 -5
  213. package/skills/cometchat-react-calls/SKILL.md +220 -10
  214. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +4 -3
  215. package/skills/cometchat-react-calls/references/call-layouts.md +5 -6
  216. package/skills/cometchat-react-calls/references/call-session.md +1 -1
  217. package/skills/cometchat-react-calls/references/custom-ui.md +61 -15
  218. package/skills/cometchat-react-calls/references/device-management.md +55 -51
  219. package/skills/cometchat-react-calls/references/group-calls.md +18 -23
  220. package/skills/cometchat-react-calls/references/idle-timeout.md +25 -12
  221. package/skills/cometchat-react-calls/references/in-call-chat.md +7 -7
  222. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +9 -11
  223. package/skills/cometchat-react-calls/references/raise-hand.md +14 -14
  224. package/skills/cometchat-react-calls/references/recording-screen-share.md +39 -38
  225. package/skills/cometchat-react-calls/references/ringing-integration.md +2 -2
  226. package/skills/cometchat-react-calls/references/share-invite.md +4 -5
  227. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +20 -2
  228. package/skills/cometchat-react-calls/references/virtual-background.md +32 -0
  229. package/skills/cometchat-react-patterns/SKILL.md +57 -4
  230. package/skills/cometchat-react-push/SKILL.md +258 -72
  231. package/skills/cometchat-react-router-patterns/SKILL.md +43 -4
  232. package/skills/cometchat-react-testing/SKILL.md +14 -5
  233. package/skills/cometchat-theming/SKILL.md +181 -18
  234. package/skills/cometchat-troubleshooting/SKILL.md +40 -20
@@ -1,435 +1,309 @@
1
1
  ---
2
2
  name: cometchat-angular-features
3
- description: "Feature catalog for Angular calls (separate SDK), extensions (polls / stickers / translation / link preview / collaborative doc / whiteboard), AI features (smart replies / conversation summary / conversation starter), AI agent. Six-bucket taxonomy: default / extension / ai-feature / dashboard-only / package-install / component-swap."
3
+ description: "Feature catalog for CometChat Angular UI Kit v5 (@cometchat/chat-uikit-angular@5) how to enable/configure calls, reactions, mentions, AI (smart replies / conversation starter / summary), polls, stickers, collaborative doc/whiteboard, message translation, link preview. Five-bucket taxonomy: auto-enabled / component-prop / dashboard-extension / AI-with-OpenAI-key / package-install (calls). Verified @Input names against the v5 .d.ts."
4
4
  license: "MIT"
5
- compatibility: "Angular >=12 <=15; @cometchat/chat-uikit-angular ^4; @cometchat/chat-sdk-javascript ^4"
6
- allowed-tools: "shell, file-read, file-search, file-list, ask-user"
5
+ compatibility: "Angular >=17 <22; @cometchat/chat-uikit-angular ^5.0; @cometchat/calls-sdk-javascript ^5.0 (calls)"
7
6
  metadata:
8
7
  author: "CometChat"
9
- version: "3.0.0"
10
- tags: "cometchat angular features calls extensions ai polls stickers"
8
+ version: "4.0.0"
9
+ tags: "cometchat angular features calls reactions mentions ai polls stickers extensions v5"
11
10
  ---
12
11
 
13
12
  ## Purpose
14
13
 
15
- Teaches Claude how to add features on top of a working CometChat Angular integration. Classifies each feature into one of four types and gives the correct recipe for each.
14
+ Teaches Claude how to add features on top of a working CometChat **Angular UI Kit v5** (`@cometchat/chat-uikit-angular@5`) integration. Each feature falls into exactly one of five categories; this skill gives the correct recipe for each and — critically — names the precise component `@Input` you flip, every one of which is **verified against the v5 component catalog / `.d.ts`**.
16
15
 
17
- **Read `cometchat-angular-core` + `cometchat-angular-components` + `cometchat-angular-patterns` first** — a base integration must already exist before features layer on.
16
+ **Read `cometchat-angular-core` + `cometchat-angular-components` first** — a base v5 integration (standalone components, `UIKitSettingsBuilder` init, `login(uid)` bare string, CSS-variable theming) must already exist before features layer on. For the full voice/video call flow, read `cometchat-angular-calls`.
18
17
 
19
- Ground truth: `docs/ui-kit/angular/core-features`, `docs/ui-kit/angular/calling-integration`, `docs/ui-kit/angular/extensions`, `docs/ui-kit/angular/guide-ai-agent`, and `@cometchat/chat-uikit-angular@4.x` exports.
18
+ Ground truth: `@cometchat/chat-uikit-angular@5.0.2` source (component `@Input`/`@Output` declarations in `projects/cometchat-uikit/src/lib/components/**`) + `docs/ui-kit/angular`. **Never invent a component `@Input`** — every prop cited here is verified against the v5 component source.
20
19
 
21
20
  ---
22
21
 
23
22
  ## 1. Feature taxonomy
24
23
 
25
- Every CometChat feature falls into exactly one of four categories:
24
+ Every CometChat Angular v5 feature falls into exactly one of these five **mechanism** categories — they tell you *how* to wire each feature (the actionable Angular view), and map onto the product's canonical **5-tier "work-needed" model** (Core Zero-Setup → Builder-Enabled → Config-Only → Config+Settings → SDK-Integrated; see `cometchat-features` §3 + `packages/registry/v6/features/catalog.json`; canonical public matrix → [Features & Extensions Guide](https://www.cometchat.com/docs/fundamentals/features-and-extensions-guide), which outranks this snapshot on conflict): Auto-enabled ≈ Core; Component-prop ≈ Core/Config; Dashboard-extension ≈ Config-Only; AI-with-OpenAI-key ≈ Config+Settings; Package-install ≈ SDK-Integrated:
26
25
 
27
26
  | Category | What it means | Example features | How to enable |
28
27
  |---|---|---|---|
29
- | **Default** | Already on — no action needed. Shipped with the kit's base components. | Instant messaging, typing indicators, read receipts, reactions, replies, @mentions, media upload, edit/delete, message info | Just render `<cometchat-message-header>` + `<cometchat-message-list>` + `<cometchat-message-composer>` |
30
- | **Extension** | Boolean backend toggle. CLI flips it via the dashboard API. UI Kit auto-wires once enabled. | Polls, stickers, message translation, link preview, collaborative doc/whiteboard, thumbnail generation | `cometchat apply-feature <id> --app-id <X>` hard-reload |
31
- | **AI feature** | Backend AI toggle that requires an OpenAI API key. CLI sets the key + flips the toggle. | Smart replies, conversation summary, conversation starter | `cometchat apply-feature smart-replies --app-id <X> --openai-key sk-…` |
32
- | **Dashboard-only** | Third-party API key / multi-field config the user has to supply. CLI cannot automate. | Giphy, Stipop, Tenor, Chatwoot, Intercom, Disappearing Messages, Message Shortcuts | Open https://app.cometchat.comExtensions |
33
- | **Package-install** | Install an additional npm package. The UI Kit auto-detects the package on next init. | Voice + video calls (`@cometchat/calls-sdk-javascript`) | `npm install ...` rebuild |
34
- | **Component-swap** | Replace or wrap a UI Kit component with a customized version. | Custom text formatter, custom message templates, AI Agent chat history | Write a new component + pass via Angular input |
28
+ | **Auto-enabled** | Already on — shipped compiled into the kit's base components. The only question is whether a hide flag is turning it off. | Instant messaging, typing indicators, read receipts, **reactions**, replies, threads, media upload, edit/delete, message info, presence | Just render `<cometchat-message-header>` + `<cometchat-message-list>` + `<cometchat-message-composer>` |
29
+ | **Component-prop** | Present in the kit but surfaced via a component `@Input` you set. | **@mentions** (`textFormatters`), AI smart replies / conversation starters / summary (`@Input`s on message-list + message-header) | Set the verified `@Input` (§2, §4) |
30
+ | **Dashboard-extension** | Backend toggle enabled in the CometChat dashboard (or via the `cometchat apply-feature` CLI). The kit auto-renders the matching UI once enabled. | Polls, stickers, collaborative doc/whiteboard, message translation, link preview, thumbnail generation | `cometchat apply-feature <id> --app-id <X>` → hard-reload (§3) |
31
+ | **AI-with-OpenAI-key** | Dashboard AI toggle that also needs an OpenAI API key on the app, **then** a component `@Input` to surface it. | Smart replies, conversation starter, conversation summary | `cometchat apply-feature <id> --app-id <X> --openai-key sk-…` set the message-list / header `@Input` (§4) |
32
+ | **Package-install (calls)** | Install the separate calls SDK + enable calling on the builder. The kit's call components then work. | Voice + video calls, call logs | `npm install @cometchat/calls-sdk-javascript@^5` + `.setCallingEnabled(true)` see `cometchat-angular-calls` (§5) |
35
33
 
36
- ---
37
-
38
- ## 2. Enabling extension and AI features (`apply-feature`)
39
-
40
- Angular projects don't go through `cometchat apply` (no `.cometchat/state.json`), so always pass `--app-id <id>` explicitly. The CLI hits the dashboard API using the bearer from `cometchat auth login`.
41
-
42
- ### Extension features
34
+ > The `cometchat apply-feature <id>` CLI and the dashboard toggles are **not code symbols** — they configure the backend. The code-side work for dashboard-extension features is usually zero; for component-prop and AI features it's a single `@Input`.
43
35
 
44
- ```bash
45
- cometchat apply-feature polls --app-id <your-app-id>
46
- cometchat apply-feature link-preview --app-id <your-app-id>
47
- ```
36
+ ---
48
37
 
49
- ### AI features (smart replies, conversation summary, conversation starter)
38
+ ## 2. Auto-enabled features (no work) + the two component-prop ones
50
39
 
51
- These need an OpenAI API key on the app. The CLI sets the key + flips the toggle in one call:
40
+ ### Already on from day 1 no feature-enabling step
52
41
 
53
- ```bash
54
- cometchat apply-feature smart-replies --app-id <your-app-id> --openai-key sk-...
55
- ```
42
+ Rendering the three messaging components gives you all of these for free:
56
43
 
57
- The key is stored on the app once, so subsequent ai-feature applies don't need `--openai-key` repeated. Get one at https://platform.openai.com/api-keys.
44
+ - **Instant messaging** (text, real-time delivery)
45
+ - **Media sharing** (images, video, audio, files)
46
+ - **Read receipts** (sent / delivered / read ticks)
47
+ - **Typing indicators**
48
+ - **Reactions** — on by default in `<cometchat-message-list>`. Click any message → emoji reaction. To turn it off, set `[hideReactionOption]="true"` (verified hide flag on the message list).
49
+ - **Replies** / **threads** (`hideReplyOption`, `hideReplyInThreadOption` to hide)
50
+ - **Edit / delete** own messages (`hideEditMessageOption`, `hideDeleteMessageOption`)
51
+ - **Message info** (`hideMessageInfoOption`)
52
+ - **Voice messages** (record + send from composer; `hideVoiceRecordingButton` to hide)
53
+ - **User presence** (online/offline status indicators render on avatars in `<cometchat-conversations>`, `<cometchat-users>`, `<cometchat-group-members>` by default — there is no per-list presence-hide `@Input` in v5; the only `hideUserStatus` flag lives on `<cometchat-search>`)
54
+ - **Search** — `<cometchat-users>` and `<cometchat-groups>` render a search bar by default; set `[hideSearch]="true"` to remove it (verified hide flag, default `false`). `<cometchat-conversations>` is the inverse: it has a **`[showSearchBar]` `@Input`** (default `false` — search hidden), so set `[showSearchBar]="true"` to show it; it also exposes a `[searchView]` template slot for a fully custom search surface.
58
55
 
59
- ### Response shapes
56
+ These need **no install and no toggle**. If a customer reports one "missing," the cause is almost always a `hide*` input set to `true` somewhere — grep the templates first.
60
57
 
61
- - `"status": "applied"` done. Hard-reload the Angular dev server.
62
- - `"status": "already-applied"` → already in the desired state.
63
- - `"status": "auth-required"` → `cometchat auth login` first.
64
- - `"status": "openai-key-required"` → re-run with `--openai-key sk-…`.
65
- - `"status": "manual-action-required"` → dashboard-only feature (Giphy, Stipop, Tenor, Chatwoot, Intercom, message-shortcuts, disappearing-messages). Surface `next_steps` verbatim — these need third-party config.
66
- - `"status": "error"` → surface `next_steps`.
58
+ ### Mentions (`@mentions`) component-prop
67
59
 
68
- ### Dashboard fallback
60
+ Mentions are not auto-on; they surface only when you pass a `CometChatMentionsFormatter` into the verified `textFormatters` `@Input` (which exists on `<cometchat-message-list>`, `<cometchat-message-composer>`, and `<cometchat-conversations>`):
69
61
 
70
- Only when the CLI returns `error` or isn't available:
71
- 1. https://app.cometchat.com → your app
72
- 2. Chat & Messaging Features
73
- 3. Find the extension by name → flip Status ON
74
- 4. Hard-reload the Angular app (`ng serve` restart or browser refresh)
75
-
76
- ### What each toggle does
62
+ ```typescript
63
+ // chat.component.ts
64
+ import { Component } from "@angular/core";
65
+ import {
66
+ CometChatMessageListComponent,
67
+ CometChatMessageComposerComponent,
68
+ CometChatMentionsFormatter,
69
+ } from "@cometchat/chat-uikit-angular";
70
+ import { CometChat } from "@cometchat/chat-sdk-javascript";
77
71
 
78
- | Extension | UI surface when enabled |
79
- |---|---|
80
- | Polls | Polls option in `<cometchat-message-composer>`'s attachment menu |
81
- | Stickers | Sticker picker in the composer |
82
- | Smart replies | Chip suggestions above the composer input after an incoming message |
83
- | Message translation | "Translate" option in the message long-press menu |
84
- | Link preview | Rich-card bubble for URLs in the message list |
85
- | Collaborative document | Option in composer's attachment menu; opens a shared doc on click |
86
- | Collaborative whiteboard | Option in composer's attachment menu; opens a shared canvas |
87
- | Thumbnail generation | Image / video bubbles show thumbnails instead of full-size downloads |
88
-
89
- ### Gotcha `auto_wired_in_uikit: false`
90
-
91
- A minority of extensions need extra wiring via the `extensions` field on `UIKitSettingsBuilder`. The CLI flags this in its success response:
92
-
93
- ```json
94
- {
95
- "status": "enabled",
96
- "name": "stickers",
97
- "auto_wired_in_uikit": false,
98
- "next_steps": ["Pass the extension via the extensions field on UIKitSettingsBuilder"]
72
+ @Component({
73
+ selector: "app-chat",
74
+ standalone: true,
75
+ imports: [CometChatMessageListComponent, CometChatMessageComposerComponent],
76
+ template: `
77
+ <cometchat-message-list [user]="user" [textFormatters]="formatters"></cometchat-message-list>
78
+ <cometchat-message-composer [user]="user" [textFormatters]="formatters"></cometchat-message-composer>
79
+ `,
80
+ })
81
+ export class ChatComponent {
82
+ @Input() user!: CometChat.User;
83
+ // Pass the SAME formatter array to list + composer so typed @mentions render consistently
84
+ formatters = [new CometChatMentionsFormatter()];
99
85
  }
100
86
  ```
101
87
 
102
- If `auto_wired_in_uikit` is `false`, import the matching `ExtensionsDataSource` and pass it via `.setExtensions()` on the builder:
88
+ - `@all` mentions: the composer enables mention-all by default; set `[disableMentionAll]="true"` to suppress it (verified composer hide flag).
89
+ - To disable mentions entirely, set `[disableMentions]="true"` on the composer instead of omitting the formatter.
103
90
 
104
- ```typescript
105
- import { UIKitSettingsBuilder } from "@cometchat/uikit-shared";
106
- import { StickersExtension, PollsExtension } from "@cometchat/chat-uikit-angular";
107
-
108
- const settings = new UIKitSettingsBuilder()
109
- .setAppId(APP_ID)
110
- .setRegion(REGION)
111
- .setAuthKey(AUTH_KEY)
112
- .setExtensions([new StickersExtension(), new PollsExtension()])
113
- .build();
114
- ```
91
+ > **Why a formatter, not a toggle?** Mentions are a text-rendering concern. `CometChatMentionsFormatter` (verified export) is a `CometChatTextFormatter` subclass; the kit runs it over message text in the list and over input in the composer.
115
92
 
116
93
  ---
117
94
 
118
- ## 3. Calls (package-install)
95
+ ## 3. Dashboard-extension features (polls, stickers, collaborative, translation, link preview)
96
+
97
+ These are backend extensions. Enable each in the **CometChat dashboard**, or via the cross-family CLI. The components auto-render the result — usually **zero code**.
119
98
 
120
- Calls require the separate `@cometchat/calls-sdk-javascript` package.
99
+ ### Enable via the CLI (preferred — no browser)
121
100
 
122
- ### 3a Install the calls SDK
101
+ Angular projects don't go through `cometchat apply` (no `.cometchat/state.json`), so always pass `--app-id <id>` explicitly. The CLI hits the dashboard API using the bearer from `cometchat auth login`:
123
102
 
124
103
  ```bash
125
- npm install @cometchat/calls-sdk-javascript
104
+ cometchat apply-feature polls --app-id <your-app-id>
105
+ cometchat apply-feature stickers --app-id <your-app-id>
106
+ cometchat apply-feature message-translation --app-id <your-app-id>
107
+ cometchat apply-feature link-preview --app-id <your-app-id>
108
+ cometchat apply-feature collaborative-document --app-id <your-app-id>
109
+ cometchat apply-feature collaborative-whiteboard --app-id <your-app-id>
126
110
  ```
127
111
 
128
- No native peer deps needed for web (unlike React Native). Rebuild the Angular app after installing.
112
+ `cometchat apply-feature` and the dashboard toggles configure the **backend**; they are not code symbols.
129
113
 
130
- ### 3b — Register the call listener at the app root
114
+ **Response shapes (`--json`):**
115
+ - `"status": "applied"` → done. Hard-reload the Angular dev server (`ng serve` restart or browser refresh).
116
+ - `"status": "already-applied"` → already in the desired state.
117
+ - `"status": "auth-required"` → run `cometchat auth login` first.
118
+ - `"status": "manual-action-required"` → a third-party-config extension (Giphy, Stipop, Tenor, Chatwoot, Intercom, Disappearing Messages, Message Shortcuts). The CLI can't automate these — surface `next_steps` verbatim and walk the user through the dashboard.
119
+ - `"status": "error"` → surface `next_steps`.
131
120
 
132
- The incoming-call UI only shows up if you've registered a listener. Add this to `AppComponent`:
121
+ ### Enable via the dashboard (fallback)
133
122
 
134
- ```typescript
135
- // app.component.ts
136
- import { Component, OnInit, OnDestroy } from "@angular/core";
137
- import { CometChat } from "@cometchat/chat-sdk-javascript";
138
- import { CometChatIncomingCall } from "@cometchat/chat-uikit-angular";
123
+ 1. https://app.cometchat.com → your app
124
+ 2. Chat & Messaging → Features
125
+ 3. Find the extension by name flip Status ON
126
+ 4. Hard-reload the Angular app
139
127
 
140
- @Component({
141
- selector: "app-root",
142
- template: `
143
- <router-outlet></router-outlet>
144
- <cometchat-incoming-call
145
- *ngIf="incomingCall"
146
- [call]="incomingCall"
147
- [onAccept]="handleAccept"
148
- [onDecline]="handleDecline"
149
- ></cometchat-incoming-call>
150
- `,
151
- })
152
- export class AppComponent implements OnInit, OnDestroy {
153
- incomingCall: CometChat.Call | null = null;
154
- private readonly LISTENER_ID = "APP_CALL_LISTENER";
155
-
156
- ngOnInit(): void {
157
- CometChat.addCallListener(
158
- this.LISTENER_ID,
159
- new CometChat.CallListener({
160
- onIncomingCallReceived: (call: CometChat.Call) => {
161
- this.incomingCall = call;
162
- },
163
- onOutgoingCallAccepted: () => {
164
- // navigate to ongoing-call route
165
- },
166
- onOutgoingCallRejected: () => {
167
- this.incomingCall = null;
168
- },
169
- onIncomingCallCancelled: () => {
170
- this.incomingCall = null;
171
- },
172
- onCallEndedMessageReceived: () => {
173
- this.incomingCall = null;
174
- },
175
- })
176
- );
177
- }
178
-
179
- ngOnDestroy(): void {
180
- CometChat.removeCallListener(this.LISTENER_ID);
181
- }
182
-
183
- handleAccept = (call: CometChat.Call): void => {
184
- this.incomingCall = null;
185
- // navigate to /ongoing-call
186
- };
187
-
188
- handleDecline = (): void => {
189
- this.incomingCall = null;
190
- };
191
- }
192
- ```
128
+ ### Where each toggle surfaces in the v5 UI
193
129
 
194
- ### 3c Call buttons in the message header
130
+ | Extension | UI surface when enabled | Related verified hide flag (to suppress) |
131
+ |---|---|---|
132
+ | Polls | "Poll" option in `<cometchat-message-composer>`'s attachment menu; poll bubble in the list | `hidePollsOption` (composer) |
133
+ | Stickers | Sticker button in the composer; sticker bubble in the list | `hideStickersButton` (composer) |
134
+ | Collaborative document | Option in the composer attachment menu; opens a shared doc | `hideCollaborativeDocumentOption` (composer) |
135
+ | Collaborative whiteboard | Option in the composer attachment menu; opens a shared canvas | `hideCollaborativeWhiteboardOption` (composer) |
136
+ | Message translation | "Translate" option in the message context menu | `hideTranslateMessageOption` (message list) |
137
+ | Link preview | Rich-card bubble for URLs in the message list | — |
138
+ | Thumbnail generation | Image/video bubbles show thumbnails | — |
195
139
 
196
- Once the calls SDK is installed, add `<cometchat-call-buttons>` to the message header's `[menu]` slot:
140
+ These are real, verified `@Input` hide flags on the v5 components the feature *renders by default once the dashboard toggle is on*; you only touch a flag if you want to hide it.
197
141
 
198
- ```html
199
- <!-- messages.component.html -->
200
- <cometchat-message-header
201
- [user]="selectedUser"
202
- [menu]="callButtonsTemplate"
203
- ></cometchat-message-header>
142
+ After enabling, run `cometchat verify --json` and hard-reload. No code changes are needed for the auto-wired subset above.
204
143
 
205
- <ng-template #callButtonsTemplate>
206
- <cometchat-call-buttons
207
- [user]="selectedUser"
208
- [onVoiceCallClick]="handleVoiceCall"
209
- [onVideoCallClick]="handleVideoCall"
210
- ></cometchat-call-buttons>
211
- </ng-template>
212
- ```
144
+ ---
213
145
 
214
- ### 3dOngoing call
146
+ ## 4. AI features dashboard toggle + OpenAI key + one component `@Input`
215
147
 
216
- Mount `<cometchat-ongoing-call>` with the session ID. To detect when the call ends, subscribe to `CometChatCallEvents.ccCallEnded` from the event bus there is no `(onCallEnded)` output on the component:
148
+ `smart-replies`, `conversation-starter`, and `conversation-summary` are AI features. Two steps: (1) enable on the backend with an OpenAI key, (2) surface with the verified component `@Input`.
217
149
 
218
- ```typescript
219
- // ongoing-call.component.ts
220
- import { CometChatCallEvents } from "@cometchat/chat-uikit-angular";
150
+ ### 4a — Enable on the backend (one CLI call)
221
151
 
222
- @Component({
223
- selector: "app-ongoing-call",
224
- standalone: true,
225
- imports: [CometChatOngoingCall],
226
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
227
- template: `
228
- <cometchat-ongoing-call
229
- [sessionID]="sessionId"
230
- ></cometchat-ongoing-call>
231
- `,
232
- })
233
- export class OngoingCallComponent implements OnInit, OnDestroy {
234
- sessionId = "";
235
- private callEndedSub: any;
236
-
237
- constructor(private route: ActivatedRoute, private router: Router) {}
238
-
239
- ngOnInit(): void {
240
- this.sessionId = this.route.snapshot.queryParamMap.get("sessionId") ?? "";
241
- // Subscribe to call-ended event via the event bus
242
- this.callEndedSub = (CometChatCallEvents.ccCallEnded as any).subscribe(() => {
243
- this.router.navigate(["/conversations"]);
244
- });
245
- }
246
-
247
- ngOnDestroy(): void {
248
- this.callEndedSub?.unsubscribe();
249
- }
250
- }
251
- ```
152
+ The CLI sets the OpenAI key on the app and flips the toggle together:
252
153
 
253
- ### 3e — Call logs
254
-
255
- ```html
256
- <cometchat-call-logs
257
- [onItemClick]="openCallDetails"
258
- ></cometchat-call-logs>
154
+ ```bash
155
+ cometchat apply-feature smart-replies --app-id <your-app-id> --openai-key sk-...
156
+ cometchat apply-feature conversation-starter --app-id <your-app-id> --openai-key sk-...
157
+ cometchat apply-feature conversation-summary --app-id <your-app-id> --openai-key sk-...
259
158
  ```
260
159
 
261
- > **`[onItemClick]` is an `@Input()` callback** use square brackets, not round brackets.
160
+ The key is stored on the app once, so subsequent AI applies don't need `--openai-key` repeated. `"status": "openai-key-required"` re-run with `--openai-key sk-…`. Get a key: https://platform.openai.com/api-keys.
262
161
 
263
- ---
162
+ ### 4b — Surface smart replies + conversation starters (message-list `@Input`s)
264
163
 
265
- ## 4. AI Agent (dashboard setup required)
164
+ These are **verified `@Input`s on `<cometchat-message-list>`** (confirmed in the v5 `.d.ts`):
266
165
 
267
- ### 4a — Dashboard setup
268
-
269
- 1. https://app.cometchat.com → your app → AI → Agents
270
- 2. Create a new agent (name, system prompt, model)
271
- 3. Assign a UID to the agent (e.g. `ai-support-agent`)
166
+ ```html
167
+ <cometchat-message-list
168
+ [user]="selectedUser"
169
+ [showSmartReplies]="true"
170
+ [showConversationStarters]="true"
171
+ [smartRepliesKeywords]="['help', 'pricing']"
172
+ [smartRepliesDelayDuration]="2000">
173
+ </cometchat-message-list>
174
+ ```
272
175
 
273
- Once the agent exists, users can message it like any other user.
176
+ - `showSmartReplies` (boolean) renders smart-reply chips after a recent incoming message.
177
+ - `showConversationStarters` (boolean) — renders starter suggestions when the conversation is empty.
178
+ - `smartRepliesKeywords` (`string[]`) — only show smart replies when the incoming message contains one of these keywords. Defaults to `['what', 'when', 'why', 'who', 'where', 'how', '?']` in v5 — set your own array to narrow it.
179
+ - `smartRepliesDelayDuration` (number, ms) — debounce before chips appear (v5 default `10000`).
274
180
 
275
- ### 4bChatting with the AI agent
181
+ `<cometchat-message-list>` also exposes the `(smartReplyClick)` and `(conversationStarterClick)` `@Output`s (each emits the selected reply `string`) if you want to observe selection. (There are also standalone `<cometchat-smart-replies>` and `<cometchat-conversation-starter>` components verified exports under `base-elements/` — but the message-list `@Input`s are the idiomatic path.)
276
182
 
277
- The Angular v4 UIKit does **not** ship a dedicated AI assistant component (`<cometchat-ai-assistant-chat-history>` is React v6 only). To chat with an AI agent, use the standard message components targeted at the agent's UID:
183
+ ### 4c Surface conversation summary (message-header `@Input`s)
278
184
 
279
- ```typescript
280
- // Fetch the AI agent as a CometChat.User
281
- CometChat.getUser("ai-support-agent").then((agentUser) => {
282
- this.aiAgent = agentUser;
283
- });
284
- ```
185
+ Conversation summary is driven by **verified `@Input`s on `<cometchat-message-header>`**:
285
186
 
286
187
  ```html
287
- <!-- Standard message view pointed at the AI agent UID -->
288
- <cometchat-message-header [user]="aiAgent"></cometchat-message-header>
289
- <cometchat-message-list [user]="aiAgent"></cometchat-message-list>
290
- <cometchat-message-composer [user]="aiAgent"></cometchat-message-composer>
188
+ <cometchat-message-header
189
+ [user]="selectedUser"
190
+ [showConversationSummaryButton]="true"
191
+ [enableAutoSummaryGeneration]="true"
192
+ [summaryGenerationMessageCount]="50"
193
+ (conversationSummaryClick)="onSummary($event)">
194
+ </cometchat-message-header>
291
195
  ```
292
196
 
293
- Smart Replies, Conversation Starter, and Conversation Summary AI features surface automatically in the composer and message list once enabled in the dashboard — no extra component needed.
294
-
295
- ---
197
+ - `showConversationSummaryButton` (boolean, default `false`) shows the "Summarize" button in the header.
198
+ - `enableAutoSummaryGeneration` (boolean, default `false`) — auto-generate a summary once the message count crosses the threshold.
199
+ - `summaryGenerationMessageCount` (number, **v5 default `1000`**) — the message-count threshold that triggers auto-summary. Lower it (e.g. `50`) to summarize sooner.
200
+ - `(conversationSummaryClick)` — `@Output` fired when the summary button is clicked; emits `{ messageCount: number }` (type the `$event` accordingly).
296
201
 
297
- ## 5b. Deep patterns for three most-requested features
202
+ > The standalone `<cometchat-conversation-summary>` component (verified `@Input`s `getConversationSummary: () => Promise<string>` and `closeCallback: () => void`) is for fully custom summary UIs. For the standard flow, the header `@Input`s above are all you need.
298
203
 
299
- ### Calls — custom call listener
204
+ ### 4dReading smart-reply metadata for a fully custom UI
300
205
 
301
- After installing `@cometchat/calls-sdk-javascript`, call buttons auto-appear. For custom call state handling:
206
+ If you render your own chips instead of using `showSmartReplies`, read the server-injected metadata off the incoming message (the AI runs on CometChat's backend, not in your code):
302
207
 
303
208
  ```typescript
304
- // In AppComponent — register once at the root
305
- CometChat.addCallListener(
306
- "APP_CALL_LISTENER",
307
- new CometChat.CallListener({
308
- onIncomingCallReceived: (call: CometChat.Call) => { this.incomingCall = call; },
309
- onOutgoingCallAccepted: (call: CometChat.Call) => {
310
- this.outgoingCall = null;
311
- this.ongoingSessionId = call.getSessionId();
312
- },
313
- onOutgoingCallRejected: () => { this.outgoingCall = null; },
314
- onIncomingCallCancelled: () => { this.incomingCall = null; },
315
- onCallEndedMessageReceived: () => {
316
- this.incomingCall = null;
317
- this.outgoingCall = null;
318
- this.ongoingSessionId = null;
319
- },
320
- })
321
- );
322
- ```
323
-
324
- ### Smart replies — reading extension metadata
325
-
326
- After enabling Smart Replies in the dashboard, the UI Kit auto-renders chips above the composer. For a custom UI, read the metadata from the incoming message:
327
-
328
- ```typescript
329
- // In a message event subscription or custom message template:
330
209
  const metadata = message.getMetadata() as Record<string, any>;
331
- const smartReply = metadata?.['@injected']?.['extensions']?.['smart-reply'];
332
-
210
+ const smartReply = metadata?.["@injected"]?.["extensions"]?.["smart-reply"];
333
211
  if (smartReply) {
334
212
  const replies = [
335
213
  smartReply.reply_positive,
336
214
  smartReply.reply_neutral,
337
215
  smartReply.reply_negative,
338
216
  ].filter(Boolean);
339
- // Render reply chips
217
+ // render your own reply chips → on click, CometChatUIKit.sendTextMessage(...)
340
218
  }
341
219
  ```
342
220
 
343
- ### Presence — live online/offline status in custom UI
221
+ ---
344
222
 
345
- Presence indicators are built into `<cometchat-conversations>`, `<cometchat-users>`, and `<cometchat-group-members>` automatically. For custom UI that needs live status:
223
+ ## 5. Calls (package-install) pointer to the calls skill
224
+
225
+ Voice + video calling is the one package-install feature. Two steps:
226
+
227
+ ```bash
228
+ npm install @cometchat/calls-sdk-javascript@^5
229
+ ```
346
230
 
347
231
  ```typescript
348
- import { Component, OnInit, OnDestroy, Input } from "@angular/core";
349
- import { CometChat } from "@cometchat/chat-sdk-javascript";
232
+ // in your UIKitSettingsBuilder chain, before CometChatUIKit.init(...)
233
+ const settings = new UIKitSettingsBuilder()
234
+ .setAppId(environment.cometchat.appId)
235
+ .setRegion(environment.cometchat.region)
236
+ .setAuthKey(environment.cometchat.authKey)
237
+ .setCallingEnabled(true) // verified builder method (v5 .d.ts)
238
+ .build();
239
+ ```
350
240
 
351
- @Component({
352
- selector: "app-user-status",
353
- template: `<span [style.color]="isOnline ? '#09C26F' : '#a1a1a1'">
354
- {{ isOnline ? 'Online' : 'Offline' }}
355
- </span>`,
356
- })
357
- export class UserStatusComponent implements OnInit, OnDestroy {
358
- @Input() uid!: string;
359
- isOnline = false;
360
- private readonly LISTENER_ID = `presence-${Date.now()}`;
361
-
362
- ngOnInit(): void {
363
- // Fetch initial state
364
- CometChat.getUser(this.uid).then((u) => {
365
- this.isOnline = u.getStatus() === "online";
366
- });
367
-
368
- // Subscribe to live changes
369
- CometChat.addUserListener(
370
- this.LISTENER_ID,
371
- new CometChat.UserListener({
372
- onUserOnline: (user: CometChat.User) => {
373
- if (user.getUid() === this.uid) this.isOnline = true;
374
- },
375
- onUserOffline: (user: CometChat.User) => {
376
- if (user.getUid() === this.uid) this.isOnline = false;
377
- },
378
- })
379
- );
380
- }
381
-
382
- ngOnDestroy(): void {
383
- CometChat.removeUserListener(this.LISTENER_ID);
384
- }
385
- }
241
+ `setCallingEnabled(true)` is a **verified** `UIKitSettingsBuilder` method. Once the calls SDK peer is installed and calling is enabled, the kit's standalone call components work: `<cometchat-call-buttons>`, `<cometchat-incoming-call>`, `<cometchat-outgoing-call>`, `<cometchat-ongoing-call>`, `<cometchat-call-logs>`.
242
+
243
+ **For the full call flow — app-wide incoming-call mounting, the `@Input`-callback-vs-`@Output` binding split (`[onAccept]` input vs `(callAccepted)` output), NgZone correctness, getUserMedia handling, additive-vs-standalone modes — read `cometchat-angular-calls`.** Do not re-derive the call wiring here; that skill is the source of truth.
244
+
245
+ Quick reminder on call-button placement (header `[auxiliaryButtonView]` / `[menuView]` slot):
246
+
247
+ ```html
248
+ <cometchat-message-header [user]="selectedUser" [auxiliaryButtonView]="callButtons"></cometchat-message-header>
249
+ <ng-template #callButtons>
250
+ <cometchat-call-buttons
251
+ [user]="selectedUser"
252
+ [onVoiceCallClick]="handleVoiceCall"
253
+ [onVideoCallClick]="handleVideoCall">
254
+ </cometchat-call-buttons>
255
+ </ng-template>
386
256
  ```
387
257
 
258
+ `onVoiceCallClick` / `onVideoCallClick` are **`@Input` callback props** (square brackets, function refs) — not `@Output`s. See the components catalog and calls skill.
259
+
388
260
  ---
389
261
 
390
- The following work from day 1 without any feature-enabling step:
262
+ ## 6. AI Agent (dashboard setup, no dedicated v5 component)
391
263
 
392
- - **Instant messaging** (text, with real-time delivery)
393
- - **Media sharing** (images, video, audio, files)
394
- - **Read receipts** (single tick = sent, double tick = delivered, blue = read)
395
- - **Typing indicators**
396
- - **@mentions** (requires `CometChatMentionsFormatter` in `[textFormatters]`)
397
- - **Reactions** (click any message to add emoji reaction)
398
- - **Replies** (click → Reply)
399
- - **Edit / delete** own messages
400
- - **Message info** — sender sees delivery + read timestamps per-recipient
401
- - **Voice messages** (record + send from composer)
402
- - **Search** (`[hideSearch]="false"` on `<cometchat-conversations>`, `<cometchat-users>`, `<cometchat-groups>`)
403
- - **Group management** (create via `<cometchat-create-group>`, add members, leave, transfer ownership)
264
+ 1. https://app.cometchat.com your app AI → Agents
265
+ 2. Create an agent (name, system prompt, model) and assign it a UID (e.g. `ai-support-agent`).
266
+ 3. Users message the agent like any other user.
404
267
 
405
- ---
268
+ Angular v5 ships AI-assistant building blocks (`CometChatAIAssistantChat`, `-ChatHistory`, `-MessageBubble` are exported), but the standard, supported path to chat with an agent is the normal message components targeted at the agent's UID:
406
269
 
407
- ## 6. Finding a feature's category quickly
270
+ ```typescript
271
+ CometChat.getUser("ai-support-agent").then((agent) => { this.aiAgent = agent; });
272
+ ```
408
273
 
409
- When a user asks for a feature, use this flow:
274
+ ```html
275
+ <cometchat-message-header [user]="aiAgent"></cometchat-message-header>
276
+ <cometchat-message-list [user]="aiAgent"></cometchat-message-list>
277
+ <cometchat-message-composer [user]="aiAgent"></cometchat-message-composer>
278
+ ```
410
279
 
411
- 1. **Is it in the core-features list 5)?** Already works. Confirm no `[hide*]` input is turning it off.
412
- 2. **Is it voice / video / call history?** → Calls (§ 3). Package install.
413
- 3. **Is it polls, stickers, message translation, link preview, collaborative doc / whiteboard, thumbnails?** → Extension (§ 2). Run `cometchat apply-feature <id> --app-id <X>`.
414
- 3a. **Is it smart replies, conversation summary, or conversation starter?** → AI feature (§ 2). Run `cometchat apply-feature <id> --app-id <X> --openai-key sk-...`.
415
- 3b. **Is it Giphy / Stipop / Tenor / Chatwoot / Intercom / Disappearing Messages / Message Shortcuts?** → Dashboard-only (§ 2). User must enter third-party config in https://app.cometchat.com → Extensions.
416
- 4. **Is it AI agent?** → § 4.
417
- 5. **Is it custom text formatting, custom message templates, custom slot views, custom theme?** → This is **customization**, not a feature. Route to `cometchat-angular-customization` or `cometchat-angular-theming`.
418
- 6. **Not on this list?** → Check `docs/ui-kit/angular/guide-overview` + the kit's exports. If still nothing, tell the user the feature isn't in the UI Kit; they may need to build it with the SDK directly.
280
+ Smart replies / conversation starter / summary surface through the §4 `@Input`s once enabled.
419
281
 
420
282
  ---
421
283
 
422
- ## 7. Anti-patterns
423
-
424
- 1. **Do NOT speculatively install the calls SDK.** Install only after the user says they want calls.
284
+ ## 7. Finding a feature's category quickly
425
285
 
426
- 2. **Do NOT enable extensions your app doesn't use.** Each enabled extension adds data-fetching overhead.
286
+ 1. **In the auto-enabled list (§2)?** Already works. Confirm no `hide*` `@Input` is turning it off.
287
+ 2. **@mentions?** → Component-prop: pass `[textFormatters]="[new CometChatMentionsFormatter()]"` (§2).
288
+ 3. **Smart replies / conversation starter / summary?** → AI feature: enable with `cometchat apply-feature <id> --app-id <X> --openai-key sk-…`, then set the message-list / message-header `@Input` (§4).
289
+ 4. **Polls / stickers / collaborative doc-or-whiteboard / message translation / link preview / thumbnails?** → Dashboard-extension: `cometchat apply-feature <id> --app-id <X>`, then hard-reload (§3).
290
+ 5. **Giphy / Stipop / Tenor / Chatwoot / Intercom / Disappearing Messages / Message Shortcuts?** → Dashboard-extension needing third-party config; CLI returns `manual-action-required`. Walk the user through https://app.cometchat.com → Chat & Messaging → Features.
291
+ 6. **Voice / video / call logs?** → Package-install: `npm install @cometchat/calls-sdk-javascript@^5` + `.setCallingEnabled(true)` → `cometchat-angular-calls` (§5).
292
+ 7. **AI agent?** → §6.
293
+ 8. **Custom text formatting / custom message templates / custom slot views / theming?** → That's **customization**, not a feature. Route to `cometchat-angular-customization` / `cometchat-angular-theming`.
294
+ 9. **Not on this list?** → Check `docs/ui-kit/angular/guide-overview` + the kit's exports. If still nothing, the feature isn't in the UI Kit; the user may need the raw SDK.
427
295
 
428
- 3. **Do NOT wire the call listener per-component.** It should be once, at the app root (`AppComponent`). Per-component registration causes missed incoming calls when the user navigates away.
296
+ ---
429
297
 
430
- 4. **Do NOT forget to unsubscribe / remove listeners in `ngOnDestroy`.** Angular components are destroyed on navigation — leaked listeners cause duplicate event handling.
298
+ ## 8. Anti-patterns
431
299
 
432
- 5. **Do NOT reference AI tools or streaming APIs from memory.** These APIs change across UIKit minor versions. Query the docs MCP before generating code.
300
+ 1. **Don't invent a component `@Input`.** Every prop in this skill (`showSmartReplies`, `showConversationStarters`, `smartRepliesKeywords`, `smartRepliesDelayDuration`, `showConversationSummaryButton`, `enableAutoSummaryGeneration`, `summaryGenerationMessageCount`, `textFormatters`, the `hide*` flags, `setCallingEnabled`) is verified against the v5 `.d.ts`. If a prop isn't in `cometchat-angular-components` or the `.d.ts`, it doesn't exist — v4 prop names frequently differ.
301
+ 2. **Don't treat reactions/mentions as a backend toggle.** Reactions are auto-on (hide via `hideReactionOption`); mentions are a `textFormatters` `@Input`. Neither uses `apply-feature`.
302
+ 3. **Don't speculatively install the calls SDK.** Install `@cometchat/calls-sdk-javascript` only after the user asks for calls, and pin `^5`.
303
+ 4. **Don't enable extensions the app doesn't use.** Each enabled extension adds data-fetching overhead.
304
+ 5. **Don't omit `--app-id`.** Angular has no `.cometchat/state.json`; every `apply-feature` call needs `--app-id <id>`.
305
+ 6. **Don't bind a call `@Input` callback as an `@Output`.** `[onVoiceCallClick]="fn"` (input) vs `(voiceCallClick)="fn($event)"` (output) — use the one the catalog lists.
306
+ 7. **Don't reference AI streaming APIs from memory.** They change across minor versions — confirm against the docs MCP / `.d.ts` before generating code.
433
307
 
434
308
  ---
435
309
 
@@ -437,11 +311,19 @@ When a user asks for a feature, use this flow:
437
311
 
438
312
  | Skill | When to route |
439
313
  |---|---|
440
- | `cometchat-angular-core` | Init / login / module setup |
441
- | `cometchat-angular-components` | Component prop reference (for `<cometchat-call-buttons>`, `<cometchat-ongoing-call>`, etc.) |
442
- | `cometchat-angular-placement` | Where the ongoing-call route, call-logs tab, AI chat route go |
314
+ | `cometchat-angular-core` | Init / login / standalone setup / `UIKitSettingsBuilder` |
315
+ | `cometchat-angular-components` | Component selector + `@Input`/`@Output` reference |
316
+ | `cometchat-angular-calls` | Full voice/video call flow + incoming-call mounting |
317
+ | `cometchat-angular-placement` | Where the call-logs tab / AI chat route / message panes go |
443
318
  | `cometchat-angular-features` | This skill — which features exist + how to enable each |
444
- | `cometchat-angular-theming` | Theming call buttons, reaction colors, extension UI colors |
319
+ | `cometchat-angular-theming` | Theming reaction colors, call buttons, extension UI (CSS variables) |
445
320
  | `cometchat-angular-customization` | Custom text formatters, custom message templates, event bus |
446
- | `cometchat-angular-production` | Production auth tokens (prerequisite for AI agent in prod) |
447
- | `cometchat-angular-troubleshooting` | Extension not showing after enabling, call permissions denied |
321
+ | `cometchat-angular-production` | Server-side auth tokens (prerequisite for AI agent in prod) |
322
+ | `cometchat-angular-troubleshooting` | Extension not showing after enabling, call permission failures |
323
+
324
+ ## Sources
325
+
326
+ - [Core features](https://www.cometchat.com/docs/ui-kit/angular/core-features)
327
+ - [Extensions](https://www.cometchat.com/docs/ui-kit/angular/extensions)
328
+ - [AI features](https://www.cometchat.com/docs/ui-kit/angular/ai-features)
329
+ - [Calling integration](https://www.cometchat.com/docs/ui-kit/angular/calling-integration)