diff --git a/app/app/v1alpha/conversation_pb2.py b/app/app/v1alpha/conversation_pb2.py
index f3e6bf1..9699eb7 100644
--- a/app/app/v1alpha/conversation_pb2.py
+++ b/app/app/v1alpha/conversation_pb2.py
@@ -18,7 +18,7 @@
 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"app/app/v1alpha/conversation.proto\x12\x0f\x61pp.app.v1alpha\x1a\x1b\x61pp/app/v1alpha/agent.proto\x1a%artifact/artifact/v1alpha/chunk.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9e\x03\n\x0c\x43onversation\x12\x15\n\x03uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x03uid\x12&\n\x0cnamespace_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12\x13\n\x02id\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x02id\x12;\n\x15last_used_catalog_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x00R\x12lastUsedCatalogUid\x88\x01\x01\x12/\n\x0flast_used_top_k\x18\x06 \x01(\rB\x03\xe0\x41\x01H\x01R\x0clastUsedTopK\x88\x01\x01\x12@\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\ncreateTime\x12@\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\nupdateTimeB\x18\n\x16_last_used_catalog_uidB\x12\n\x10_last_used_top_k\"\xb2\x04\n\x04\x43hat\x12\x15\n\x03uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x03uid\x12&\n\x0cnamespace_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12;\n\x15last_used_catalog_uid\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x12lastUsedCatalogUid\x88\x01\x01\x12/\n\x0flast_used_top_k\x18\x05 \x01(\rB\x03\xe0\x41\x01H\x01R\x0clastUsedTopK\x88\x01\x01\x12@\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\ncreateTime\x12@\n\x0bupdate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\nupdateTime\x12T\n\x11\x61i_agent_metadata\x18\x08 \x01(\x0b\x32#.app.app.v1alpha.AIAgentAppMetadataB\x03\xe0\x41\x03R\x0f\x61iAgentMetadata\x12\x30\n\x0ftemp_catalog_id\x18\t \x01(\tB\x03\xe0\x41\x01H\x02R\rtempCatalogId\x88\x01\x01\x12/\n\x11\x63hat_display_name\x18\n \x01(\tB\x03\xe0\x41\x01R\x0f\x63hatDisplayNameB\x18\n\x16_last_used_catalog_uidB\x12\n\x10_last_used_top_kB\x12\n\x10_temp_catalog_id\"\xcd\x04\n\x07Message\x12\x15\n\x03uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x03uid\x12\x1c\n\x07\x61pp_uid\x18\x02 \x01(\tB\x03\xe0\x41\x03R\x06\x61ppUid\x12.\n\x10\x63onversation_uid\x18\x03 \x01(\tB\x03\xe0\x41\x03R\x0f\x63onversationUid\x12\x1d\n\x07\x63ontent\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x07\x63ontent\x12\x17\n\x04role\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x04role\x12=\n\x04type\x18\x06 \x01(\x0e\x32$.app.app.v1alpha.Message.MessageTypeB\x03\xe0\x41\x02R\x04type\x12@\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\ncreateTime\x12@\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\nupdateTime\x12)\n\x0emsg_sender_uid\x18\t \x01(\tB\x03\xe0\x41\x03R\x0cmsgSenderUid\x12=\n\x06\x63hunks\x18\n \x03(\x0b\x32 .artifact.artifact.v1alpha.ChunkB\x03\xe0\x41\x03R\x06\x63hunks\x12\x34\n\x13standalone_question\x18\x0b \x01(\tB\x03\xe0\x41\x03R\x12standaloneQuestion\"B\n\x0bMessageType\x12\x1c\n\x18MESSAGE_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MESSAGE_TYPE_TEXT\x10\x01\"\x8d\x01\n\x19\x43reateConversationRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\"d\n\x1a\x43reateConversationResponse\x12\x46\n\x0c\x63onversation\x18\x01 \x01(\x0b\x32\x1d.app.app.v1alpha.ConversationB\x03\xe0\x41\x03R\x0c\x63onversation\"\xb8\x01\n\x11\x43reateChatRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12/\n\x11\x63hat_display_name\x18\x02 \x01(\tB\x03\xe0\x41\x01R\x0f\x63hatDisplayName\x12J\n\x0c\x61i_agent_app\x18\x03 \x01(\x0b\x32#.app.app.v1alpha.AIAgentAppMetadataB\x03\xe0\x41\x01R\naiAgentApp\"D\n\x12\x43reateChatResponse\x12.\n\x04\x63hat\x18\x01 \x01(\x0b\x32\x15.app.app.v1alpha.ChatB\x03\xe0\x41\x03R\x04\x63hat\"\x9e\x02\n\x18ListConversationsRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12 \n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x04 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12.\n\x10\x63onversation_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01R\x0f\x63onversationUid\x12,\n\x0f\x63onversation_id\x18\x06 \x01(\tB\x03\xe0\x41\x01R\x0e\x63onversationId\x12\x1a\n\x06if_all\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\"\xb6\x01\n\x19ListConversationsResponse\x12H\n\rconversations\x18\x01 \x03(\x0b\x32\x1d.app.app.v1alpha.ConversationB\x03\xe0\x41\x03R\rconversations\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\"\xbc\x01\n\x10ListChatsRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12 \n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1a\n\x06if_all\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\x12\x1e\n\x08\x63hat_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01R\x07\x63hatUid\"\x96\x01\n\x11ListChatsResponse\x12\x30\n\x05\x63hats\x18\x01 \x03(\x0b\x32\x15.app.app.v1alpha.ChatB\x03\xe0\x41\x03R\x05\x63hats\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\"\xf6\x02\n\x19UpdateConversationRequest\x12!\n\x0cnamespace_id\x18\x01 \x01(\tR\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12\x38\n\x13new_conversation_id\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x11newConversationId\x88\x01\x01\x12;\n\x15last_used_catalog_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x01R\x12lastUsedCatalogUid\x88\x01\x01\x12/\n\x0flast_used_top_k\x18\x06 \x01(\rB\x03\xe0\x41\x01H\x02R\x0clastUsedTopK\x88\x01\x01\x42\x16\n\x14_new_conversation_idB\x18\n\x16_last_used_catalog_uidB\x12\n\x10_last_used_top_k\"d\n\x1aUpdateConversationResponse\x12\x46\n\x0c\x63onversation\x18\x01 \x01(\x0b\x32\x1d.app.app.v1alpha.ConversationB\x03\xe0\x41\x03R\x0c\x63onversation\"\xdd\x01\n\x11UpdateChatRequest\x12!\n\x0cnamespace_id\x18\x01 \x01(\tR\x0bnamespaceId\x12\x1e\n\x08\x63hat_uid\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x07\x63hatUid\x12/\n\x11\x63hat_display_name\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x0f\x63hatDisplayName\x12T\n\x11\x61i_agent_metadata\x18\x04 \x01(\x0b\x32#.app.app.v1alpha.AIAgentAppMetadataB\x03\xe0\x41\x01R\x0f\x61iAgentMetadata\"D\n\x12UpdateChatResponse\x12.\n\x04\x63hat\x18\x01 \x01(\x0b\x32\x15.app.app.v1alpha.ChatB\x03\xe0\x41\x03R\x04\x63hat\"\x8d\x01\n\x19\x44\x65leteConversationRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\"\x1c\n\x1a\x44\x65leteConversationResponse\"[\n\x11\x44\x65leteChatRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1e\n\x08\x63hat_uid\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x07\x63hatUid\"\x14\n\x12\x44\x65leteChatResponse\"\xff\x01\n\x14\x43reateMessageRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12\x1d\n\x07\x63ontent\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x07\x63ontent\x12\x17\n\x04role\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x04role\x12=\n\x04type\x18\x06 \x01(\x0e\x32$.app.app.v1alpha.Message.MessageTypeB\x03\xe0\x41\x02R\x04type\"K\n\x15\x43reateMessageResponse\x12\x32\n\x07message\x18\x01 \x01(\x0b\x32\x18.app.app.v1alpha.MessageR\x07message\"\xd5\x01\n\x14MessageSenderProfile\x12)\n\x0emsg_sender_uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x0cmsgSenderUid\x12\'\n\rmsg_sender_id\x18\x02 \x01(\tB\x03\xe0\x41\x03R\x0bmsgSenderId\x12+\n\x0c\x64isplay_name\x18\x03 \x01(\tB\x03\xe0\x41\x03H\x00R\x0b\x64isplayName\x88\x01\x01\x12 \n\x06\x61vatar\x18\x04 \x01(\tB\x03\xe0\x41\x03H\x01R\x06\x61vatar\x88\x01\x01\x42\x0f\n\r_display_nameB\t\n\x07_avatar\"\xec\x02\n\x13ListMessagesRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12\x1e\n\x08latest_k\x18\x04 \x01(\x05\x42\x03\xe0\x41\x01R\x07latestK\x12 \n\tpage_size\x18\x05 \x01(\x05\x42\x03\xe0\x41\x03R\x08pageSize\x12\"\n\npage_token\x18\x06 \x01(\tB\x03\xe0\x41\x03R\tpageToken\x12;\n\x17include_system_messages\x18\x07 \x01(\x08\x42\x03\xe0\x41\x03R\x15includeSystemMessages\x12\x1a\n\x06if_all\x18\x08 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\x12$\n\x0bmessage_uid\x18\t \x01(\tB\x03\xe0\x41\x01R\nmessageUid\"\xf7\x01\n\x14ListMessagesResponse\x12\x39\n\x08messages\x18\x01 \x03(\x0b\x32\x18.app.app.v1alpha.MessageB\x03\xe0\x41\x03R\x08messages\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\x12S\n\x0fsender_profiles\x18\x04 \x03(\x0b\x32%.app.app.v1alpha.MessageSenderProfileB\x03\xe0\x41\x03R\x0esenderProfiles\"\xcd\x01\n\x14UpdateMessageRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12$\n\x0bmessage_uid\x18\x04 \x01(\tB\x03\xe0\x41\x02R\nmessageUid\x12\x1d\n\x07\x63ontent\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x07\x63ontent\"P\n\x15UpdateMessageResponse\x12\x37\n\x07message\x18\x01 \x01(\x0b\x32\x18.app.app.v1alpha.MessageB\x03\xe0\x41\x03R\x07message\"\xae\x01\n\x14\x44\x65leteMessageRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12$\n\x0bmessage_uid\x18\x04 \x01(\tB\x03\xe0\x41\x02R\nmessageUid\"\x17\n\x15\x44\x65leteMessageResponse\"\xc3\x01\n\x17ListChatMessagesRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1e\n\x08\x63hat_uid\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x07\x63hatUid\x12 \n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\x08pageSize\x12\"\n\npage_token\x18\x04 \x01(\tB\x03\xe0\x41\x03R\tpageToken\x12\x1a\n\x06if_all\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\"\xa6\x01\n\x18ListChatMessagesResponse\x12\x39\n\x08messages\x18\x01 \x03(\x0b\x32\x18.app.app.v1alpha.MessageB\x03\xe0\x41\x03R\x08messages\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\"\xdd\x02\n\x0b\x43hatRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12\"\n\ncatalog_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\tcatalogId\x12.\n\x10\x63onversation_uid\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0f\x63onversationUid\x12\x1d\n\x07message\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x07message\x12\x18\n\x05top_k\x18\x06 \x01(\rH\x00R\x04topK\x88\x01\x01\x12 \n\tllm_model\x18\x07 \x01(\tH\x01R\x08llmModel\x88\x01\x01\x12.\n\x10user_instruction\x18\x08 \x01(\tH\x02R\x0fuserInstruction\x88\x01\x01\x42\x08\n\x06_top_kB\x0c\n\n_llm_modelB\x13\n\x11_user_instruction\"\x8f\x01\n\x0c\x43hatResponse\x12\x36\n\x07outputs\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x03R\x07outputs\x12G\n\x06\x63hunks\x18\x02 \x03(\x0b\x32*.artifact.artifact.v1alpha.SimilarityChunkB\x03\xe0\x41\x03R\x06\x63hunksB\xc4\x01\n\x13\x63om.app.app.v1alphaB\x11\x43onversationProtoP\x01Z<github.com/instill-ai/protogen-go/app/app/v1alpha;appv1alpha\xa2\x02\x03\x41\x41X\xaa\x02\x0f\x41pp.App.V1alpha\xca\x02\x0f\x41pp\\App\\V1alpha\xe2\x02\x1b\x41pp\\App\\V1alpha\\GPBMetadata\xea\x02\x11\x41pp::App::V1alphab\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"app/app/v1alpha/conversation.proto\x12\x0f\x61pp.app.v1alpha\x1a\x1b\x61pp/app/v1alpha/agent.proto\x1a%artifact/artifact/v1alpha/chunk.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9e\x03\n\x0c\x43onversation\x12\x15\n\x03uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x03uid\x12&\n\x0cnamespace_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12\x13\n\x02id\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x02id\x12;\n\x15last_used_catalog_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x00R\x12lastUsedCatalogUid\x88\x01\x01\x12/\n\x0flast_used_top_k\x18\x06 \x01(\rB\x03\xe0\x41\x01H\x01R\x0clastUsedTopK\x88\x01\x01\x12@\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\ncreateTime\x12@\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\nupdateTimeB\x18\n\x16_last_used_catalog_uidB\x12\n\x10_last_used_top_k\"\xb2\x04\n\x04\x43hat\x12\x15\n\x03uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x03uid\x12&\n\x0cnamespace_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12;\n\x15last_used_catalog_uid\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x12lastUsedCatalogUid\x88\x01\x01\x12/\n\x0flast_used_top_k\x18\x05 \x01(\rB\x03\xe0\x41\x01H\x01R\x0clastUsedTopK\x88\x01\x01\x12@\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\ncreateTime\x12@\n\x0bupdate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\nupdateTime\x12T\n\x11\x61i_agent_metadata\x18\x08 \x01(\x0b\x32#.app.app.v1alpha.AIAgentAppMetadataB\x03\xe0\x41\x03R\x0f\x61iAgentMetadata\x12\x30\n\x0ftemp_catalog_id\x18\t \x01(\tB\x03\xe0\x41\x01H\x02R\rtempCatalogId\x88\x01\x01\x12/\n\x11\x63hat_display_name\x18\n \x01(\tB\x03\xe0\x41\x01R\x0f\x63hatDisplayNameB\x18\n\x16_last_used_catalog_uidB\x12\n\x10_last_used_top_kB\x12\n\x10_temp_catalog_id\"\xe2\x01\n\x08\x43itation\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32\x1e.app.app.v1alpha.CitationsTypeR\x04type\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x03R\x04name\x12\x1a\n\x03url\x18\x03 \x01(\tB\x03\xe0\x41\x03H\x00R\x03url\x88\x01\x01\x12%\n\tchunk_uid\x18\x04 \x01(\tB\x03\xe0\x41\x03H\x01R\x08\x63hunkUid\x88\x01\x01\x12#\n\x08\x66ile_uid\x18\x05 \x01(\tB\x03\xe0\x41\x03H\x02R\x07\x66ileUid\x88\x01\x01\x42\x06\n\x04_urlB\x0c\n\n_chunk_uidB\x0b\n\t_file_uid\"\xcc\x04\n\x07Message\x12\x15\n\x03uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x03uid\x12\x1c\n\x07\x61pp_uid\x18\x02 \x01(\tB\x03\xe0\x41\x03R\x06\x61ppUid\x12.\n\x10\x63onversation_uid\x18\x03 \x01(\tB\x03\xe0\x41\x03R\x0f\x63onversationUid\x12\x1d\n\x07\x63ontent\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x07\x63ontent\x12\x17\n\x04role\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x04role\x12=\n\x04type\x18\x06 \x01(\x0e\x32$.app.app.v1alpha.Message.MessageTypeB\x03\xe0\x41\x02R\x04type\x12@\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\ncreateTime\x12@\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\nupdateTime\x12)\n\x0emsg_sender_uid\x18\t \x01(\tB\x03\xe0\x41\x03R\x0cmsgSenderUid\x12\x34\n\x13standalone_question\x18\n \x01(\tB\x03\xe0\x41\x03R\x12standaloneQuestion\x12<\n\tcitations\x18\x0b \x03(\x0b\x32\x19.app.app.v1alpha.CitationB\x03\xe0\x41\x03R\tcitations\"B\n\x0bMessageType\x12\x1c\n\x18MESSAGE_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MESSAGE_TYPE_TEXT\x10\x01\"\x8d\x01\n\x19\x43reateConversationRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\"d\n\x1a\x43reateConversationResponse\x12\x46\n\x0c\x63onversation\x18\x01 \x01(\x0b\x32\x1d.app.app.v1alpha.ConversationB\x03\xe0\x41\x03R\x0c\x63onversation\"\xb8\x01\n\x11\x43reateChatRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12/\n\x11\x63hat_display_name\x18\x02 \x01(\tB\x03\xe0\x41\x01R\x0f\x63hatDisplayName\x12J\n\x0c\x61i_agent_app\x18\x03 \x01(\x0b\x32#.app.app.v1alpha.AIAgentAppMetadataB\x03\xe0\x41\x01R\naiAgentApp\"D\n\x12\x43reateChatResponse\x12.\n\x04\x63hat\x18\x01 \x01(\x0b\x32\x15.app.app.v1alpha.ChatB\x03\xe0\x41\x03R\x04\x63hat\"\x9e\x02\n\x18ListConversationsRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12 \n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x04 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12.\n\x10\x63onversation_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01R\x0f\x63onversationUid\x12,\n\x0f\x63onversation_id\x18\x06 \x01(\tB\x03\xe0\x41\x01R\x0e\x63onversationId\x12\x1a\n\x06if_all\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\"\xb6\x01\n\x19ListConversationsResponse\x12H\n\rconversations\x18\x01 \x03(\x0b\x32\x1d.app.app.v1alpha.ConversationB\x03\xe0\x41\x03R\rconversations\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\"\xbc\x01\n\x10ListChatsRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12 \n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1a\n\x06if_all\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\x12\x1e\n\x08\x63hat_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01R\x07\x63hatUid\"\x96\x01\n\x11ListChatsResponse\x12\x30\n\x05\x63hats\x18\x01 \x03(\x0b\x32\x15.app.app.v1alpha.ChatB\x03\xe0\x41\x03R\x05\x63hats\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\"\xf6\x02\n\x19UpdateConversationRequest\x12!\n\x0cnamespace_id\x18\x01 \x01(\tR\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12\x38\n\x13new_conversation_id\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x11newConversationId\x88\x01\x01\x12;\n\x15last_used_catalog_uid\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x01R\x12lastUsedCatalogUid\x88\x01\x01\x12/\n\x0flast_used_top_k\x18\x06 \x01(\rB\x03\xe0\x41\x01H\x02R\x0clastUsedTopK\x88\x01\x01\x42\x16\n\x14_new_conversation_idB\x18\n\x16_last_used_catalog_uidB\x12\n\x10_last_used_top_k\"d\n\x1aUpdateConversationResponse\x12\x46\n\x0c\x63onversation\x18\x01 \x01(\x0b\x32\x1d.app.app.v1alpha.ConversationB\x03\xe0\x41\x03R\x0c\x63onversation\"\xdd\x01\n\x11UpdateChatRequest\x12!\n\x0cnamespace_id\x18\x01 \x01(\tR\x0bnamespaceId\x12\x1e\n\x08\x63hat_uid\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x07\x63hatUid\x12/\n\x11\x63hat_display_name\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x0f\x63hatDisplayName\x12T\n\x11\x61i_agent_metadata\x18\x04 \x01(\x0b\x32#.app.app.v1alpha.AIAgentAppMetadataB\x03\xe0\x41\x01R\x0f\x61iAgentMetadata\"D\n\x12UpdateChatResponse\x12.\n\x04\x63hat\x18\x01 \x01(\x0b\x32\x15.app.app.v1alpha.ChatB\x03\xe0\x41\x03R\x04\x63hat\"\x8d\x01\n\x19\x44\x65leteConversationRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\"\x1c\n\x1a\x44\x65leteConversationResponse\"[\n\x11\x44\x65leteChatRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1e\n\x08\x63hat_uid\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x07\x63hatUid\"\x14\n\x12\x44\x65leteChatResponse\"\xff\x01\n\x14\x43reateMessageRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12\x1d\n\x07\x63ontent\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x07\x63ontent\x12\x17\n\x04role\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x04role\x12=\n\x04type\x18\x06 \x01(\x0e\x32$.app.app.v1alpha.Message.MessageTypeB\x03\xe0\x41\x02R\x04type\"K\n\x15\x43reateMessageResponse\x12\x32\n\x07message\x18\x01 \x01(\x0b\x32\x18.app.app.v1alpha.MessageR\x07message\"\xd5\x01\n\x14MessageSenderProfile\x12)\n\x0emsg_sender_uid\x18\x01 \x01(\tB\x03\xe0\x41\x03R\x0cmsgSenderUid\x12\'\n\rmsg_sender_id\x18\x02 \x01(\tB\x03\xe0\x41\x03R\x0bmsgSenderId\x12+\n\x0c\x64isplay_name\x18\x03 \x01(\tB\x03\xe0\x41\x03H\x00R\x0b\x64isplayName\x88\x01\x01\x12 \n\x06\x61vatar\x18\x04 \x01(\tB\x03\xe0\x41\x03H\x01R\x06\x61vatar\x88\x01\x01\x42\x0f\n\r_display_nameB\t\n\x07_avatar\"\xec\x02\n\x13ListMessagesRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12\x1e\n\x08latest_k\x18\x04 \x01(\x05\x42\x03\xe0\x41\x01R\x07latestK\x12 \n\tpage_size\x18\x05 \x01(\x05\x42\x03\xe0\x41\x03R\x08pageSize\x12\"\n\npage_token\x18\x06 \x01(\tB\x03\xe0\x41\x03R\tpageToken\x12;\n\x17include_system_messages\x18\x07 \x01(\x08\x42\x03\xe0\x41\x03R\x15includeSystemMessages\x12\x1a\n\x06if_all\x18\x08 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\x12$\n\x0bmessage_uid\x18\t \x01(\tB\x03\xe0\x41\x01R\nmessageUid\"\xf7\x01\n\x14ListMessagesResponse\x12\x39\n\x08messages\x18\x01 \x03(\x0b\x32\x18.app.app.v1alpha.MessageB\x03\xe0\x41\x03R\x08messages\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\x12S\n\x0fsender_profiles\x18\x04 \x03(\x0b\x32%.app.app.v1alpha.MessageSenderProfileB\x03\xe0\x41\x03R\x0esenderProfiles\"\xcd\x01\n\x14UpdateMessageRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12$\n\x0bmessage_uid\x18\x04 \x01(\tB\x03\xe0\x41\x02R\nmessageUid\x12\x1d\n\x07\x63ontent\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x07\x63ontent\"P\n\x15UpdateMessageResponse\x12\x37\n\x07message\x18\x01 \x01(\x0b\x32\x18.app.app.v1alpha.MessageB\x03\xe0\x41\x03R\x07message\"\xae\x01\n\x14\x44\x65leteMessageRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12,\n\x0f\x63onversation_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0e\x63onversationId\x12$\n\x0bmessage_uid\x18\x04 \x01(\tB\x03\xe0\x41\x02R\nmessageUid\"\x17\n\x15\x44\x65leteMessageResponse\"\xc3\x01\n\x17ListChatMessagesRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1e\n\x08\x63hat_uid\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x07\x63hatUid\x12 \n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\x08pageSize\x12\"\n\npage_token\x18\x04 \x01(\tB\x03\xe0\x41\x03R\tpageToken\x12\x1a\n\x06if_all\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01R\x05ifAll\"\xa6\x01\n\x18ListChatMessagesResponse\x12\x39\n\x08messages\x18\x01 \x03(\x0b\x32\x18.app.app.v1alpha.MessageB\x03\xe0\x41\x03R\x08messages\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x03R\rnextPageToken\x12\"\n\ntotal_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x03R\ttotalSize\"\xdd\x02\n\x0b\x43hatRequest\x12&\n\x0cnamespace_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0bnamespaceId\x12\x1a\n\x06\x61pp_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x05\x61ppId\x12\"\n\ncatalog_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\tcatalogId\x12.\n\x10\x63onversation_uid\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0f\x63onversationUid\x12\x1d\n\x07message\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x07message\x12\x18\n\x05top_k\x18\x06 \x01(\rH\x00R\x04topK\x88\x01\x01\x12 \n\tllm_model\x18\x07 \x01(\tH\x01R\x08llmModel\x88\x01\x01\x12.\n\x10user_instruction\x18\x08 \x01(\tH\x02R\x0fuserInstruction\x88\x01\x01\x42\x08\n\x06_top_kB\x0c\n\n_llm_modelB\x13\n\x11_user_instruction\"\x8f\x01\n\x0c\x43hatResponse\x12\x36\n\x07outputs\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x03R\x07outputs\x12G\n\x06\x63hunks\x18\x02 \x03(\x0b\x32*.artifact.artifact.v1alpha.SimilarityChunkB\x03\xe0\x41\x03R\x06\x63hunks*a\n\rCitationsType\x12\x1e\n\x1a\x43ITATIONS_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x43ITATIONS_TYPE_CHUNK\x10\x01\x12\x16\n\x12\x43ITATIONS_TYPE_URL\x10\x02\x42\xc4\x01\n\x13\x63om.app.app.v1alphaB\x11\x43onversationProtoP\x01Z<github.com/instill-ai/protogen-go/app/app/v1alpha;appv1alpha\xa2\x02\x03\x41\x41X\xaa\x02\x0f\x41pp.App.V1alpha\xca\x02\x0f\x41pp\\App\\V1alpha\xe2\x02\x1b\x41pp\\App\\V1alpha\\GPBMetadata\xea\x02\x11\x41pp::App::V1alphab\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -61,6 +61,14 @@
   _CHAT.fields_by_name['temp_catalog_id']._serialized_options = b'\340A\001'
   _CHAT.fields_by_name['chat_display_name']._options = None
   _CHAT.fields_by_name['chat_display_name']._serialized_options = b'\340A\001'
+  _CITATION.fields_by_name['name']._options = None
+  _CITATION.fields_by_name['name']._serialized_options = b'\340A\003'
+  _CITATION.fields_by_name['url']._options = None
+  _CITATION.fields_by_name['url']._serialized_options = b'\340A\003'
+  _CITATION.fields_by_name['chunk_uid']._options = None
+  _CITATION.fields_by_name['chunk_uid']._serialized_options = b'\340A\003'
+  _CITATION.fields_by_name['file_uid']._options = None
+  _CITATION.fields_by_name['file_uid']._serialized_options = b'\340A\003'
   _MESSAGE.fields_by_name['uid']._options = None
   _MESSAGE.fields_by_name['uid']._serialized_options = b'\340A\003'
   _MESSAGE.fields_by_name['app_uid']._options = None
@@ -79,10 +87,10 @@
   _MESSAGE.fields_by_name['update_time']._serialized_options = b'\340A\003'
   _MESSAGE.fields_by_name['msg_sender_uid']._options = None
   _MESSAGE.fields_by_name['msg_sender_uid']._serialized_options = b'\340A\003'
-  _MESSAGE.fields_by_name['chunks']._options = None
-  _MESSAGE.fields_by_name['chunks']._serialized_options = b'\340A\003'
   _MESSAGE.fields_by_name['standalone_question']._options = None
   _MESSAGE.fields_by_name['standalone_question']._serialized_options = b'\340A\003'
+  _MESSAGE.fields_by_name['citations']._options = None
+  _MESSAGE.fields_by_name['citations']._serialized_options = b'\340A\003'
   _CREATECONVERSATIONREQUEST.fields_by_name['namespace_id']._options = None
   _CREATECONVERSATIONREQUEST.fields_by_name['namespace_id']._serialized_options = b'\340A\002'
   _CREATECONVERSATIONREQUEST.fields_by_name['app_id']._options = None
@@ -261,70 +269,74 @@
   _CHATRESPONSE.fields_by_name['outputs']._serialized_options = b'\340A\003'
   _CHATRESPONSE.fields_by_name['chunks']._options = None
   _CHATRESPONSE.fields_by_name['chunks']._serialized_options = b'\340A\003'
+  _globals['_CITATIONSTYPE']._serialized_start=6929
+  _globals['_CITATIONSTYPE']._serialized_end=7026
   _globals['_CONVERSATION']._serialized_start=220
   _globals['_CONVERSATION']._serialized_end=634
   _globals['_CHAT']._serialized_start=637
   _globals['_CHAT']._serialized_end=1199
-  _globals['_MESSAGE']._serialized_start=1202
-  _globals['_MESSAGE']._serialized_end=1791
-  _globals['_MESSAGE_MESSAGETYPE']._serialized_start=1725
-  _globals['_MESSAGE_MESSAGETYPE']._serialized_end=1791
-  _globals['_CREATECONVERSATIONREQUEST']._serialized_start=1794
-  _globals['_CREATECONVERSATIONREQUEST']._serialized_end=1935
-  _globals['_CREATECONVERSATIONRESPONSE']._serialized_start=1937
-  _globals['_CREATECONVERSATIONRESPONSE']._serialized_end=2037
-  _globals['_CREATECHATREQUEST']._serialized_start=2040
-  _globals['_CREATECHATREQUEST']._serialized_end=2224
-  _globals['_CREATECHATRESPONSE']._serialized_start=2226
-  _globals['_CREATECHATRESPONSE']._serialized_end=2294
-  _globals['_LISTCONVERSATIONSREQUEST']._serialized_start=2297
-  _globals['_LISTCONVERSATIONSREQUEST']._serialized_end=2583
-  _globals['_LISTCONVERSATIONSRESPONSE']._serialized_start=2586
-  _globals['_LISTCONVERSATIONSRESPONSE']._serialized_end=2768
-  _globals['_LISTCHATSREQUEST']._serialized_start=2771
-  _globals['_LISTCHATSREQUEST']._serialized_end=2959
-  _globals['_LISTCHATSRESPONSE']._serialized_start=2962
-  _globals['_LISTCHATSRESPONSE']._serialized_end=3112
-  _globals['_UPDATECONVERSATIONREQUEST']._serialized_start=3115
-  _globals['_UPDATECONVERSATIONREQUEST']._serialized_end=3489
-  _globals['_UPDATECONVERSATIONRESPONSE']._serialized_start=3491
-  _globals['_UPDATECONVERSATIONRESPONSE']._serialized_end=3591
-  _globals['_UPDATECHATREQUEST']._serialized_start=3594
-  _globals['_UPDATECHATREQUEST']._serialized_end=3815
-  _globals['_UPDATECHATRESPONSE']._serialized_start=3817
-  _globals['_UPDATECHATRESPONSE']._serialized_end=3885
-  _globals['_DELETECONVERSATIONREQUEST']._serialized_start=3888
-  _globals['_DELETECONVERSATIONREQUEST']._serialized_end=4029
-  _globals['_DELETECONVERSATIONRESPONSE']._serialized_start=4031
-  _globals['_DELETECONVERSATIONRESPONSE']._serialized_end=4059
-  _globals['_DELETECHATREQUEST']._serialized_start=4061
-  _globals['_DELETECHATREQUEST']._serialized_end=4152
-  _globals['_DELETECHATRESPONSE']._serialized_start=4154
-  _globals['_DELETECHATRESPONSE']._serialized_end=4174
-  _globals['_CREATEMESSAGEREQUEST']._serialized_start=4177
-  _globals['_CREATEMESSAGEREQUEST']._serialized_end=4432
-  _globals['_CREATEMESSAGERESPONSE']._serialized_start=4434
-  _globals['_CREATEMESSAGERESPONSE']._serialized_end=4509
-  _globals['_MESSAGESENDERPROFILE']._serialized_start=4512
-  _globals['_MESSAGESENDERPROFILE']._serialized_end=4725
-  _globals['_LISTMESSAGESREQUEST']._serialized_start=4728
-  _globals['_LISTMESSAGESREQUEST']._serialized_end=5092
-  _globals['_LISTMESSAGESRESPONSE']._serialized_start=5095
-  _globals['_LISTMESSAGESRESPONSE']._serialized_end=5342
-  _globals['_UPDATEMESSAGEREQUEST']._serialized_start=5345
-  _globals['_UPDATEMESSAGEREQUEST']._serialized_end=5550
-  _globals['_UPDATEMESSAGERESPONSE']._serialized_start=5552
-  _globals['_UPDATEMESSAGERESPONSE']._serialized_end=5632
-  _globals['_DELETEMESSAGEREQUEST']._serialized_start=5635
-  _globals['_DELETEMESSAGEREQUEST']._serialized_end=5809
-  _globals['_DELETEMESSAGERESPONSE']._serialized_start=5811
-  _globals['_DELETEMESSAGERESPONSE']._serialized_end=5834
-  _globals['_LISTCHATMESSAGESREQUEST']._serialized_start=5837
-  _globals['_LISTCHATMESSAGESREQUEST']._serialized_end=6032
-  _globals['_LISTCHATMESSAGESRESPONSE']._serialized_start=6035
-  _globals['_LISTCHATMESSAGESRESPONSE']._serialized_end=6201
-  _globals['_CHATREQUEST']._serialized_start=6204
-  _globals['_CHATREQUEST']._serialized_end=6553
-  _globals['_CHATRESPONSE']._serialized_start=6556
-  _globals['_CHATRESPONSE']._serialized_end=6699
+  _globals['_CITATION']._serialized_start=1202
+  _globals['_CITATION']._serialized_end=1428
+  _globals['_MESSAGE']._serialized_start=1431
+  _globals['_MESSAGE']._serialized_end=2019
+  _globals['_MESSAGE_MESSAGETYPE']._serialized_start=1953
+  _globals['_MESSAGE_MESSAGETYPE']._serialized_end=2019
+  _globals['_CREATECONVERSATIONREQUEST']._serialized_start=2022
+  _globals['_CREATECONVERSATIONREQUEST']._serialized_end=2163
+  _globals['_CREATECONVERSATIONRESPONSE']._serialized_start=2165
+  _globals['_CREATECONVERSATIONRESPONSE']._serialized_end=2265
+  _globals['_CREATECHATREQUEST']._serialized_start=2268
+  _globals['_CREATECHATREQUEST']._serialized_end=2452
+  _globals['_CREATECHATRESPONSE']._serialized_start=2454
+  _globals['_CREATECHATRESPONSE']._serialized_end=2522
+  _globals['_LISTCONVERSATIONSREQUEST']._serialized_start=2525
+  _globals['_LISTCONVERSATIONSREQUEST']._serialized_end=2811
+  _globals['_LISTCONVERSATIONSRESPONSE']._serialized_start=2814
+  _globals['_LISTCONVERSATIONSRESPONSE']._serialized_end=2996
+  _globals['_LISTCHATSREQUEST']._serialized_start=2999
+  _globals['_LISTCHATSREQUEST']._serialized_end=3187
+  _globals['_LISTCHATSRESPONSE']._serialized_start=3190
+  _globals['_LISTCHATSRESPONSE']._serialized_end=3340
+  _globals['_UPDATECONVERSATIONREQUEST']._serialized_start=3343
+  _globals['_UPDATECONVERSATIONREQUEST']._serialized_end=3717
+  _globals['_UPDATECONVERSATIONRESPONSE']._serialized_start=3719
+  _globals['_UPDATECONVERSATIONRESPONSE']._serialized_end=3819
+  _globals['_UPDATECHATREQUEST']._serialized_start=3822
+  _globals['_UPDATECHATREQUEST']._serialized_end=4043
+  _globals['_UPDATECHATRESPONSE']._serialized_start=4045
+  _globals['_UPDATECHATRESPONSE']._serialized_end=4113
+  _globals['_DELETECONVERSATIONREQUEST']._serialized_start=4116
+  _globals['_DELETECONVERSATIONREQUEST']._serialized_end=4257
+  _globals['_DELETECONVERSATIONRESPONSE']._serialized_start=4259
+  _globals['_DELETECONVERSATIONRESPONSE']._serialized_end=4287
+  _globals['_DELETECHATREQUEST']._serialized_start=4289
+  _globals['_DELETECHATREQUEST']._serialized_end=4380
+  _globals['_DELETECHATRESPONSE']._serialized_start=4382
+  _globals['_DELETECHATRESPONSE']._serialized_end=4402
+  _globals['_CREATEMESSAGEREQUEST']._serialized_start=4405
+  _globals['_CREATEMESSAGEREQUEST']._serialized_end=4660
+  _globals['_CREATEMESSAGERESPONSE']._serialized_start=4662
+  _globals['_CREATEMESSAGERESPONSE']._serialized_end=4737
+  _globals['_MESSAGESENDERPROFILE']._serialized_start=4740
+  _globals['_MESSAGESENDERPROFILE']._serialized_end=4953
+  _globals['_LISTMESSAGESREQUEST']._serialized_start=4956
+  _globals['_LISTMESSAGESREQUEST']._serialized_end=5320
+  _globals['_LISTMESSAGESRESPONSE']._serialized_start=5323
+  _globals['_LISTMESSAGESRESPONSE']._serialized_end=5570
+  _globals['_UPDATEMESSAGEREQUEST']._serialized_start=5573
+  _globals['_UPDATEMESSAGEREQUEST']._serialized_end=5778
+  _globals['_UPDATEMESSAGERESPONSE']._serialized_start=5780
+  _globals['_UPDATEMESSAGERESPONSE']._serialized_end=5860
+  _globals['_DELETEMESSAGEREQUEST']._serialized_start=5863
+  _globals['_DELETEMESSAGEREQUEST']._serialized_end=6037
+  _globals['_DELETEMESSAGERESPONSE']._serialized_start=6039
+  _globals['_DELETEMESSAGERESPONSE']._serialized_end=6062
+  _globals['_LISTCHATMESSAGESREQUEST']._serialized_start=6065
+  _globals['_LISTCHATMESSAGESREQUEST']._serialized_end=6260
+  _globals['_LISTCHATMESSAGESRESPONSE']._serialized_start=6263
+  _globals['_LISTCHATMESSAGESRESPONSE']._serialized_end=6429
+  _globals['_CHATREQUEST']._serialized_start=6432
+  _globals['_CHATREQUEST']._serialized_end=6781
+  _globals['_CHATRESPONSE']._serialized_start=6784
+  _globals['_CHATRESPONSE']._serialized_end=6927
 # @@protoc_insertion_point(module_scope)
diff --git a/app/app/v1alpha/conversation_pb2.pyi b/app/app/v1alpha/conversation_pb2.pyi
index 0946edd..affc7f4 100644
--- a/app/app/v1alpha/conversation_pb2.pyi
+++ b/app/app/v1alpha/conversation_pb2.pyi
@@ -22,6 +22,41 @@ else:
 
 DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
 
+class _CitationsType:
+    ValueType = typing.NewType("ValueType", builtins.int)
+    V: typing_extensions.TypeAlias = ValueType
+
+class _CitationsTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CitationsType.ValueType], builtins.type):
+    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
+    CITATIONS_TYPE_UNSPECIFIED: _CitationsType.ValueType  # 0
+    """Unspecified citation type"""
+    CITATIONS_TYPE_CHUNK: _CitationsType.ValueType  # 1
+    """Chunk-based citation"""
+    CITATIONS_TYPE_URL: _CitationsType.ValueType  # 2
+    """URL-based citation"""
+
+class CitationsType(_CitationsType, metaclass=_CitationsTypeEnumTypeWrapper):
+    """ChatWith enum
+    enum ChatWith {
+      // unspecified
+      CHAT_WITH_UNSPECIFIED = 0;
+      // chat with ai assistant(default)
+      CHAT_WITH_AI_ASSISTANT = 1;
+      // chat with ai agent
+      CHAT_WITH_AI_AGENT = 2;
+    }
+
+    type of the citations message
+    """
+
+CITATIONS_TYPE_UNSPECIFIED: CitationsType.ValueType  # 0
+"""Unspecified citation type"""
+CITATIONS_TYPE_CHUNK: CitationsType.ValueType  # 1
+"""Chunk-based citation"""
+CITATIONS_TYPE_URL: CitationsType.ValueType  # 2
+"""URL-based citation"""
+global___CitationsType = CitationsType
+
 @typing_extensions.final
 class Conversation(google.protobuf.message.Message):
     """Conversation represents a chat conversation"""
@@ -136,19 +171,49 @@ class Chat(google.protobuf.message.Message):
 global___Chat = Chat
 
 @typing_extensions.final
-class Message(google.protobuf.message.Message):
-    """ChatWith enum
-    enum ChatWith {
-      // unspecified
-      CHAT_WITH_UNSPECIFIED = 0;
-      // chat with ai assistant(default)
-      CHAT_WITH_AI_ASSISTANT = 1;
-      // chat with ai agent
-      CHAT_WITH_AI_AGENT = 2;
-    }
+class Citation(google.protobuf.message.Message):
+    """Citation message"""
 
-    Message represents a single message in a conversation
-    """
+    DESCRIPTOR: google.protobuf.descriptor.Descriptor
+
+    TYPE_FIELD_NUMBER: builtins.int
+    NAME_FIELD_NUMBER: builtins.int
+    URL_FIELD_NUMBER: builtins.int
+    CHUNK_UID_FIELD_NUMBER: builtins.int
+    FILE_UID_FIELD_NUMBER: builtins.int
+    type: global___CitationsType.ValueType
+    """Type of citation"""
+    name: builtins.str
+    """Name of the citation"""
+    url: builtins.str
+    """URL of the citation (only applicable for URL-type citations)"""
+    chunk_uid: builtins.str
+    """Chunk UID (only applicable for chunk-type citations)"""
+    file_uid: builtins.str
+    """File UID (only applicable for chunk-type citations)"""
+    def __init__(
+        self,
+        *,
+        type: global___CitationsType.ValueType = ...,
+        name: builtins.str = ...,
+        url: builtins.str | None = ...,
+        chunk_uid: builtins.str | None = ...,
+        file_uid: builtins.str | None = ...,
+    ) -> None: ...
+    def HasField(self, field_name: typing_extensions.Literal["_chunk_uid", b"_chunk_uid", "_file_uid", b"_file_uid", "_url", b"_url", "chunk_uid", b"chunk_uid", "file_uid", b"file_uid", "url", b"url"]) -> builtins.bool: ...
+    def ClearField(self, field_name: typing_extensions.Literal["_chunk_uid", b"_chunk_uid", "_file_uid", b"_file_uid", "_url", b"_url", "chunk_uid", b"chunk_uid", "file_uid", b"file_uid", "name", b"name", "type", b"type", "url", b"url"]) -> None: ...
+    @typing.overload
+    def WhichOneof(self, oneof_group: typing_extensions.Literal["_chunk_uid", b"_chunk_uid"]) -> typing_extensions.Literal["chunk_uid"] | None: ...
+    @typing.overload
+    def WhichOneof(self, oneof_group: typing_extensions.Literal["_file_uid", b"_file_uid"]) -> typing_extensions.Literal["file_uid"] | None: ...
+    @typing.overload
+    def WhichOneof(self, oneof_group: typing_extensions.Literal["_url", b"_url"]) -> typing_extensions.Literal["url"] | None: ...
+
+global___Citation = Citation
+
+@typing_extensions.final
+class Message(google.protobuf.message.Message):
+    """Message represents a single message in a conversation"""
 
     DESCRIPTOR: google.protobuf.descriptor.Descriptor
 
@@ -180,8 +245,8 @@ class Message(google.protobuf.message.Message):
     CREATE_TIME_FIELD_NUMBER: builtins.int
     UPDATE_TIME_FIELD_NUMBER: builtins.int
     MSG_SENDER_UID_FIELD_NUMBER: builtins.int
-    CHUNKS_FIELD_NUMBER: builtins.int
     STANDALONE_QUESTION_FIELD_NUMBER: builtins.int
+    CITATIONS_FIELD_NUMBER: builtins.int
     uid: builtins.str
     """message uid"""
     app_uid: builtins.str
@@ -201,12 +266,12 @@ class Message(google.protobuf.message.Message):
     def update_time(self) -> google.protobuf.timestamp_pb2.Timestamp:
         """update time of the message"""
     msg_sender_uid: builtins.str
-    """message sender uid"""
-    @property
-    def chunks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[artifact.artifact.v1alpha.chunk_pb2.Chunk]:
-        """the chunks attached to the message"""
+    """message sender uid(only for user messages)"""
     standalone_question: builtins.str
-    """standalone question"""
+    """standalone question(only for user messages)"""
+    @property
+    def citations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Citation]:
+        """citations(only for agent messages)"""
     def __init__(
         self,
         *,
@@ -219,11 +284,11 @@ class Message(google.protobuf.message.Message):
         create_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
         update_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
         msg_sender_uid: builtins.str = ...,
-        chunks: collections.abc.Iterable[artifact.artifact.v1alpha.chunk_pb2.Chunk] | None = ...,
         standalone_question: builtins.str = ...,
+        citations: collections.abc.Iterable[global___Citation] | None = ...,
     ) -> None: ...
     def HasField(self, field_name: typing_extensions.Literal["create_time", b"create_time", "update_time", b"update_time"]) -> builtins.bool: ...
-    def ClearField(self, field_name: typing_extensions.Literal["app_uid", b"app_uid", "chunks", b"chunks", "content", b"content", "conversation_uid", b"conversation_uid", "create_time", b"create_time", "msg_sender_uid", b"msg_sender_uid", "role", b"role", "standalone_question", b"standalone_question", "type", b"type", "uid", b"uid", "update_time", b"update_time"]) -> None: ...
+    def ClearField(self, field_name: typing_extensions.Literal["app_uid", b"app_uid", "citations", b"citations", "content", b"content", "conversation_uid", b"conversation_uid", "create_time", b"create_time", "msg_sender_uid", b"msg_sender_uid", "role", b"role", "standalone_question", b"standalone_question", "type", b"type", "uid", b"uid", "update_time", b"update_time"]) -> None: ...
 
 global___Message = Message