@cometchat/skills 4.4.1 → 5.0.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 (489) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,257 +0,0 @@
1
- # Group calls — broadcast meeting pattern (web)
2
-
3
- Group calls in CometChat use a **different signaling channel than 1:1 user calls**. The Ringing flow (Chat SDK `initiateCall` → `onIncomingCallReceived` on peer) fires for **1:1 user calls only**. For groups, the kit broadcasts a **custom message** of type `meeting` to the group; receivers see a "Join meeting" card in their message list (kit-based) OR need an explicit message listener (custom UI).
4
-
5
- This is by-design kit behavior — not a bug. Documented across all platform kits.
6
-
7
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/group-calls
8
-
9
- ---
10
-
11
- ## Architecture
12
-
13
- ```
14
- Caller (uid-A, member of group-X) CometChat Receivers (all other members of group-X)
15
- │ │ │
16
- │ <CometChatCallButtons group={x}> │ │
17
- │ → CometChatUIKit.sendCustomMessage( │ │
18
- │ CustomMessage(GUID, GROUP, │ │
19
- │ "meeting", │ │
20
- │ { callType, sessionId })) │ │
21
- ├─────────────────────────────────────────>│ │
22
- │ │ onCustomMessageReceived │
23
- │ ├─────────────────────────────>│ (each member's
24
- │ │ │ MessageListener
25
- │ │ │ fires if they're
26
- │ │ │ in the group)
27
- │ │ │
28
- │ caller jumps straight to OngoingCall │ │
29
- │ (joins session GUID directly) │ receiver taps "Join" │
30
- │ │ → joinSession(GUID) │
31
- │ CometChatCalls.joinSession(token, GUID) │ <─────────────────────────── │
32
- ├─────────────────────────────────────────>│ │
33
- │ ───── WebRTC session active (sessionId = group GUID) ───── │
34
- ```
35
-
36
- Key contrast with 1:1 ringing:
37
-
38
- | Channel | 1:1 user calls | Group calls |
39
- |---|---|---|
40
- | Signaling API | `CometChat.initiateCall(call)` | `CometChatUIKit.sendCustomMessage(meetingMessage)` |
41
- | Receiver event | `CallListener.onIncomingCallReceived` | `MessageListener.onCustomMessageReceived` (category=CATEGORY_CUSTOM + type="meeting") |
42
- | Session ID | server-generated unique per call | the group's GUID |
43
- | Ring/decline semantics | yes — `acceptCall` / `rejectCall` | no — receivers just tap to join (or ignore) |
44
- | Auto-cancel timeout | yes (45s default) | no — meeting card persists in chat history |
45
-
46
- ---
47
-
48
- ## Hard rules
49
-
50
- 1. **Group calls broadcast a custom message; they do NOT use the call listener.** If your custom UI only registers `addCallListener`, group-call recipients will see NOTHING. Add a `MessageListener` that handles `category === CATEGORY_CUSTOM && type === 'meeting'`.
51
- 2. **The session ID equals the group's GUID** — not a generated unique ID like 1:1 calls. Anyone with the GUID can join the session at any time (it's persistent, not auto-cancelled).
52
- 3. **Anyone can join, including after the meeting started.** Late joiners are normal — the WebRTC session is open until all participants leave. UI must handle "joining an already-active meeting" as a valid state.
53
- 4. **Joining = `CometChatCalls.joinSession(token, sessionSettings, container)` with sessionId set to the group GUID.** Same `generateToken(sessionId)` step as 1:1 ringing — auth is internal after `CometChatCalls.login()`.
54
- 5. **No `CometChat.endCall(sessionId)` on the chat side for groups** — the meeting message is the persistent record, not a call entity. Each participant just calls `CometChatCalls.leaveSession()` when they hang up.
55
- 6. **`onCallEndedMessageReceived` does NOT fire for group sessions.** The session persists as long as anyone's in it. Use `CometChatCalls.OngoingCallListener.onCallEnded` to detect when YOUR client's session ends.
56
-
57
- ---
58
-
59
- ## Caller side — kit-based
60
-
61
- If you're using `<CometChatMessageHeader>` + `<CometChatCallButtons>`, the kit handles everything:
62
-
63
- ```tsx
64
- import { CometChatCallButtons } from "@cometchat/chat-uikit-react";
65
-
66
- <CometChatCallButtons group={group} />
67
- ```
68
-
69
- Tapping voice/video automatically:
70
- 1. Sends a `CustomMessage` of type `meeting` to the group
71
- 2. Opens `<CometChatOutgoingCall>` UI (which transitions to `<CometChatOngoingCall>`)
72
- 3. Joins the WebRTC session with `sessionId = group.getGuid()`
73
-
74
- No additional code on the caller side.
75
-
76
- ## Caller side — custom UI
77
-
78
- If you don't use kit components and want full control:
79
-
80
- ```ts
81
- import { CometChat } from "@cometchat/chat-sdk-javascript";
82
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
83
-
84
- async function startGroupCall(guid: string, callType: "audio" | "video") {
85
- const loggedInUser = await CometChat.getLoggedInUser();
86
- if (!loggedInUser) throw new Error("Not logged in");
87
-
88
- // 1. Broadcast the meeting message to the group
89
- const sessionId = guid; // group GUID becomes the session ID
90
- const customData = { callType, sessionId };
91
- const meetingMessage = new CometChat.CustomMessage(
92
- guid,
93
- CometChat.RECEIVER_TYPE.GROUP,
94
- "meeting",
95
- customData,
96
- );
97
- meetingMessage.setCategory(CometChat.CATEGORY_CUSTOM);
98
- meetingMessage.setMetadata({
99
- incrementUnreadCount: true,
100
- pushNotification: "meeting",
101
- ...customData,
102
- });
103
- await CometChat.sendCustomMessage(meetingMessage);
104
-
105
- // 2. Generate a call token + join the session
106
- const authToken = loggedInUser.getAuthToken();
107
- const { token: callToken } = await CometChatCalls.generateToken(sessionId);
108
-
109
- // joinSession takes a SessionSettings OBJECT (NOT CallSettingsBuilder.build() —
110
- // that CallSettings is for the deprecated startSession). Events come from the
111
- // static addEventListener bus, not OngoingCallListener.
112
- const settings = { sessionType: callType === "audio" ? "VOICE" : "VIDEO" };
113
- const offClosed = CometChatCalls.addEventListener("onConnectionClosed", () => {
114
- /* hangup UI */
115
- });
116
- // later, on teardown: offClosed();
117
-
118
- // 3. Mount the WebRTC view into your container element
119
- await CometChatCalls.joinSession(callToken, settings, containerElement);
120
- }
121
- ```
122
-
123
- The `meeting` message lands in the group's chat history immediately; other members get `onCustomMessageReceived` if they have a listener.
124
-
125
- ---
126
-
127
- ## Receiver side — kit-based (auto-renders meeting card)
128
-
129
- If your app uses `<CometChatMessageList />` to render the group's messages, the kit auto-renders the meeting message as a **"Join meeting" card** with a tap target. No additional code needed:
130
-
131
- ```tsx
132
- <CometChatMessageList group={group} />
133
- ```
134
-
135
- When a user taps the meeting card, the kit:
136
- 1. Calls `CometChatCalls.generateToken(sessionId, authToken)`
137
- 2. Opens `<CometChatOngoingCall>` with `sessionID={group.getGuid()}`
138
- 3. Joins the WebRTC session
139
-
140
- The receiver is now in the same WebRTC session as the caller (and any other members who joined).
141
-
142
- ## Receiver side — custom UI (needs a message listener)
143
-
144
- If you DON'T use `<CometChatMessageList />` — e.g. you have a custom chat surface, OR you want incoming-meeting notifications globally — register a `MessageListener` and handle the meeting message yourself:
145
-
146
- ```ts
147
- import { CometChat } from "@cometchat/chat-sdk-javascript";
148
-
149
- const GROUP_MEETING_LISTENER_ID = "APP_GROUP_MEETING_LISTENER";
150
-
151
- CometChat.addMessageListener(
152
- GROUP_MEETING_LISTENER_ID,
153
- new CometChat.MessageListener({
154
- onCustomMessageReceived: (msg: CometChat.CustomMessage) => {
155
- if (msg.getCategory() !== CometChat.CATEGORY_CUSTOM) return;
156
- if (msg.getType() !== "meeting") return;
157
-
158
- const customData = msg.getCustomData() as { callType?: "audio" | "video"; sessionId?: string };
159
- const sessionId = customData.sessionId ?? msg.getReceiverId();
160
- const callType = customData.callType ?? "video";
161
- const fromUid = msg.getSender().getUid();
162
- const groupGuid = msg.getReceiverId();
163
-
164
- // Show YOUR group-call incoming UI here
165
- // (e.g. toast notification with "Join" button, badge on the group, etc.)
166
- showIncomingGroupCallUI({ sessionId, callType, fromUid, groupGuid });
167
- },
168
- }),
169
- );
170
-
171
- // On hangup or logout:
172
- CometChat.removeMessageListener(GROUP_MEETING_LISTENER_ID);
173
- ```
174
-
175
- Tap-to-join from your custom UI:
176
-
177
- ```ts
178
- async function joinGroupCall(sessionId: string, callType: "audio" | "video", container: HTMLElement) {
179
- const loggedInUser = await CometChat.getLoggedInUser();
180
- const authToken = loggedInUser!.getAuthToken();
181
- const { token: callToken } = await CometChatCalls.generateToken(sessionId);
182
-
183
- // SessionSettings OBJECT for joinSession (not CallSettingsBuilder output).
184
- const settings = { sessionType: callType === "audio" ? "VOICE" : "VIDEO" };
185
- const offClosed = CometChatCalls.addEventListener("onConnectionClosed", () => {
186
- /* hangup UI */
187
- });
188
- // later, on teardown: offClosed();
189
-
190
- await CometChatCalls.joinSession(callToken, settings, container);
191
- }
192
- ```
193
-
194
- No `acceptCall` step — receivers just join the session. The meeting message remains in the chat history regardless of who joins.
195
-
196
- ---
197
-
198
- ## Edge cases
199
-
200
- ### Late joining
201
-
202
- A meeting can be active for an hour before a member opens the app. The custom message persists in chat history; tapping the card joins the live session.
203
-
204
- **UI implication:** the meeting card should reflect live state. Listen for `MessageListener.onCustomMessageReceived` to add new cards; poll or use presence to know if the session is currently active. There's no built-in "meeting is live" signal — apps typically render the card with a "Join meeting" CTA regardless and let the WebRTC layer fail gracefully if everyone has left.
205
-
206
- ### Cancelling / leaving
207
-
208
- There's no "cancel the meeting" — the meeting message is permanent in chat history. Each participant leaves independently:
209
-
210
- ```ts
211
- CometChatCalls.leaveSession(); // your local WebRTC session (v5 — endSession() is deprecated)
212
- // No CometChat.endCall — meetings don't have a call entity.
213
- ```
214
-
215
- If you want to mark a meeting as "ended" UX-wise, send a follow-up message (e.g. another custom message of type `meeting_ended`) and have the receiver UI update its cards based on it. Not built into the SDK.
216
-
217
- ### Push notifications
218
-
219
- The meeting `CustomMessage` carries `metadata.pushNotification = "meeting"`. The CometChat push system can route this to a "meeting started in your group" push. Configure on the dashboard side under Notifications → Push Notification.
220
-
221
- ### Missed meetings
222
-
223
- Since meetings don't ring, there's no "missed call" entity. If you want missed-meeting UI, derive it from message history: list meeting messages where the current user has NOT joined the session.
224
-
225
- ---
226
-
227
- ## Anti-patterns
228
-
229
- 1. **Registering only `addCallListener` and expecting group calls to ring.** They won't. Group calls fire `onCustomMessageReceived`, not `onIncomingCallReceived`. Always add both listeners if you support both 1:1 and group calling.
230
- 2. **Treating `sessionId` as ephemeral for groups.** It's the group GUID — persistent. Don't generate a new sessionId per group call; the kit uses the GUID intentionally so all joiners hit the same WebRTC session.
231
- 3. **Calling `CometChat.endCall(sessionId)` after a group hangup.** Meetings have no call entity to end; the API returns an error. Use `CometChatCalls.leaveSession()` (local) only.
232
- 4. **Using `acceptCall` / `rejectCall` on the meeting message.** Those only work on 1:1 call entities. For meetings, you just join (no accept) or ignore (no reject).
233
- 5. **Assuming all group members ring simultaneously.** Only members with an active `MessageListener` get `onCustomMessageReceived`. Offline members see the meeting card when they next open the group.
234
- 6. **Sending the meeting message without `metadata.pushNotification`.** Offline members won't get a push. The kit handles this for you when you use `<CometChatCallButtons>`; if you're building custom, copy the metadata pattern in §"Caller side — custom UI".
235
-
236
- ---
237
-
238
- ## Verification checklist
239
-
240
- - [ ] If using kit components: `<CometChatCallButtons group={g}>` renders + tap initiates a meeting message
241
- - [ ] If using custom caller UI: `CometChat.sendCustomMessage` is called with `type: "meeting"`, `category: CATEGORY_CUSTOM`, `customData: { callType, sessionId: groupGuid }`
242
- - [ ] If using kit receiver: `<CometChatMessageList group={g}>` renders the meeting card with a "Join" button
243
- - [ ] If using custom receiver: `addMessageListener` registers `onCustomMessageReceived` and filters by category + type
244
- - [ ] On hangup, `CometChatCalls.leaveSession()` is called (NOT `CometChat.endCall`)
245
- - [ ] Late-joining works — open app while meeting is live; tap card; join session
246
- - [ ] Push notifications fire for offline group members (server-side configured)
247
- - [ ] Both listeners (`addCallListener` + `addMessageListener`) wired if app supports both 1:1 and group calls
248
-
249
- ---
250
-
251
- ## Pointers
252
-
253
- - `ringing-integration.md` — the 1:1 user-call flow (different channel — call listener, not message listener)
254
- - `call-session.md` — pure session-mode (URL-based, no chat-side signaling at all)
255
- - `cometchat-react-calls/SKILL.md` rule 1.7 — IncomingCall mount (1:1 only; group calls don't use this)
256
- - Canonical docs: https://www.cometchat.com/docs/calls/javascript/group-calls
257
- - Kit source (web React): `@cometchat/chat-uikit-react` → `src/components/Calling/CometChatCallButtons/CometChatCallButtons.tsx` (group call buttons send the `meeting` custom message)
@@ -1,188 +0,0 @@
1
- # Idle timeout on web
2
-
3
- Auto-ends calls where the local user is the only remaining participant. Two timers: a "you're alone, are you still there?" prompt fires after the first interval, then the session ends if the user doesn't respond before the second interval. SDK first-party — just two settings keys + one event.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/idle-timeout
6
- **Use it for:** any group call (preventing zombie sessions when everyone else hangs up), waiting rooms (auto-close empty rooms), classroom calls (instructor's screen doesn't stay live overnight).
7
-
8
- ---
9
-
10
- ## SDK API
11
-
12
- > ⚠️ **VALUES ARE IN MILLISECONDS.** `idleTimeoutPeriodBeforePrompt: 180` is **180 ms**, not 180 seconds — so the prompt fires the instant you join alone and the call exits in a fraction of a second (real customer bug, 2026-06). Always `* 1000`: 3 minutes = `180_000`.
13
-
14
- Two equivalent ways to set it — **match whichever your join path uses:**
15
-
16
- ```ts
17
- // (a) SessionSettings OBJECT — the session-mode path: joinSession(token, settings, container)
18
- const settings = {
19
- idleTimeoutPeriodBeforePrompt: 180_000, // 180s before the "still there?" prompt
20
- idleTimeoutPeriodAfterPrompt: 60_000, // 60s grace (this is the SDK MINIMUM)
21
- };
22
- await CometChatCalls.joinSession(token, settings, containerRef.current);
23
-
24
- // (b) Builder — the kit's callSettingsBuilder prop. ⚠️ The builder has ONLY a
25
- // single .setIdleTimeoutPeriod(ms) — there are NO setIdleTimeoutPeriodBeforePrompt /
26
- // setIdleTimeoutPeriodAfterPrompt builder methods. The before/after-prompt SPLIT
27
- // exists only as the SessionSettings object fields in form (a) above.
28
- const builder = new CometChatCalls.CallSettingsBuilder()
29
- .setIdleTimeoutPeriod(180_000);
30
-
31
- CometChatCalls.addEventListener("onSessionTimedOut", () => {
32
- // Navigate away, show "session ended" UI
33
- });
34
- ```
35
-
36
- | Setting | Default | Min | Unit |
37
- |---|---|---|---|
38
- | `idleTimeoutPeriodBeforePrompt` | 60_000 (60s) | — (don't use 0 / tiny — instant prompt) | **milliseconds** |
39
- | `idleTimeoutPeriodAfterPrompt` | 120_000 (120s) | **60_000 (60s)** — smaller is silently clamped to 60s | **milliseconds** |
40
-
41
- The SDK shows the prompt overlay automatically (kit's default UI). For custom UI you handle the prompt yourself.
42
-
43
- ---
44
-
45
- ## Recommended timeouts per app archetype
46
-
47
- | App | Before-prompt | After-prompt | Why |
48
- |---|---|---|---|
49
- | Marketplace 1:1 | 30s | 60s | Buyers lose interest fast; reclaim resources |
50
- | Telehealth (provider waiting) | 5min | 5min | Patients run late; don't punish them |
51
- | Classroom / instructor | 10min | 10min | Instructor may step away; don't interrupt class |
52
- | Internal team meeting | 60s | 120s | Default — meetings end abruptly anyway |
53
- | Customer support | 30s | 60s | Agent moves to next ticket; reclaim |
54
-
55
- ---
56
-
57
- ## Custom prompt UI (when default isn't enough)
58
-
59
- The kit's default prompt is functional but plain. Custom UI uses `enableDefaultLayout(false)` + listens for the prompt internally — though the SDK doesn't expose a direct "prompt fired" event. Two patterns:
60
-
61
- ### Pattern A — Track time-since-alone yourself
62
-
63
- ```tsx
64
- import { useEffect, useRef, useState } from "react";
65
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
66
-
67
- function useIdleTimeoutPrompt({
68
- beforePromptMs = 60_000,
69
- afterPromptMs = 120_000,
70
- }: { beforePromptMs?: number; afterPromptMs?: number; }) {
71
- const [showPrompt, setShowPrompt] = useState(false);
72
- const aloneSinceRef = useRef<number | null>(null);
73
- const promptTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
74
- const sessionTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
75
-
76
- useEffect(() => {
77
- const listener = new CometChatCalls.OngoingCallListener({
78
- onUserListUpdated: (users: { uid: string }[]) => {
79
- const localUid = CometChat.getLoggedinUser()?.getUid();
80
- const remoteCount = users.filter(u => u.uid !== localUid).length;
81
-
82
- if (remoteCount === 0 && aloneSinceRef.current === null) {
83
- // Just became alone
84
- aloneSinceRef.current = Date.now();
85
- promptTimerRef.current = setTimeout(() => {
86
- setShowPrompt(true);
87
- sessionTimerRef.current = setTimeout(() => {
88
- CometChatCalls.leaveSession();
89
- }, afterPromptMs);
90
- }, beforePromptMs);
91
- } else if (remoteCount > 0) {
92
- // Someone joined — clear timers
93
- aloneSinceRef.current = null;
94
- if (promptTimerRef.current) clearTimeout(promptTimerRef.current);
95
- if (sessionTimerRef.current) clearTimeout(sessionTimerRef.current);
96
- setShowPrompt(false);
97
- }
98
- },
99
- });
100
-
101
- // Attach listener... (see custom-ui.md for the full setup)
102
-
103
- return () => {
104
- if (promptTimerRef.current) clearTimeout(promptTimerRef.current);
105
- if (sessionTimerRef.current) clearTimeout(sessionTimerRef.current);
106
- };
107
- }, [beforePromptMs, afterPromptMs]);
108
-
109
- function dismiss() {
110
- setShowPrompt(false);
111
- if (sessionTimerRef.current) clearTimeout(sessionTimerRef.current);
112
- aloneSinceRef.current = null;
113
- }
114
-
115
- return { showPrompt, dismiss };
116
- }
117
- ```
118
-
119
- Usage:
120
-
121
- ```tsx
122
- function CustomCallView() {
123
- const { showPrompt, dismiss } = useIdleTimeoutPrompt({
124
- beforePromptMs: 30_000,
125
- afterPromptMs: 60_000,
126
- });
127
-
128
- return (
129
- <>
130
- {/* call UI */}
131
- {showPrompt && (
132
- <div role="alertdialog" aria-modal="true" aria-labelledby="idle-title">
133
- <h2 id="idle-title">Still there?</h2>
134
- <p>You're alone in this call. It'll end in 60 seconds.</p>
135
- <button onClick={dismiss}>Stay</button>
136
- <button onClick={() => CometChatCalls.leaveSession()}>End now</button>
137
- </div>
138
- )}
139
- </>
140
- );
141
- }
142
- ```
143
-
144
- ### Pattern B — Long timeouts + custom prompt only
145
-
146
- ```ts
147
- // SessionSettings object for joinSession (these before/after fields are object-only).
148
- const settings = {
149
- idleTimeoutPeriodBeforePrompt: 86_400_000, // 24 hours — effectively disabled
150
- idleTimeoutPeriodAfterPrompt: 86_400_000,
151
- };
152
- ```
153
-
154
- Then implement your own timeout via Pattern A. Useful when you want UX-customized prompts instead of the SDK's default overlay.
155
-
156
- ---
157
-
158
- ## Anti-patterns
159
-
160
- 1. **`idleTimeoutPeriodAfterPrompt < 60_000` (60s).** SDK rejects values below 60s. Setting it lower silently fails — the SDK uses 60s instead.
161
- 2. **Disabling idle timeout entirely** by setting both timers to `Infinity`. Sessions hang forever, server-side resources leak, billing dings you. Always set a reasonable upper bound.
162
- 3. **Showing the prompt at the same time as call notifications/banners.** Stacks on top of incoming-message notifications. Z-index conflicts. Render the idle prompt at the highest z-level for the call surface.
163
- 4. **Auto-ending without a goodbye animation.** Jarring. Fade-out the call surface over 500ms before disconnecting.
164
- 5. **Prompt UI without `role="alertdialog"`.** Screen readers don't pause to announce; user gets disconnected mid-listen. Use `role="alertdialog"` + `aria-modal="true"`.
165
- 6. **Restarting `aloneSinceRef.current` on EVERY participant change.** Want to track "alone since" only when transitioning from N>0 to 0. Don't reset when participants join/leave while still N>0.
166
-
167
- ---
168
-
169
- ## Verification checklist
170
-
171
- - [ ] `setIdleTimeoutPeriodBeforePrompt` + `setIdleTimeoutPeriodAfterPrompt` set on CallSettings
172
- - [ ] After-prompt period ≥ 60_000 (60s)
173
- - [ ] `onSessionTimedOut` event handler navigates away cleanly (not just `console.log`)
174
- - [ ] Custom prompt UI uses `role="alertdialog"` + `aria-modal="true"`
175
- - [ ] Custom prompt has both "Stay" and "End now" buttons
176
- - [ ] Timer cleanup in `useEffect` return — no leaked setTimeout
177
- - [ ] Browser smoke: 2 tabs in call, close tab B, watch tab A's timer fire (set short timeouts for testing)
178
- - [ ] After-prompt smoke: dismiss the prompt → timer clears → no auto-disconnect
179
-
180
- ---
181
-
182
- ## Pointers
183
-
184
- - `cometchat-react-calls` SKILL.md — the seven hard rules
185
- - `references/group-calls.md` — group call architecture (idle-timeout matters most for groups)
186
- - `references/custom-ui.md` — custom call UI integration
187
- - `cometchat-a11y` — `role="alertdialog"` patterns
188
- - Canonical docs: https://www.cometchat.com/docs/calls/javascript/idle-timeout
@@ -1,212 +0,0 @@
1
- # In-call chat on web
2
-
3
- Text messaging during a video/voice call. SDK provides the chat button in the control panel + events; the actual chat UI is yours to build (the kit's existing `<CometChatMessageList>` + `<CometChatMessageComposer>` work great here).
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/in-call-chat
6
- **Use it for:** classroom side chat, team meeting links/notes, customer support secondary channel, AV-impaired participant text fallback.
7
-
8
- ---
9
-
10
- ## SDK API
11
-
12
- ```ts
13
- // SessionSettings object passed to joinSession(token, settings, container).
14
- // hideChatButton is a SessionSettings field, not a CallSettingsBuilder method.
15
- const settings = { hideChatButton: false }; // show the kit's built-in chat button
16
-
17
- CometChatCalls.addEventListener("onChatButtonClicked", () => {
18
- // Open your chat panel
19
- setChatOpen(true);
20
- });
21
-
22
- // Update unread badge
23
- CometChatCalls.setChatButtonUnreadCount(5);
24
- CometChatCalls.setChatButtonUnreadCount(0); // clear
25
- ```
26
-
27
- The button + badge live on the SDK's control panel. Your job is to render the chat UI when the button is tapped.
28
-
29
- ---
30
-
31
- ## Architecture: group-as-session
32
-
33
- The recommended pattern: use a CometChat **group** keyed to the call session. Every participant joins the group when they join the call; messages flow through the group's normal CometChat Chat SDK channel. When the call ends, the group either persists (logged history) or is deleted (ephemeral).
34
-
35
- ```ts
36
- import { CometChat } from "@cometchat/chat-sdk-javascript";
37
-
38
- async function ensureCallGroup(sessionId: string): Promise<CometChat.Group> {
39
- // Try to get existing
40
- try {
41
- return await CometChat.getGroup(sessionId);
42
- } catch {
43
- // Create
44
- const group = new CometChat.Group(
45
- sessionId, // GUID == session ID
46
- `Call ${sessionId}`, // display name
47
- CometChat.GROUP_TYPE.PUBLIC, // anyone in the call can join
48
- );
49
- return await CometChat.createGroup(group);
50
- }
51
- }
52
-
53
- async function joinCallGroup(sessionId: string): Promise<void> {
54
- await CometChat.joinGroup(sessionId, CometChat.GROUP_TYPE.PUBLIC, "");
55
- }
56
- ```
57
-
58
- Wire this into your call-start flow: after `joinSession` succeeds, `joinCallGroup`.
59
-
60
- ---
61
-
62
- ## Chat panel UI
63
-
64
- ```tsx
65
- import { useState, useEffect } from "react";
66
- import { CometChat } from "@cometchat/chat-sdk-javascript";
67
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
68
- import {
69
- CometChatMessageList,
70
- CometChatMessageComposer,
71
- } from "@cometchat/chat-uikit-react";
72
-
73
- interface InCallChatPanelProps {
74
- sessionId: string;
75
- }
76
-
77
- function InCallChatPanel({ sessionId }: InCallChatPanelProps) {
78
- const [open, setOpen] = useState(false);
79
- const [unread, setUnread] = useState(0);
80
- const [group, setGroup] = useState<CometChat.Group>();
81
-
82
- // Listen for the SDK's button click
83
- useEffect(() => {
84
- const handler = () => setOpen(true);
85
- // addEventListener returns an unsubscribe fn — there is no removeEventListener.
86
- const off = CometChatCalls.addEventListener("onChatButtonClicked", handler);
87
- return () => off();
88
- }, []);
89
-
90
- // Resolve the group object for the message list
91
- useEffect(() => {
92
- CometChat.getGroup(sessionId).then(setGroup).catch(() => {});
93
- }, [sessionId]);
94
-
95
- // Track unread when panel is closed
96
- useEffect(() => {
97
- const listenerId = `in-call-chat-${sessionId}`;
98
- const messageListener = new CometChat.MessageListener({
99
- onTextMessageReceived: (msg: CometChat.TextMessage) => {
100
- if (
101
- msg.getReceiverType() === CometChat.RECEIVER_TYPE.GROUP &&
102
- msg.getReceiverId() === sessionId &&
103
- !open
104
- ) {
105
- setUnread((u) => {
106
- const next = u + 1;
107
- CometChatCalls.setChatButtonUnreadCount(next);
108
- return next;
109
- });
110
- }
111
- },
112
- });
113
- CometChat.addMessageListener(listenerId, messageListener);
114
- return () => CometChat.removeMessageListener(listenerId);
115
- }, [sessionId, open]);
116
-
117
- // Clear badge on open
118
- useEffect(() => {
119
- if (open) {
120
- setUnread(0);
121
- CometChatCalls.setChatButtonUnreadCount(0);
122
- }
123
- }, [open]);
124
-
125
- if (!open || !group) return null;
126
-
127
- return (
128
- <div
129
- role="dialog"
130
- aria-label="In-call chat"
131
- style={{
132
- position: "fixed",
133
- right: 0,
134
- top: 0,
135
- bottom: 0,
136
- width: 360,
137
- background: "var(--cometchat-background-color-01)",
138
- borderLeft: "1px solid var(--cometchat-border-color-light)",
139
- display: "flex",
140
- flexDirection: "column",
141
- zIndex: 200,
142
- }}
143
- >
144
- <div style={{ padding: "12px 16px", borderBottom: "1px solid var(--cometchat-border-color-light)", display: "flex", justifyContent: "space-between", alignItems: "center" }}>
145
- <strong>Chat</strong>
146
- <button onClick={() => setOpen(false)} aria-label="Close chat">×</button>
147
- </div>
148
- {/* The flex-1 + minHeight:0 dance applies here too — long chat → composer would push down */}
149
- <div style={{ flex: "1 1 0", minHeight: 0, overflow: "hidden" }}>
150
- <CometChatMessageList group={group} hideReplyInThreadOption />
151
- </div>
152
- <div style={{ flex: "0 0 auto" }}>
153
- <CometChatMessageComposer group={group} />
154
- </div>
155
- </div>
156
- );
157
- }
158
- ```
159
-
160
- The flex-1 + minHeight:0 + wrap-each-component pattern from `cometchat-react-patterns` rule 6a applies inside the chat panel too.
161
-
162
- ---
163
-
164
- ## Compact UX patterns
165
-
166
- For 1:1 calls or small groups, an in-call chat panel is overkill. Two lighter patterns:
167
-
168
- ### A — Floating message strip (top of call)
169
-
170
- Show only the latest message inline; tap to open full chat. Minimal UI for "just the gist."
171
-
172
- ### B — System-toast on each message
173
-
174
- `onTextMessageReceived` → toast at top of call. Auto-dismiss after 4s. No persistent panel.
175
-
176
- The full panel pattern above is for 5+-person calls or when chat is a load-bearing part of the experience (e.g. classroom Q&A).
177
-
178
- ---
179
-
180
- ## Anti-patterns
181
-
182
- 1. **Polling for unread count.** SDK's `setChatButtonUnreadCount` is push-based; respond to message events.
183
- 2. **Chat panel grows past viewport on long sessions.** flex-shrink trap (see `cometchat-react-patterns` rule 6a).
184
- 3. **Forgetting to clear the unread badge on panel open.** User opens, sees "12 new" badge that doesn't update — looks broken.
185
- 4. **Persisting the call group forever.** For ephemeral calls (consultations, support), delete the group on call end. Hosts of recurring meetings keep groups.
186
- 5. **Sending messages without auth.** Make sure CometChat.login resolved before joining the group. Race conditions on early call accept.
187
- 6. **Reusing one chat-panel instance across multiple calls.** Group reference goes stale. Re-mount per call.
188
-
189
- ---
190
-
191
- ## Verification checklist
192
-
193
- - [ ] `hideChatButton: false` in CallSettings
194
- - [ ] `onChatButtonClicked` listener opens the panel
195
- - [ ] CometChat group created/resolved with sessionId as GUID
196
- - [ ] Local user joins the group on call start
197
- - [ ] Unread badge updates from `onTextMessageReceived` only when panel closed
198
- - [ ] Badge cleared on panel open
199
- - [ ] Chat panel uses flex-1 + minHeight:0 + wrap-each-component pattern
200
- - [ ] `role="dialog"` + `aria-label` on the panel container
201
- - [ ] Cleanup: remove message + chat-button listeners on call end
202
- - [ ] Browser smoke: 2 tabs in call, send message from A → unread badge in B → tap → message visible
203
-
204
- ---
205
-
206
- ## Pointers
207
-
208
- - `cometchat-react-calls` SKILL.md
209
- - `cometchat-react-patterns` — minHeight:0 rule 6a (applies to in-call chat panel)
210
- - `references/group-calls.md` — group call architecture
211
- - `cometchat-android-v5-calls/references/in-call-chat.md` — Android V5 sibling reference
212
- - Canonical docs: https://www.cometchat.com/docs/calls/javascript/in-call-chat