cometchat-angular-components — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cometchat-angular-components (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ground truth:@cometchat/[email protected]component catalog (installed package types) +docs/ui-kit/angular. Official docs: https://www.cometchat.com/docs/ui-kit/angular/overview · Docs MCP:claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp(or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
Authoritative reference for every component you'll actually use. Verified against @cometchat/[email protected] bundled types. Never invent a selector, `@Input`, or `@Output` — look it up here (or grep node_modules/@cometchat/chat-uikit-angular/types/cometchat-chat-uikit-angular.d.ts).
Read <cometchat-angular-core> first.
Component suffix) into a standalone component's imports: []. No NgModule, no CUSTOM_ELEMENTS_SCHEMA.<cometchat-conversations>); the class does (CometChatConversationsComponent).<cometchat-conversations-with-messages> / Contacts in v5. Build layouts by composing components (see <cometchat-angular-placement>).| Mechanism | Syntax | Example |
|---|---|---|
| `@Input` (data + config + hide flags) | [input]="value" | [user]="selectedUser" |
| `@Output` (EventEmitter) | (output)="handler($event)" | (itemClick)="onPick($event)" |
| `@Input` callback prop (a function passed as input) | [onCallback]="fnRef" | [onAccept]="handleAccept" |
Slot view (@Input of type TemplateRef/component) | [slotView]="tmplRef" | [leadingView]="myTmpl" |
The `@Output` vs `@Input`-callback distinction is the #1 Angular-v5 trap. Most components use@OutputEventEmitters ((itemClick),(error),(callEnded)). But the call components also expose `@Input` callback props (onAccept,onDecline,onError,onVoiceCallClick, …). And<cometchat-incoming-call>exposes both ([onAccept]input AND(callAccepted)output). Bind the one that exists — the tables below mark which is which.
import { Component } from "@angular/core";
import { CometChatConversationsComponent } from "@cometchat/chat-uikit-angular";
import { CometChat } from "@cometchat/chat-sdk-javascript";
@Component({
selector: "app-conversations",
standalone: true,
imports: [CometChatConversationsComponent],
template: `
<cometchat-conversations
[showSearchBar]="true"
(itemClick)="onConversation($event)"
(error)="onError($event)">
</cometchat-conversations>`,
})
export class AppConversationsComponent {
onConversation(conversation: CometChat.Conversation) { /* … */ }
onError(e: CometChat.CometChatException) { /* … */ }
}Selector: <cometchat-conversations>
The conversation list. Drives the left pane of a chat layout.
conversationsRequestBuilder, activeConversation, selectionMode, options, showSearchBar, showScrollbar, lastMessageDateTimeFormat, textFormatters, disableSoundForMessages, customSoundForMessageshideReceipts, hideError, hideDeleteConversation, hideUserStatus, hideGroupType, disableDefaultContextMenuheaderView, menuView, loadingView, emptyView, errorView, searchView, itemView, leadingView, titleView, subtitleView, trailingViewitemClick, select, error, searchBarClick, contextMenuOpen, contextMenuClose, scrollToTop, scrollToBottom, selectionChangeSelector: <cometchat-users>
usersRequestBuilder, searchRequestBuilder, searchKeyword, activeUser, selectionMode, options, showSectionHeader, sectionHeaderKey, showScrollbar, showSelectedUsersPreviewhideSearch, hideError, hideUserStatus, disableLoadingState, disableDefaultContextMenuheaderView, menuView, loadingView, emptyView, errorView, itemView, leadingView, titleView, subtitleView, trailingViewitemClick, select, error, empty, selectionChangeSelector: <cometchat-groups>
groupsRequestBuilder, searchRequestBuilder, activeGroup, selectionMode, options, showScrollbarhideSearch, hideError, hideGroupType, disableDefaultContextMenuheaderView, menuView, loadingView, emptyView, errorView, itemView, leadingView, titleView, subtitleView, trailingViewitemClick, select, error, selectionChangeSelector: <cometchat-group-members>
group (required), groupMemberRequestBuilder, searchRequestBuilder, searchKeyword, selectionMode, options, showScrollbarhideSearch, hideError, hideUserStatus, hideKickMemberOption, hideBanMemberOption, hideScopeChangeOption, disableLoadingState, disableDefaultContextMenuheaderView, menuView, loadingView, errorView, emptyView, itemView, leadingView, titleView, subtitleView, trailingViewerror, itemClick, selectionChange, emptySelector: <cometchat-message-header>
Header bar above the message list. Pass `user` OR `group` (mutually exclusive).
user, group, callSettingsBuilder, lastActiveAtDateTimeFormat, summaryGenerationMessageCount, enableAutoSummaryGenerationhideUserStatus, showBackButton, hideVoiceCallButton, hideVideoCallButton, showSearchOption, showConversationSummaryButtonheaderView, itemView, leadingView, titleView, subtitleView, trailingView, backButtonView, auxiliaryButtonViewbackClick, itemClick, searchClick, conversationSummaryClick, error, voiceCallClick, videoCallClickSelector: <cometchat-message-list>
The message stream. Pass `user` OR `group` (and parentMessageId for threads).
user, group, parentMessageId, messagesRequestBuilder, reactionsRequestBuilder, textFormatters, messageAlignment, scrollToBottomOnNewMessages, goToMessageId, quickOptionsCount, additionalOptions, optionsOverrideshowConversationStarters, showSmartReplies, smartRepliesKeywords, smartRepliesDelayDurationhideReceipts, hideDateSeparator, hideStickyDate, hideAvatar, hideGroupActionMessages, hideError, hideReplyInThreadOption, hideTranslateMessageOption, hideEditMessageOption, hideDeleteMessageOption, hideReactionOption, hideMessagePrivatelyOption, hideCopyMessageOption, hideMessageInfoOption, hideReplyOption, hideTimestamp, hideModerationView, hideFlagMessageOption, showMarkAsUnreadOption, startFromUnreadMessages, disableInteractionheaderView, footerView, emptyView, errorView, loadingView, bubbleFooterView, appendViewerror, threadRepliesClick, reactionClick, reactionListItemClick, smartReplyClick, conversationStarterClick, messagePrivatelyClick, replyClickSelector: <cometchat-message-composer>
The input box. Pass `user` OR `group` (and parentMessageId for threads).
user, group, parentMessageId, placeholderText, initialComposerText, text, maxHeight, enterKeyBehavior, attachmentOptions, maxAttachments, allowedFileTypes, maxFileSize, layout, textFormatters, messageToEdit, messageToReply, mentionsUsersRequestBuilder, mentionsGroupMembersRequestBuilderhideAttachmentButton, hideImageAttachmentOption, hideVideoAttachmentOption, hideAudioAttachmentOption, hideFileAttachmentOption, hidePollsOption, hideCollaborativeDocumentOption, hideCollaborativeWhiteboardOption, hideEmojiKeyboardButton, hideVoiceRecordingButton, hideStickersButton, hideLiveReaction, hideSendButton, hideRichTextToolbar, disableMentions, disableMentionAll, disableTypingEvents, enableRichTextheaderView, footerView, sendButtonView, auxiliaryButtonView, secondaryButtonView, attachmentIconView, voiceRecordingIconView, emojiIconView, errorViewtextChange, sendButtonClick, error, closePreview, attachmentAdded, attachmentRemoved, mentionSelectedSelector: <cometchat-message-information>
message, dateTimeFormat, textFormatters, showScrollbar · `@Output`: closeClick<cometchat-thread-header> / <cometchat-thread-view><cometchat-thread-header>: @Input parentMessage, replyCount · @Output closeClick, backClick<cometchat-thread-view>: @Input mode, replyCount, unreadReplyCount, parentMessage, announceOnOpen · @Output threadClick, closeClick<cometchat-message-list> + <cometchat-message-composer> with the same [parentMessageId].Selector: <cometchat-reactions>
message, alignment, reactionsRequestBuilder, hoverDebounceTime · `@Output`: reactionClick, reactionListItemClickSelector: <cometchat-search>
Unified conversation + message search.
searchIn, searchFilters, initialSearchFilter, defaultSearchText, uid, guid, conversationsRequestBuilder, messagesRequestBuilder, hideBackButton (+ per-result slot views)backClick, conversationClick, messageClick, searchErrorBinding nuance: call components use `@Input` callback props (onAccept,onDecline,onError,onVoiceCallClick, …) AND some@OutputEventEmitters. Bind the form that exists per the tables.<cometchat-incoming-call>exposes both — prefer the@Inputcallbacks for accept/decline (they carry the kit's call handling) and use the@Outputs for observing.
Selector: <cometchat-call-buttons>
Voice/video buttons for a user or group. Drop into a header or contact row.
user, group, callSettingsBuilder, hideVoiceCallButton, hideVideoCallButton, hideOverlays, outgoingCallDisableSoundForCalls, outgoingCallCustomSoundForCallsonVoiceCallClick, onVideoCallClick, onErrorvoiceCallButtonView, videoCallButtonViewerrorSelector: <cometchat-incoming-call>
Incoming-call banner/overlay. Mount app-wide (see calls skill).
call, disableSoundForCalls, customSoundForCallsonAccept, onDecline, onErroritemView, titleView, subtitleView, leadingView, trailingView, acceptButtonView, declineButtonViewcallAccepted, callDeclined, errorSelector: <cometchat-outgoing-call>
call, disableSoundForCalls, customSoundForCalls · `@Input` callback: onError · Slots: titleView, subtitleView, avatarView, cancelButtonView · `@Output`: callCanceled, errorSelector: <cometchat-ongoing-call>
The active WebRTC call surface.
sessionID, callSettingsBuilder, callWorkflow, isAudioOnly · `@Input` callback: onError · Slot: callScreenView · `@Output`: callEnded, errorSelector: <cometchat-call-logs>
activeCall, callLogRequestBuilder, callSettingsBuilder, callInitiatedDateTimeFormat, showScrollbar · `@Input` callback: onError · Slots: menuView, itemView, leadingView, titleView, subtitleView, trailingView, loadingView, emptyView, errorView · `@Output`: itemClick, callButtonClicked<cometchat-conversation-starter> — @Input user, group · @Output starterClick
<cometchat-conversation-summary> — @Input getConversationSummary, closeCallback
<cometchat-smart-replies> — smart-reply chips
<cometchat-ai-assistant-chat> (+ CometChatAIAssistantChatHistory / CometChatAIAssistantMessageBubble) — AI assistant chat surfaces.
AI views are usually surfaced through <cometchat-message-list>'s showSmartReplies / showConversationStarters inputs and the header's summary button — see the cometchat-angular-features skill.
Building blocks + bubbles + dialogs you rarely instantiate directly (the list/message components compose them), but they're exported and available: <cometchat-avatar>, <cometchat-button>, <cometchat-list-item>, <cometchat-date>, <cometchat-search-bar>, <cometchat-emoji-keyboard>, <cometchat-stickers-keyboard>, <cometchat-media-recorder>, <cometchat-reaction-list>, <cometchat-reaction-info>, <cometchat-create-poll>, <cometchat-fullscreen-viewer>, <cometchat-confirm-dialog>, <cometchat-flag-message-dialog>, <cometchat-change-scope>, <cometchat-context-menu>, <cometchat-popover>, <cometchat-toast>, <cometchat-typing-indicator>, and the bubble set (<cometchat-text-bubble>, -image-bubble, -video-bubble, -audio-bubble, -file-bubble, -call-bubble, -poll-bubble, -sticker-bubble, -collaborative-document-bubble, -collaborative-whiteboard-bubble, -action-bubble, -delete-bubble, -message-bubble).
To confirm any of their bindings, grep the bundled .d.ts for ɵɵComponentDeclaration<<Class>, — the input/output names are in the type literal.
.d.ts), it doesn't exist. v4 prop names frequently differ from v5.[onAccept]="fn" (input) vs (callAccepted)="fn($event)" (output) — use the one listed.<cometchat-conversations-with-messages>) — removed in v5. Compose manually.imports: [] — otherwise the selector renders as an unknown element.<cometchat-angular-core> — setup, init, login<cometchat-angular-placement> — composing these into routes/modals/drawers<cometchat-angular-customization> — slot templates, formatters, options overrides<cometchat-angular-calls> — full call flow + incoming-call mounting~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.