@cometchat/skills 4.4.2 → 5.0.1

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 (518) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +44 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATING.md +187 -0
  6. package/README.md +52 -156
  7. package/RULES.md +125 -0
  8. package/bin/cometchat-skills.mjs +1280 -0
  9. package/bin/legacy-skills.json +95 -0
  10. package/catalogs/android-v6.json +1646 -0
  11. package/catalogs/flutter-v6.json +651 -0
  12. package/catalogs/ios-v5.json +1383 -0
  13. package/catalogs/rn-calls-v5.json +134 -0
  14. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  15. package/catalogs/rn-sdk-v4.json +672 -0
  16. package/catalogs/rn-v5.json +449 -0
  17. package/catalogs/rn-v5.symbols.txt +216 -0
  18. package/catalogs/sdk-android-v5.json +514 -0
  19. package/contracts.android-calls-v5.json +122 -0
  20. package/contracts.android-v6.json +135 -0
  21. package/contracts.angular-v5.json +694 -0
  22. package/contracts.flutter-calls-v5.json +77 -0
  23. package/contracts.flutter-v6.json +126 -0
  24. package/contracts.ios-calls-v5.json +67 -0
  25. package/contracts.ios-v5.json +436 -0
  26. package/contracts.json +82 -0
  27. package/contracts.rn-calls-v5.json +77 -0
  28. package/contracts.rn-v5.json +727 -0
  29. package/contracts.sdk-android-v5.json +15 -0
  30. package/contracts.web-calls-v5.json +45 -0
  31. package/features.android-calls-v5.json +246 -0
  32. package/features.android-v6.json +65 -0
  33. package/features.angular-v5.json +521 -0
  34. package/features.flutter-calls-v5.json +286 -0
  35. package/features.flutter-v6.json +484 -0
  36. package/features.ios-calls-v5.json +236 -0
  37. package/features.ios-v5.json +573 -0
  38. package/features.json +61 -0
  39. package/features.rn-calls-v5.json +187 -0
  40. package/features.rn-v5.json +614 -0
  41. package/features.sdk-android-v5.json +40 -0
  42. package/features.sdk-jsv4.json +24 -0
  43. package/features.web-calls-v5.json +108 -0
  44. package/package.json +156 -74
  45. package/peers.yaml +355 -0
  46. package/registry/README.md +31 -0
  47. package/registry/android-calls-v5.json +94 -0
  48. package/registry/android-v6.json +177 -0
  49. package/registry/angular-v5.json +154 -0
  50. package/registry/flutter-calls-v5.json +94 -0
  51. package/registry/flutter-v6.json +159 -0
  52. package/registry/ios-calls-v5.json +99 -0
  53. package/registry/ios-v5.json +152 -0
  54. package/registry/rn-calls-v5.json +99 -0
  55. package/registry/rn-v5.json +169 -0
  56. package/registry/sdk-android-v5.json +93 -0
  57. package/registry/sdk-jsv4.json +93 -0
  58. package/registry/web-calls-v5.json +94 -0
  59. package/registry/web-v7.json +154 -0
  60. package/skills/cometchat/SKILL.md +47 -2096
  61. package/skills/cometchat-a11y/SKILL.md +44 -472
  62. package/skills/cometchat-analytics/SKILL.md +61 -0
  63. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  67. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  68. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  69. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  70. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  71. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  72. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  73. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  74. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  75. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  76. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  77. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  78. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  79. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  80. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  81. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  82. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  83. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  84. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  85. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  86. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  87. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  88. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  89. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  90. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  91. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  92. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  93. package/skills/cometchat-android-v6-production/SKILL.md +41 -179
  94. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  95. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  96. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  97. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  98. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  99. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  100. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  101. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  102. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  103. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  104. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  105. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  106. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  107. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  108. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  109. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  110. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  111. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  112. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  113. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  114. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  115. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  116. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  117. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  118. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  119. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  120. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  121. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  122. package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
  123. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  124. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  125. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  126. package/skills/cometchat-audit/SKILL.md +61 -0
  127. package/skills/cometchat-compliance/SKILL.md +63 -0
  128. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  129. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  130. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  131. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  132. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  133. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  134. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  135. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  136. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  137. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  138. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  139. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  140. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  141. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  142. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  143. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  144. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  145. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  146. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
  147. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  148. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  149. package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
  150. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  151. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  152. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  153. package/skills/cometchat-i18n/SKILL.md +35 -404
  154. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  155. package/skills/cometchat-ios-components/SKILL.md +44 -834
  156. package/skills/cometchat-ios-core/SKILL.md +182 -1068
  157. package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
  158. package/skills/cometchat-ios-core/references/docs-map.md +124 -0
  159. package/skills/cometchat-ios-core/references/install.md +23 -0
  160. package/skills/cometchat-ios-core/references/layout.md +219 -0
  161. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  162. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  163. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  164. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  165. package/skills/cometchat-ios-features/SKILL.md +29 -738
  166. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  167. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  168. package/skills/cometchat-ios-production/SKILL.md +67 -723
  169. package/skills/cometchat-ios-push/SKILL.md +24 -602
  170. package/skills/cometchat-ios-testing/SKILL.md +36 -355
  171. package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
  172. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  173. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  174. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  175. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  176. package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
  177. package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
  178. package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
  179. package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
  180. package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
  181. package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
  182. package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
  183. package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
  184. package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
  185. package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
  186. package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
  187. package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
  188. package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
  189. package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
  190. package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
  191. package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
  192. package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
  193. package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
  194. package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
  195. package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
  196. package/skills/cometchat-moderation/SKILL.md +58 -0
  197. package/skills/cometchat-onboarding/SKILL.md +92 -0
  198. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  199. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  200. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  201. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  202. package/skills/cometchat-onboarding/references/platforms.md +105 -0
  203. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  204. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  205. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  206. package/skills/cometchat-react-native-core/SKILL.md +335 -0
  207. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  208. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  209. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  210. package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
  211. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  212. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  213. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  214. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  215. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  216. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  217. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  218. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  219. package/skills/cometchat-react-native-production/SKILL.md +79 -0
  220. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  221. package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
  222. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  223. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  224. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  225. package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
  226. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  227. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  228. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  229. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  230. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  231. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  232. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  233. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  234. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  235. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  236. package/skills/cometchat-react-v7-core/references/layout.md +150 -0
  237. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  238. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  239. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  240. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  241. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  242. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  243. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  244. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  245. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  246. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  247. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  248. package/skills/cometchat-react-v7-production/SKILL.md +84 -0
  249. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  250. package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
  251. package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
  252. package/skills/cometchat-security/SKILL.md +80 -0
  253. package/skills/cometchat-self-host/SKILL.md +56 -0
  254. package/test-suite/README.md +70 -0
  255. package/test-suite/catalogs/android-calls-v5.json +830 -0
  256. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  257. package/test-suite/catalogs/android-v6.json +1646 -0
  258. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  259. package/test-suite/catalogs/angular-v5.json +7587 -0
  260. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  261. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  262. package/test-suite/catalogs/flutter-v6.json +651 -0
  263. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  264. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  265. package/test-suite/catalogs/ios-v5.json +1383 -0
  266. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  267. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  268. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  269. package/test-suite/catalogs/rn-v5.json +449 -0
  270. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  271. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  272. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  273. package/test-suite/catalogs/web-calls-v5.json +195 -0
  274. package/test-suite/catalogs/web-v7.json +1243 -0
  275. package/test-suite/scripts/build-registry.mjs +113 -0
  276. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  277. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  278. package/test-suite/scripts/lint-skills.mjs +932 -0
  279. package/test-suite/scripts/measure-tokens.mjs +169 -0
  280. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  281. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  282. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  283. package/test-suite/scripts/verify-catalog.mjs +242 -0
  284. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  285. package/test-suite/scripts/verify-detection.mjs +178 -0
  286. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  287. package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
  288. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  289. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  290. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  291. package/test-suite/typecheck/angular-v5/package.json +21 -0
  292. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  293. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  294. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  295. package/test-suite/typecheck/web-v7/package.json +18 -0
  296. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  297. package/bin/install.js +0 -1003
  298. package/skills/.claude-plugin/marketplace.json +0 -86
  299. package/skills/cometchat/references/asking-questions.md +0 -48
  300. package/skills/cometchat-android-v5/SKILL.md +0 -121
  301. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  302. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  303. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  304. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  305. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  306. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  307. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  308. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  309. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  310. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  311. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  312. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  313. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  314. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  315. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  316. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  317. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  318. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  319. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  320. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  321. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  322. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  323. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  324. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  325. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  326. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  327. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  328. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  329. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  330. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  331. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  332. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  333. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  334. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  335. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  336. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  337. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  338. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  339. package/skills/cometchat-android-v6/SKILL.md +0 -108
  340. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  341. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  342. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  343. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  344. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  345. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  346. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  347. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  348. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  349. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  350. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  351. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  352. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  353. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  354. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  355. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  356. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  357. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  358. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  359. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  360. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  361. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  362. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  363. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  364. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  365. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  366. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  367. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  368. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  369. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  370. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  371. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  372. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  373. package/skills/cometchat-angular-components/SKILL.md +0 -235
  374. package/skills/cometchat-angular-core/SKILL.md +0 -386
  375. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  376. package/skills/cometchat-angular-features/SKILL.md +0 -329
  377. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  378. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  379. package/skills/cometchat-angular-production/SKILL.md +0 -564
  380. package/skills/cometchat-angular-push/SKILL.md +0 -389
  381. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  382. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  383. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  384. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  385. package/skills/cometchat-calls/SKILL.md +0 -364
  386. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  387. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  388. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  389. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  390. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  391. package/skills/cometchat-components/SKILL.md +0 -1142
  392. package/skills/cometchat-core/SKILL.md +0 -1048
  393. package/skills/cometchat-customization/SKILL.md +0 -580
  394. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  395. package/skills/cometchat-features/SKILL.md +0 -861
  396. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  397. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  398. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  399. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  400. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  401. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  402. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  403. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  404. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  405. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  406. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  407. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  408. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  409. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  410. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  411. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  412. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  413. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  414. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  415. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  416. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  417. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  418. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  419. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  420. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  421. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  422. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  423. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  424. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  425. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  426. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  427. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  428. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  429. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  430. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  431. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  432. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  433. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  434. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  435. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  436. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  437. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  438. package/skills/cometchat-ios/SKILL.md +0 -325
  439. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  440. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  441. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  442. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  443. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  444. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  445. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  446. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  447. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  448. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  449. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  450. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  451. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  452. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  453. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  454. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  455. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  456. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  457. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  458. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  459. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  460. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  461. package/skills/cometchat-native-calls/SKILL.md +0 -671
  462. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  463. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  464. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  465. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  466. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  467. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  468. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  469. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  470. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  471. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  472. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  473. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  474. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  475. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  476. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  477. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  478. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  479. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  480. package/skills/cometchat-native-components/SKILL.md +0 -628
  481. package/skills/cometchat-native-core/SKILL.md +0 -679
  482. package/skills/cometchat-native-customization/SKILL.md +0 -716
  483. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  484. package/skills/cometchat-native-features/SKILL.md +0 -638
  485. package/skills/cometchat-native-placement/SKILL.md +0 -509
  486. package/skills/cometchat-native-production/SKILL.md +0 -700
  487. package/skills/cometchat-native-push/SKILL.md +0 -594
  488. package/skills/cometchat-native-testing/SKILL.md +0 -582
  489. package/skills/cometchat-native-theming/SKILL.md +0 -681
  490. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  491. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  492. package/skills/cometchat-placement/SKILL.md +0 -1360
  493. package/skills/cometchat-production/SKILL.md +0 -1027
  494. package/skills/cometchat-react-calls/SKILL.md +0 -752
  495. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  496. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  497. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  498. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  499. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  500. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  501. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  502. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  503. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  504. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  505. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  506. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  507. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  508. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  509. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  510. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  511. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  512. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  513. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  514. package/skills/cometchat-react-push/SKILL.md +0 -634
  515. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  516. package/skills/cometchat-react-testing/SKILL.md +0 -413
  517. package/skills/cometchat-theming/SKILL.md +0 -498
  518. 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