* Agents streaming * Fix bug and lint * Add reasoning summaries to mobile agents * Add tool call approval UI for mobile agents * Add citations and annotations support for mobile agents Implements Phase 4 from the agents mobile plan: - WebSocket event handling for annotations control signal - CitationsList component displaying sources below agent responses - Collapsible sources section with source count - Each citation shows title, domain, and opens URL on tap - Citations persisted in post.props.annotations - Touch-optimized UI with 44pt minimum tap targets * Add stop and regenerate controls for mobile agents * Add tests * Fix tool approval buttons not updating after accept/reject - Remove optimistic WebSocket event approach that didn't work - Clear component streaming state on ENDED event to force switch to persisted data - Remove delays in streaming store cleanup (500ms and 100ms) - POST_EDITED event now properly updates UI for both accept and reject - Remove debug console.log statements - Fix ESLint issues (unused vars, nested callbacks, nested ternary) * Refactor agents code: remove unused client mixin, fix bugs, and simplify logic * Fixes * Add CLAUDE.md * Review feedback. * Review feedback inline functions * Learnings * Address review feedback: StyleSheet.create, parent mount checks, utils * Move to observables * Last style fix * Style tweaks
29 lines
916 B
TypeScript
29 lines
916 B
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {AGENT_POST_TYPES} from '@agents/constants';
|
|
|
|
import type PostModel from '@typings/database/models/servers/post';
|
|
|
|
/**
|
|
* Check if a post is an agent post
|
|
*/
|
|
export function isAgentPost(post: PostModel | Post): boolean {
|
|
return post.type === AGENT_POST_TYPES.LLMBOT ||
|
|
post.type === AGENT_POST_TYPES.LLM_POSTBACK;
|
|
}
|
|
|
|
/**
|
|
* Check if the current user is the requester of an agent post
|
|
* @param post The agent post
|
|
* @param currentUserId The current user ID
|
|
* @returns true if current user is the requester
|
|
*/
|
|
export function isPostRequester(post: PostModel | Post, currentUserId: string): boolean {
|
|
try {
|
|
const props = post.props as Record<string, unknown>;
|
|
return props?.llm_requester_user_id === currentUserId;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|