gitextract_2880u6lc/ ├── .git-blame-ignore-revs ├── .github/ │ ├── CODEOWNERS │ ├── actionlint.yml │ ├── actions/ │ │ ├── build-backend-image/ │ │ │ └── action.yml │ │ ├── build-integration-image/ │ │ │ └── action.yml │ │ ├── build-model-server-image/ │ │ │ └── action.yml │ │ ├── run-nightly-provider-chat-test/ │ │ │ └── action.yml │ │ ├── setup-playwright/ │ │ │ └── action.yml │ │ ├── setup-python-and-install-dependencies/ │ │ │ └── action.yml │ │ └── slack-notify/ │ │ ├── action.yml │ │ └── user-mappings.json │ ├── dependabot.yml │ ├── pull_request_template.md │ ├── runs-on.yml │ └── workflows/ │ ├── deployment.yml │ ├── docker-tag-beta.yml │ ├── docker-tag-latest.yml │ ├── helm-chart-releases.yml │ ├── merge-group.yml │ ├── nightly-close-stale-issues.yml │ ├── nightly-llm-provider-chat.yml │ ├── post-merge-beta-cherry-pick.yml │ ├── pr-database-tests.yml │ ├── pr-desktop-build.yml │ ├── pr-external-dependency-unit-tests.yml │ ├── pr-golang-tests.yml │ ├── pr-helm-chart-testing.yml │ ├── pr-integration-tests.yml │ ├── pr-jest-tests.yml │ ├── pr-labeler.yml │ ├── pr-linear-check.yml │ ├── pr-playwright-tests.yml │ ├── pr-python-checks.yml │ ├── pr-python-connector-tests.yml │ ├── pr-python-model-tests.yml │ ├── pr-python-tests.yml │ ├── pr-quality-checks.yml │ ├── preview.yml │ ├── release-cli.yml │ ├── release-devtools.yml │ ├── reusable-nightly-llm-provider-chat.yml │ ├── sandbox-deployment.yml │ ├── storybook-deploy.yml │ ├── sync_foss.yml │ ├── tag-nightly.yml │ └── zizmor.yml ├── .gitignore ├── .greptile/ │ ├── config.json │ ├── files.json │ └── rules.md ├── .pre-commit-config.yaml ├── .prettierignore ├── .vscode/ │ ├── env.web_template.txt │ ├── env_template.txt │ ├── launch.json │ └── tasks.template.jsonc ├── AGENTS.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── backend/ │ ├── .dockerignore │ ├── .gitignore │ ├── .trivyignore │ ├── Dockerfile │ ├── Dockerfile.model_server │ ├── alembic/ │ │ ├── README.md │ │ ├── env.py │ │ ├── run_multitenant_migrations.py │ │ ├── script.py.mako │ │ └── versions/ │ │ ├── 01f8e6d95a33_populate_flow_mapping_data.py │ │ ├── 027381bce97c_add_shortcut_option_for_users.py │ │ ├── 03bf8be6b53a_rework_kg_config.py │ │ ├── 03d085c5c38d_backfill_account_type.py │ │ ├── 03d710ccf29c_add_permission_sync_attempt_tables.py │ │ ├── 0568ccf46a6b_add_thread_specific_model_selection.py │ │ ├── 05c07bf07c00_add_search_doc_relevance_details.py │ │ ├── 07b98176f1de_code_interpreter_seed.py │ │ ├── 0816326d83aa_add_federated_connector_tables.py │ │ ├── 08a1eda20fe1_add_earliest_indexing_to_connector.py │ │ ├── 09995b8811eb_add_theme_preference_to_user.py │ │ ├── 0a2b51deb0b8_add_starter_prompts.py │ │ ├── 0a98909f2757_enable_encrypted_fields.py │ │ ├── 0bb4558f35df_add_scim_username_to_scim_user_mapping.py │ │ ├── 0cd424f32b1d_user_file_data_preparation_and_backfill.py │ │ ├── 0ebb1d516877_add_ccpair_deletion_failure_message.py │ │ ├── 0f7ff6d75b57_add_index_to_index_attempt_time_created.py │ │ ├── 114a638452db_add_default_app_mode_to_user.py │ │ ├── 12635f6655b7_drive_canonical_ids.py │ │ ├── 15326fcec57e_introduce_onyx_apis.py │ │ ├── 16c37a30adf2_user_file_relationship_migration.py │ │ ├── 173cae5bba26_port_config_store.py │ │ ├── 175ea04c7087_add_user_preferences.py │ │ ├── 177de57c21c9_display_custom_llm_models.py │ │ ├── 18b5b2524446_add_is_clarification_to_chat_message.py │ │ ├── 19c0ccb01687_migrate_to_contextual_rag_model.py │ │ ├── 1a03d2c2856b_add_indexes_to_document__tag.py │ │ ├── 1b10e1fda030_add_additional_data_to_notifications.py │ │ ├── 1b8206b29c5d_add_user_delete_cascades.py │ │ ├── 1d78c0ca7853_remove_voice_provider_deleted_column.py │ │ ├── 1f2a3b4c5d6e_add_internet_search_and_content_providers.py │ │ ├── 1f60f60c3401_embedding_model_search_settings.py │ │ ├── 2020d417ec84_single_onyx_craft_migration.py │ │ ├── 213fd978c6d8_notifications.py │ │ ├── 238b84885828_add_foreign_key_to_user__external_user_.py │ │ ├── 23957775e5f5_remove_feedback_foreignkey_constraint.py │ │ ├── 25a5501dc766_group_permissions_phase1.py │ │ ├── 2664261bfaab_add_cache_store_table.py │ │ ├── 2666d766cb9b_google_oauth2.py │ │ ├── 26b931506ecb_default_chosen_assistants_to_none.py │ │ ├── 27c6ecc08586_permission_framework.py │ │ ├── 27fb147a843f_add_timestamps_to_user_table.py │ │ ├── 2955778aa44c_add_chunk_count_to_document.py │ │ ├── 2a391f840e85_add_last_refreshed_at_mcp_server.py │ │ ├── 2acdef638fc2_add_switchover_type_field.py │ │ ├── 2b75d0a8ffcb_user_file_schema_cleanup.py │ │ ├── 2b90f3af54b8_usage_limits.py │ │ ├── 2c2430828bdf_add_unique_constraint_to_inputprompt_.py │ │ ├── 2cdeff6d8c93_set_built_in_to_default.py │ │ ├── 2d2304e27d8c_add_above_below_to_persona.py │ │ ├── 2daa494a0851_add_group_sync_time.py │ │ ├── 2f80c6a2550f_add_chat_session_specific_temperature_.py │ │ ├── 2f95e36923e6_add_indexing_coordination.py │ │ ├── 30c1d5744104_persona_datetime_aware.py │ │ ├── 325975216eb3_add_icon_color_and_icon_shape_to_persona.py │ │ ├── 33cb72ea4d80_single_tool_call_per_message.py │ │ ├── 33ea50e88f24_foreign_key_input_prompts.py │ │ ├── 351faebd379d_add_curator_fields.py │ │ ├── 35e518e0ddf4_properly_cascade.py │ │ ├── 35e6853a51d5_server_default_chosen_assistants.py │ │ ├── 369644546676_add_composite_index_for_index_attempt_.py │ │ ├── 36e9220ab794_update_kg_trigger_functions.py │ │ ├── 3781a5eb12cb_add_chunk_stats_table.py │ │ ├── 3879338f8ba1_add_tool_table.py │ │ ├── 38eda64af7fe_add_chat_session_sharing.py │ │ ├── 3934b1bc7b62_update_github_connector_repo_name_to_.py │ │ ├── 3a7802814195_add_alternate_assistant_to_chat_message.py │ │ ├── 3a78dba1080a_user_file_legacy_data_cleanup.py │ │ ├── 3b25685ff73c_move_is_public_to_cc_pair.py │ │ ├── 3bd4c84fe72f_improved_index.py │ │ ├── 3c5e35aa9af0_polling_document_count.py │ │ ├── 3c6531f32351_add_back_input_prompts.py │ │ ├── 3c9a65f1207f_seed_exa_provider_from_env.py │ │ ├── 3d1cca026fe8_add_oauth_config_and_user_tokens.py │ │ ├── 3fc5d75723b3_add_doc_metadata_field_in_document_model.py │ │ ├── 401c1ac29467_add_tables_for_ui_based_llm_.py │ │ ├── 40926a4dab77_reset_userfile_document_id_migrated_.py │ │ ├── 41fa44bef321_remove_default_prompt_shortcuts.py │ │ ├── 43cbbb3f5e6a_rename_index_origin_to_index_recursively.py │ │ ├── 44f856ae2a4a_add_cloud_embedding_model.py │ │ ├── 4505fd7302e1_added_is_internet_to_dbdoc.py │ │ ├── 465f78d9b7f9_larger_access_tokens_for_oauth.py │ │ ├── 46625e4745d4_remove_native_enum.py │ │ ├── 46b7a812670f_fix_user__external_user_group_id_fk.py │ │ ├── 4738e4b3bae1_pg_file_store.py │ │ ├── 473a1a7ca408_add_display_model_names_to_llm_provider.py │ │ ├── 47433d30de82_create_indexattempt_table.py │ │ ├── 475fcefe8826_add_name_to_api_key.py │ │ ├── 4794bc13e484_update_prompt_length.py │ │ ├── 47a07e1a38f1_fix_invalid_model_configurations_state.py │ │ ├── 47e5bef3a1d7_add_persona_categories.py │ │ ├── 48d14957fe80_add_support_for_custom_tools.py │ │ ├── 495cb26ce93e_create_knowlege_graph_tables.py │ │ ├── 4a1e4b1c89d2_add_indexing_to_userfilestatus.py │ │ ├── 4a951134c801_moved_status_to_connector_credential_.py │ │ ├── 4b08d97e175a_change_default_prune_freq.py │ │ ├── 4cebcbc9b2ae_add_tab_index_to_tool_call.py │ │ ├── 4d58345da04a_lowercase_user_emails.py │ │ ├── 4ea2c93919c1_add_type_to_credentials.py │ │ ├── 4ee1287bd26a_add_multiple_slack_bot_support.py │ │ ├── 4f8a2b3c1d9e_add_open_url_tool.py │ │ ├── 503883791c39_add_effective_permissions.py │ │ ├── 505c488f6662_merge_default_assistants_into_unified.py │ │ ├── 50b683a8295c_add_additional_retrieval_controls_to_.py │ │ ├── 52a219fb5233_add_last_synced_and_last_modified_to_document_table.py │ │ ├── 54a74a0417fc_danswerbot_onyxbot.py │ │ ├── 55546a7967ee_assistant_rework.py │ │ ├── 570282d33c49_track_onyxbot_explicitly.py │ │ ├── 57122d037335_add_python_tool_on_default.py │ │ ├── 57b53544726e_add_document_set_tables.py │ │ ├── 5809c0787398_add_chat_sessions.py │ │ ├── 58c50ef19f08_add_stale_column_to_user__external_user_.py │ │ ├── 5ae8240accb3_add_research_agent_database_tables_and_.py │ │ ├── 5b29123cd710_nullable_search_settings_for_historic_.py │ │ ├── 5c3dca366b35_backend_driven_notification_details.py │ │ ├── 5c448911b12f_add_content_type_to_userfile.py │ │ ├── 5c7fdadae813_match_any_keywords_flag_for_standard_.py │ │ ├── 5d12a446f5c0_add_api_version_and_deployment_name_to_.py │ │ ├── 5e1c073d48a3_add_personal_access_token_table.py │ │ ├── 5e6f7a8b9c0d_update_default_persona_prompt.py │ │ ├── 5e84129c8be3_add_docs_indexed_column_to_index_.py │ │ ├── 5f4b8568a221_add_removed_documents_to_index_attempt.py │ │ ├── 5fc1f54cc252_hybrid_enum.py │ │ ├── 61ff3651add4_add_permission_syncing.py │ │ ├── 62c3a055a141_add_file_names_to_file_connector_config.py │ │ ├── 631fd2504136_add_approx_chunk_count_in_vespa_to_.py │ │ ├── 6436661d5b65_add_created_at_in_project_userfile.py │ │ ├── 643a84a42a33_add_user_configured_names_to_llmprovider.py │ │ ├── 64bd5677aeb6_add_image_input_support_to_model_config.py │ │ ├── 65bc6e0f8500_remove_kg_subtype_from_db.py │ │ ├── 6756efa39ada_id_uuid_for_chat_session.py │ │ ├── 689433b0d8de_add_hook_and_hook_execution_log_tables.py │ │ ├── 699221885109_nullify_default_task_prompt.py │ │ ├── 6a804aeb4830_duplicated_no_harm_user_file_migration.py │ │ ├── 6b3b4083c5aa_persona_cleanup_and_featured.py │ │ ├── 6d387b3196c2_basic_auth.py │ │ ├── 6d562f86c78b_remove_default_bot.py │ │ ├── 6f4f86aef280_add_queries_and_is_web_fetch_to_.py │ │ ├── 6fc7886d665d_make_categories_labels_and_many_to_many.py │ │ ├── 703313b75876_add_tokenratelimit_tables.py │ │ ├── 70f00c45c0f2_more_descriptive_filestore.py │ │ ├── 7206234e012a_add_image_generation_config_table.py │ │ ├── 72aa7de2e5cf_make_processing_mode_default_all_caps.py │ │ ├── 72bdc9929a46_permission_auto_sync_framework.py │ │ ├── 73e9983e5091_add_search_query_table.py │ │ ├── 7477a5f5d728_added_model_defaults_for_users.py │ │ ├── 7547d982db8f_chat_folders.py │ │ ├── 7616121f6e97_add_enterprise_fields_to_scim_user_mapping.py │ │ ├── 767f1c2a00eb_count_chat_tokens.py │ │ ├── 76b60d407dfb_cc_pair_name_not_unique.py │ │ ├── 776b3bbe9092_remove_remaining_enums.py │ │ ├── 77d07dffae64_forcibly_remove_more_enum_types_from_.py │ │ ├── 78dbe7e38469_task_tracking.py │ │ ├── 78ebc66946a0_remove_reranking_from_search_settings.py │ │ ├── 795b20b85b4b_add_llm_group_permissions_control.py │ │ ├── 797089dfb4d2_persona_start_date.py │ │ ├── 79acd316403a_add_api_key_table.py │ │ ├── 7a70b7664e37_add_model_configuration_table.py │ │ ├── 7aea705850d5_added_slack_auto_filter.py │ │ ├── 7b9b952abdf6_update_entities.py │ │ ├── 7bd55f264e1b_add_display_name_to_model_configuration.py │ │ ├── 7cb492013621_code_interpreter_server_model.py │ │ ├── 7cc3fcc116c1_user_file_uuid_primary_key_swap.py │ │ ├── 7ccea01261f6_store_chat_retrieval_docs.py │ │ ├── 7da0ae5ad583_add_description_to_persona.py │ │ ├── 7da543f5672f_add_slackbotconfig_table.py │ │ ├── 7e490836d179_nullify_default_system_prompt.py │ │ ├── 7ed603b64d5a_add_mcp_server_and_connection_config_.py │ │ ├── 7f726bad5367_slack_followup.py │ │ ├── 7f99be1cb9f5_add_index_for_getting_documents_just_by_.py │ │ ├── 800f48024ae9_add_id_to_connectorcredentialpair.py │ │ ├── 80696cf850ae_add_chat_session_to_query_event.py │ │ ├── 8188861f4e92_csv_to_tabular_chat_file_type.py │ │ ├── 81c22b1e2e78_hierarchy_nodes_v1.py │ │ ├── 8405ca81cc83_notifications_constraint.py │ │ ├── 849b21c732f8_add_demo_data_enabled_to_build_session.py │ │ ├── 87c52ec39f84_update_default_system_prompt.py │ │ ├── 8818cf73fa1a_drop_include_citations.py │ │ ├── 891cd83c87a8_add_is_visible_to_persona.py │ │ ├── 8987770549c0_add_full_exception_stack_trace.py │ │ ├── 8a87bd6ec550_associate_index_attempts_with_ccpair.py │ │ ├── 8aabb57f3b49_restructure_document_indices.py │ │ ├── 8b5ce697290e_add_discord_bot_tables.py │ │ ├── 8e1ac4f39a9f_enable_contextual_retrieval.py │ │ ├── 8e26726b7683_chat_context_addition.py │ │ ├── 8f43500ee275_add_index.py │ │ ├── 8ffcc2bcfc11_add_needs_persona_sync_to_user_file.py │ │ ├── 904451035c9b_store_tool_details.py │ │ ├── 904e5138fffb_tags.py │ │ ├── 9087b548dd69_seed_default_image_gen_config.py │ │ ├── 90b409d06e50_add_chat_compression_fields.py │ │ ├── 90e3b9af7da4_tag_fix.py │ │ ├── 91a0a4d62b14_milestone.py │ │ ├── 91fd3b470d1a_remove_documentsource_from_tag.py │ │ ├── 91ffac7e65b3_add_expiry_time.py │ │ ├── 93560ba1b118_add_web_ui_option_to_slack_config.py │ │ ├── 93a2e195e25c_add_voice_provider_and_user_voice_prefs.py │ │ ├── 93c15d6a6fbb_add_chunk_error_and_vespa_count_columns_.py │ │ ├── 949b4a92a401_remove_rt.py │ │ ├── 94dc3d0236f8_make_document_set_description_optional.py │ │ ├── 96a5702df6aa_mcp_tool_enabled.py │ │ ├── 977e834c1427_seed_default_groups.py │ │ ├── 97dbb53fa8c8_add_syncrecord.py │ │ ├── 98a5008d8711_agent_tracking.py │ │ ├── 9a0296d7421e_add_is_auto_mode_to_llm_provider.py │ │ ├── 9aadf32dfeb4_add_user_files.py │ │ ├── 9b66d3156fc6_user_file_schema_additions.py │ │ ├── 9c00a2bccb83_chat_message_agentic.py │ │ ├── 9c54986124c6_add_scim_tables.py │ │ ├── 9cf5c00f72fe_add_creator_to_cc_pair.py │ │ ├── 9d1543a37106_add_processing_duration_seconds_to_chat_.py │ │ ├── 9d97fecfab7f_added_retrieved_docs_to_query_event.py │ │ ├── 9drpiiw74ljy_add_config_to_federated_connector.py │ │ ├── 9f696734098f_combine_search_and_chat.py │ │ ├── a01bf2971c5d_update_default_tool_descriptions.py │ │ ├── a1b2c3d4e5f6_add_license_table.py │ │ ├── a1b2c3d4e5f7_drop_agent_search_metrics_table.py │ │ ├── a2b3c4d5e6f7_remove_fast_default_model_name.py │ │ ├── a3795dce87be_migration_confluence_to_be_explicit.py │ │ ├── a3b8d9e2f1c4_make_scim_external_id_nullable.py │ │ ├── a3bfd0d64902_add_chosen_assistants_to_user_table.py │ │ ├── a3c1a7904cd0_remove_userfile_related_deprecated_.py │ │ ├── a3f8b2c1d4e5_add_preferred_response_id_to_chat_message.py │ │ ├── a4f23d6b71c8_add_llm_provider_persona_restrictions.py │ │ ├── a570b80a5f20_usergroup_tables.py │ │ ├── a6df6b88ef81_remove_recent_assistants.py │ │ ├── a7688ab35c45_add_public_external_user_group_table.py │ │ ├── a852cbe15577_new_chat_history.py │ │ ├── a8c2065484e6_add_auto_scroll_to_user_model.py │ │ ├── abbfec3a5ac5_merge_prompt_into_persona.py │ │ ├── abe7378b8217_add_indexing_trigger_to_cc_pair.py │ │ ├── ac5eaac849f9_add_last_pruned_to_connector_table.py │ │ ├── acaab4ef4507_remove_inactive_ccpair_status_on_.py │ │ ├── ae62505e3acc_add_saml_accounts.py │ │ ├── aeda5f2df4f6_add_pinned_assistants.py │ │ ├── b082fec533f0_make_last_attempt_status_nullable.py │ │ ├── b156fa702355_chat_reworked.py │ │ ├── b30353be4eec_add_mcp_auth_performer.py │ │ ├── b329d00a9ea6_adding_assistant_specific_user_.py │ │ ├── b388730a2899_nullable_preferences.py │ │ ├── b4b7e1028dfd_grant_basic_to_existing_groups.py │ │ ├── b4ef3ae0bf6e_add_user_oauth_token_to_slack_bot.py │ │ ├── b51c6844d1df_seed_memory_tool.py │ │ ├── b558f51620b4_pause_finished_user_file_connectors.py │ │ ├── b5c4d7e8f9a1_add_hierarchy_node_cc_pair_table.py │ │ ├── b728689f45b1_rename_persona_is_visible_to_is_listed_.py │ │ ├── b72ed7a5db0e_remove_description_from_starter_messages.py │ │ ├── b7a7eee5aa15_add_checkpointing_failure_handling.py │ │ ├── b7bcc991d722_assign_users_to_default_groups.py │ │ ├── b7c2b63c4a03_add_background_reindex_enabled_field.py │ │ ├── b7ec9b5b505f_adjust_prompt_length.py │ │ ├── b85f02ec1308_fix_file_type_migration.py │ │ ├── b896bbd0d5a7_backfill_is_internet_data_to_false.py │ │ ├── b8c9d0e1f2a3_drop_milestone_table.py │ │ ├── ba98eba0f66a_add_support_for_litellm_proxy_in_.py │ │ ├── baf71f781b9e_add_llm_model_version_override_to_.py │ │ ├── bc9771dccadf_create_usage_reports_table.py │ │ ├── bceb1e139447_add_base_url_to_cloudembeddingprovider.py │ │ ├── bd2921608c3a_non_nullable_default_persona.py │ │ ├── bd7c3bf8beba_migrate_agent_responses_to_research_.py │ │ ├── be2ab2aa50ee_fix_capitalization.py │ │ ├── be87a654d5af_persona_new_default_model_configuration_.py │ │ ├── bf7a81109301_delete_input_prompts.py │ │ ├── c0aab6edb6dd_delete_workspace.py │ │ ├── c0c937d5c9e5_llm_provider_deprecate_fields.py │ │ ├── c0fd6e4da83a_add_recent_assistants.py │ │ ├── c18cdf4b497e_add_standard_answer_tables.py │ │ ├── c1d2e3f4a5b6_add_deep_research_tool.py │ │ ├── c5b692fa265c_add_index_attempt_errors_table.py │ │ ├── c5eae4a75a1b_add_chat_message__standard_answer_table.py │ │ ├── c7bf5721733e_add_has_been_indexed_to_.py │ │ ├── c7e9f4a3b2d1_add_python_tool.py │ │ ├── c7f2e1b4a9d3_add_sharing_scope_to_build_session.py │ │ ├── c8a93a2af083_personalization_user_info.py │ │ ├── c99d76fcd298_add_nullable_to_persona_id_in_chat_.py │ │ ├── c9e2cd766c29_add_s3_file_store_table.py │ │ ├── ca04500b9ee8_add_cascade_deletes_to_agent_tables.py │ │ ├── cbc03e08d0f3_add_opensearch_migration_tables.py │ │ ├── cec7ec36c505_kgentity_parent.py │ │ ├── cf90764725d8_larger_refresh_tokens.py │ │ ├── d09fc20a3c66_seed_builtin_tools.py │ │ ├── d1b637d7050a_sync_exa_api_key_to_content_provider.py │ │ ├── d25168c2beee_tool_name_consistency.py │ │ ├── d3fd499c829c_add_file_reader_tool.py │ │ ├── d5645c915d0e_remove_deletion_attempt_table.py │ │ ├── d56ffa94ca32_add_file_content.py │ │ ├── d5c86e2c6dc6_add_cascade_delete_to_search_query_user_.py │ │ ├── d61e513bef0a_add_total_docs_for_index_attempt.py │ │ ├── d7111c1238cd_remove_document_ids.py │ │ ├── d716b0791ddd_combined_slack_id_fields.py │ │ ├── d8cdfee5df80_add_skipped_to_userfilestatus.py │ │ ├── d929f0c1c6af_feedback_feature.py │ │ ├── d961aca62eb3_update_status_length.py │ │ ├── d9ec13955951_remove__dim_suffix_from_model_name.py │ │ ├── da42808081e3_migrate_jira_connectors_to_new_format.py │ │ ├── da4c21c69164_chosen_assistants_changed_to_jsonb.py │ │ ├── dab04867cd88_add_composite_index_to_document_by_.py │ │ ├── dba7f71618f5_onyx_custom_tool_flow.py │ │ ├── dbaa756c2ccf_embedding_models.py │ │ ├── df0c7ad8a076_added_deletion_attempt_table.py │ │ ├── df46c75b714e_add_default_vision_provider_to_llm_.py │ │ ├── dfbe9e93d3c7_extended_role_for_non_web.py │ │ ├── e0a68a81d434_add_chat_feedback.py │ │ ├── e1392f05e840_added_input_prompts.py │ │ ├── e209dc5a8156_added_prune_frequency.py │ │ ├── e4334d5b33ba_add_deployment_name_to_llmprovider.py │ │ ├── e50154680a5c_no_source_enum.py │ │ ├── e6a4bbc13fe4_add_index_for_retrieving_latest_index_.py │ │ ├── e7f8a9b0c1d2_create_anonymous_user.py │ │ ├── e86866a9c78a_add_persona_to_chat_session.py │ │ ├── e8f0d2a38171_add_status_to_mcp_server_and_make_auth_.py │ │ ├── e91df4e935ef_private_personas_documentsets.py │ │ ├── eaa3b5593925_add_default_slack_channel_config.py │ │ ├── ec3ec2eabf7b_index_from_beginning.py │ │ ├── ec85f2b3c544_remove_last_attempt_status_from_cc_pair.py │ │ ├── ecab2b3f1a3b_add_overrides_to_the_chat_session.py │ │ ├── ed9e44312505_add_icon_name_field.py │ │ ├── ee3f4b47fad5_added_alternate_model_to_chat_message.py │ │ ├── ef7da92f7213_add_files_to_chatmessage.py │ │ ├── efb35676026c_standard_answer_match_regex_flag.py │ │ ├── f11b408e39d3_force_lowercase_all_users.py │ │ ├── f13db29f3101_add_composite_index_for_last_modified_.py │ │ ├── f17bf3b0d9f1_embedding_provider_by_provider_type.py │ │ ├── f1c6478c3fd8_add_pre_defined_feedback.py │ │ ├── f1ca58b2f2ec_add_passthrough_auth_to_tool.py │ │ ├── f220515df7b4_add_flow_mapping_table.py │ │ ├── f32615f71aeb_add_custom_headers_to_tools.py │ │ ├── f39c5794c10a_add_background_errors_table.py │ │ ├── f5437cc136c5_delete_non_search_assistants.py │ │ ├── f71470ba9274_add_prompt_length_limit.py │ │ ├── f7505c5b0284_updated_constraints_for_ccpairs.py │ │ ├── f7a894b06d02_non_nullbale_slack_bot_id_in_channel_.py │ │ ├── f7ca3e2f45d9_migrate_no_auth_data_to_placeholder.py │ │ ├── f7e58d357687_add_has_web_column_to_user.py │ │ ├── f8a9b2c3d4e5_add_research_answer_purpose_to_chat_message.py │ │ ├── f9b8c7d6e5a4_update_parent_question_id_foreign_key_to_research_agent_iteration.py │ │ ├── fad14119fb92_delete_tags_with_wrong_enum.py │ │ ├── fb80bdd256de_add_chat_background_to_user.py │ │ ├── fcd135795f21_add_slack_bot_display_type.py │ │ ├── febe9eaa0644_add_document_set_persona_relationship_.py │ │ ├── fec3db967bf7_add_time_updated_to_usergroup_and_.py │ │ ├── feead2911109_add_opensearch_tenant_migration_columns.py │ │ └── ffc707a226b4_basic_document_metadata.py │ ├── alembic.ini │ ├── alembic_tenants/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── env.py │ │ ├── script.py.mako │ │ └── versions/ │ │ ├── 14a83a331951_create_usertenantmapping_table.py │ │ ├── 34e3630c7f32_lowercase_multi_tenant_user_auth.py │ │ ├── 3b45e0018bf1_add_new_available_tenant_table.py │ │ ├── 3b9f09038764_add_read_only_kg_user.py │ │ ├── a4f6ee863c47_mapping_for_anonymous_user_path.py │ │ └── ac842f85f932_new_column_user_tenant_mapping.py │ ├── assets/ │ │ └── .gitignore │ ├── ee/ │ │ ├── LICENSE │ │ ├── __init__.py │ │ └── onyx/ │ │ ├── __init__.py │ │ ├── access/ │ │ │ ├── access.py │ │ │ └── hierarchy_access.py │ │ ├── auth/ │ │ │ ├── __init__.py │ │ │ └── users.py │ │ ├── background/ │ │ │ ├── celery/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── heavy.py │ │ │ │ │ ├── light.py │ │ │ │ │ ├── monitoring.py │ │ │ │ │ └── primary.py │ │ │ │ └── tasks/ │ │ │ │ ├── beat_schedule.py │ │ │ │ ├── cleanup/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── cloud/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── doc_permission_syncing/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── external_group_syncing/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── group_sync_utils.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── hooks/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── query_history/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── tenant_provisioning/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── ttl_management/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ ├── usage_reporting/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tasks.py │ │ │ │ └── vespa/ │ │ │ │ ├── __init__.py │ │ │ │ └── tasks.py │ │ │ ├── celery_utils.py │ │ │ └── task_name_builders.py │ │ ├── configs/ │ │ │ ├── __init__.py │ │ │ ├── app_configs.py │ │ │ └── license_enforcement_config.py │ │ ├── connectors/ │ │ │ └── perm_sync_valid.py │ │ ├── db/ │ │ │ ├── __init__.py │ │ │ ├── analytics.py │ │ │ ├── connector.py │ │ │ ├── connector_credential_pair.py │ │ │ ├── document.py │ │ │ ├── document_set.py │ │ │ ├── external_perm.py │ │ │ ├── hierarchy.py │ │ │ ├── license.py │ │ │ ├── persona.py │ │ │ ├── query_history.py │ │ │ ├── saml.py │ │ │ ├── scim.py │ │ │ ├── search.py │ │ │ ├── standard_answer.py │ │ │ ├── token_limit.py │ │ │ ├── usage_export.py │ │ │ └── user_group.py │ │ ├── document_index/ │ │ │ └── vespa/ │ │ │ └── app_config/ │ │ │ └── cloud-services.xml.jinja │ │ ├── external_permissions/ │ │ │ ├── __init__.py │ │ │ ├── confluence/ │ │ │ │ ├── __init__.py │ │ │ │ ├── constants.py │ │ │ │ ├── doc_sync.py │ │ │ │ ├── group_sync.py │ │ │ │ ├── page_access.py │ │ │ │ └── space_access.py │ │ │ ├── github/ │ │ │ │ ├── doc_sync.py │ │ │ │ ├── group_sync.py │ │ │ │ └── utils.py │ │ │ ├── gmail/ │ │ │ │ └── doc_sync.py │ │ │ ├── google_drive/ │ │ │ │ ├── __init__.py │ │ │ │ ├── doc_sync.py │ │ │ │ ├── folder_retrieval.py │ │ │ │ ├── group_sync.py │ │ │ │ ├── models.py │ │ │ │ └── permission_retrieval.py │ │ │ ├── jira/ │ │ │ │ ├── __init__.py │ │ │ │ ├── doc_sync.py │ │ │ │ ├── group_sync.py │ │ │ │ ├── models.py │ │ │ │ └── page_access.py │ │ │ ├── perm_sync_types.py │ │ │ ├── post_query_censoring.py │ │ │ ├── salesforce/ │ │ │ │ ├── postprocessing.py │ │ │ │ └── utils.py │ │ │ ├── sharepoint/ │ │ │ │ ├── doc_sync.py │ │ │ │ ├── group_sync.py │ │ │ │ └── permission_utils.py │ │ │ ├── slack/ │ │ │ │ ├── channel_access.py │ │ │ │ ├── doc_sync.py │ │ │ │ ├── group_sync.py │ │ │ │ └── utils.py │ │ │ ├── sync_params.py │ │ │ ├── teams/ │ │ │ │ └── doc_sync.py │ │ │ └── utils.py │ │ ├── feature_flags/ │ │ │ ├── __init__.py │ │ │ ├── factory.py │ │ │ └── posthog_provider.py │ │ ├── hooks/ │ │ │ ├── __init__.py │ │ │ └── executor.py │ │ ├── main.py │ │ ├── onyxbot/ │ │ │ └── slack/ │ │ │ └── handlers/ │ │ │ ├── __init__.py │ │ │ └── handle_standard_answers.py │ │ ├── prompts/ │ │ │ ├── __init__.py │ │ │ ├── query_expansion.py │ │ │ └── search_flow_classification.py │ │ ├── search/ │ │ │ └── process_search_query.py │ │ ├── secondary_llm_flows/ │ │ │ ├── __init__.py │ │ │ ├── query_expansion.py │ │ │ └── search_flow_classification.py │ │ ├── server/ │ │ │ ├── __init__.py │ │ │ ├── analytics/ │ │ │ │ └── api.py │ │ │ ├── auth_check.py │ │ │ ├── billing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── api.py │ │ │ │ ├── models.py │ │ │ │ └── service.py │ │ │ ├── documents/ │ │ │ │ └── cc_pair.py │ │ │ ├── enterprise_settings/ │ │ │ │ ├── api.py │ │ │ │ ├── models.py │ │ │ │ └── store.py │ │ │ ├── evals/ │ │ │ │ ├── __init__.py │ │ │ │ └── api.py │ │ │ ├── features/ │ │ │ │ ├── __init__.py │ │ │ │ └── hooks/ │ │ │ │ ├── __init__.py │ │ │ │ └── api.py │ │ │ ├── license/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── manage/ │ │ │ │ └── standard_answer.py │ │ │ ├── middleware/ │ │ │ │ ├── license_enforcement.py │ │ │ │ └── tenant_tracking.py │ │ │ ├── oauth/ │ │ │ │ ├── api.py │ │ │ │ ├── api_router.py │ │ │ │ ├── confluence_cloud.py │ │ │ │ ├── google_drive.py │ │ │ │ └── slack.py │ │ │ ├── query_and_chat/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── query_backend.py │ │ │ │ ├── search_backend.py │ │ │ │ ├── streaming_models.py │ │ │ │ └── token_limit.py │ │ │ ├── query_history/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── reporting/ │ │ │ │ ├── usage_export_api.py │ │ │ │ ├── usage_export_generation.py │ │ │ │ └── usage_export_models.py │ │ │ ├── scim/ │ │ │ │ ├── __init__.py │ │ │ │ ├── api.py │ │ │ │ ├── auth.py │ │ │ │ ├── filtering.py │ │ │ │ ├── models.py │ │ │ │ ├── patch.py │ │ │ │ ├── providers/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── entra.py │ │ │ │ │ └── okta.py │ │ │ │ └── schema_definitions.py │ │ │ ├── seeding.py │ │ │ ├── settings/ │ │ │ │ ├── __init__.py │ │ │ │ └── api.py │ │ │ ├── tenant_usage_limits.py │ │ │ ├── tenants/ │ │ │ │ ├── __init__.py │ │ │ │ ├── access.py │ │ │ │ ├── admin_api.py │ │ │ │ ├── anonymous_user_path.py │ │ │ │ ├── anonymous_users_api.py │ │ │ │ ├── api.py │ │ │ │ ├── billing.py │ │ │ │ ├── billing_api.py │ │ │ │ ├── models.py │ │ │ │ ├── product_gating.py │ │ │ │ ├── provisioning.py │ │ │ │ ├── proxy.py │ │ │ │ ├── schema_management.py │ │ │ │ ├── team_membership_api.py │ │ │ │ ├── tenant_management_api.py │ │ │ │ ├── user_invitations_api.py │ │ │ │ └── user_mapping.py │ │ │ ├── token_rate_limits/ │ │ │ │ └── api.py │ │ │ ├── usage_limits.py │ │ │ └── user_group/ │ │ │ ├── api.py │ │ │ └── models.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── encryption.py │ │ ├── license.py │ │ ├── posthog_client.py │ │ └── telemetry.py │ ├── generated/ │ │ └── README.md │ ├── keys/ │ │ └── license_public_key.pem │ ├── model_server/ │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── encoders.py │ │ ├── legacy/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── custom_models.py │ │ │ ├── onyx_torch_model.py │ │ │ └── reranker.py │ │ ├── main.py │ │ ├── management_endpoints.py │ │ └── utils.py │ ├── onyx/ │ │ ├── __init__.py │ │ ├── access/ │ │ │ ├── __init__.py │ │ │ ├── access.py │ │ │ ├── hierarchy_access.py │ │ │ ├── models.py │ │ │ └── utils.py │ │ ├── auth/ │ │ │ ├── __init__.py │ │ │ ├── anonymous_user.py │ │ │ ├── api_key.py │ │ │ ├── captcha.py │ │ │ ├── constants.py │ │ │ ├── disposable_email_validator.py │ │ │ ├── email_utils.py │ │ │ ├── invited_users.py │ │ │ ├── jwt.py │ │ │ ├── oauth_refresher.py │ │ │ ├── oauth_token_manager.py │ │ │ ├── pat.py │ │ │ ├── permissions.py │ │ │ ├── schemas.py │ │ │ ├── users.py │ │ │ └── utils.py │ │ ├── background/ │ │ │ ├── README.md │ │ │ ├── celery/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── app_base.py │ │ │ │ │ ├── beat.py │ │ │ │ │ ├── client.py │ │ │ │ │ ├── docfetching.py │ │ │ │ │ ├── docprocessing.py │ │ │ │ │ ├── heavy.py │ │ │ │ │ ├── light.py │ │ │ │ │ ├── monitoring.py │ │ │ │ │ ├── primary.py │ │ │ │ │ ├── task_formatters.py │ │ │ │ │ └── user_file_processing.py │ │ │ │ ├── celery_k8s_probe.py │ │ │ │ ├── celery_redis.py │ │ │ │ ├── celery_utils.py │ │ │ │ ├── configs/ │ │ │ │ │ ├── base.py │ │ │ │ │ ├── beat.py │ │ │ │ │ ├── client.py │ │ │ │ │ ├── docfetching.py │ │ │ │ │ ├── docprocessing.py │ │ │ │ │ ├── heavy.py │ │ │ │ │ ├── light.py │ │ │ │ │ ├── monitoring.py │ │ │ │ │ ├── primary.py │ │ │ │ │ └── user_file_processing.py │ │ │ │ ├── memory_monitoring.py │ │ │ │ ├── tasks/ │ │ │ │ │ ├── beat_schedule.py │ │ │ │ │ ├── connector_deletion/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── docfetching/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── task_creation_utils.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── docprocessing/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── heartbeat.py │ │ │ │ │ │ ├── tasks.py │ │ │ │ │ │ └── utils.py │ │ │ │ │ ├── evals/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── hierarchyfetching/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── llm_model_update/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── models.py │ │ │ │ │ ├── monitoring/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── opensearch_migration/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── constants.py │ │ │ │ │ │ ├── tasks.py │ │ │ │ │ │ └── transformer.py │ │ │ │ │ ├── periodic/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── pruning/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── RetryDocumentIndex.py │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ ├── user_file_processing/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── tasks.py │ │ │ │ │ └── vespa/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── document_sync.py │ │ │ │ │ └── tasks.py │ │ │ │ └── versioned_apps/ │ │ │ │ ├── beat.py │ │ │ │ ├── client.py │ │ │ │ ├── docfetching.py │ │ │ │ ├── docprocessing.py │ │ │ │ ├── heavy.py │ │ │ │ ├── light.py │ │ │ │ ├── monitoring.py │ │ │ │ ├── primary.py │ │ │ │ └── user_file_processing.py │ │ │ ├── error_logging.py │ │ │ ├── indexing/ │ │ │ │ ├── checkpointing_utils.py │ │ │ │ ├── dask_utils.py │ │ │ │ ├── index_attempt_utils.py │ │ │ │ ├── job_client.py │ │ │ │ ├── memory_tracer.py │ │ │ │ ├── models.py │ │ │ │ └── run_docfetching.py │ │ │ ├── periodic_poller.py │ │ │ └── task_utils.py │ │ ├── cache/ │ │ │ ├── factory.py │ │ │ ├── interface.py │ │ │ ├── postgres_backend.py │ │ │ └── redis_backend.py │ │ ├── chat/ │ │ │ ├── COMPRESSION.md │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── chat_processing_checker.py │ │ │ ├── chat_state.py │ │ │ ├── chat_utils.py │ │ │ ├── citation_processor.py │ │ │ ├── citation_utils.py │ │ │ ├── compression.py │ │ │ ├── emitter.py │ │ │ ├── llm_loop.py │ │ │ ├── llm_step.py │ │ │ ├── models.py │ │ │ ├── process_message.py │ │ │ ├── prompt_utils.py │ │ │ ├── save_chat.py │ │ │ ├── stop_signal_checker.py │ │ │ └── tool_call_args_streaming.py │ │ ├── configs/ │ │ │ ├── __init__.py │ │ │ ├── agent_configs.py │ │ │ ├── app_configs.py │ │ │ ├── chat_configs.py │ │ │ ├── constants.py │ │ │ ├── embedding_configs.py │ │ │ ├── kg_configs.py │ │ │ ├── llm_configs.py │ │ │ ├── model_configs.py │ │ │ ├── onyxbot_configs.py │ │ │ ├── research_configs.py │ │ │ ├── saml_config/ │ │ │ │ └── template.settings.json │ │ │ └── tool_configs.py │ │ ├── connectors/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── airtable/ │ │ │ │ └── airtable_connector.py │ │ │ ├── asana/ │ │ │ │ ├── __init__.py │ │ │ │ ├── asana_api.py │ │ │ │ └── connector.py │ │ │ ├── axero/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── bitbucket/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ └── utils.py │ │ │ ├── blob/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── bookstack/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ └── connector.py │ │ │ ├── canvas/ │ │ │ │ ├── __init__.py │ │ │ │ ├── access.py │ │ │ │ ├── client.py │ │ │ │ └── connector.py │ │ │ ├── clickup/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── coda/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── confluence/ │ │ │ │ ├── __init__.py │ │ │ │ ├── access.py │ │ │ │ ├── connector.py │ │ │ │ ├── models.py │ │ │ │ ├── onyx_confluence.py │ │ │ │ ├── user_profile_override.py │ │ │ │ └── utils.py │ │ │ ├── connector_runner.py │ │ │ ├── credentials_provider.py │ │ │ ├── cross_connector_utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── miscellaneous_utils.py │ │ │ │ └── rate_limit_wrapper.py │ │ │ ├── discord/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── discourse/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── document360/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ └── utils.py │ │ │ ├── dropbox/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── drupal_wiki/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ ├── models.py │ │ │ │ └── utils.py │ │ │ ├── egnyte/ │ │ │ │ └── connector.py │ │ │ ├── exceptions.py │ │ │ ├── factory.py │ │ │ ├── file/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── fireflies/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── freshdesk/ │ │ │ │ ├── __init__,py │ │ │ │ └── connector.py │ │ │ ├── gitbook/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── github/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ ├── models.py │ │ │ │ ├── rate_limit_utils.py │ │ │ │ └── utils.py │ │ │ ├── gitlab/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── gmail/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── gong/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── google_drive/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ ├── constants.py │ │ │ │ ├── doc_conversion.py │ │ │ │ ├── file_retrieval.py │ │ │ │ ├── models.py │ │ │ │ └── section_extraction.py │ │ │ ├── google_site/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── google_utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── google_auth.py │ │ │ │ ├── google_kv.py │ │ │ │ ├── google_utils.py │ │ │ │ ├── resources.py │ │ │ │ └── shared_constants.py │ │ │ ├── guru/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── highspot/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── connector.py │ │ │ │ └── utils.py │ │ │ ├── hubspot/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ └── rate_limit.py │ │ │ ├── imap/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ └── models.py │ │ │ ├── interfaces.py │ │ │ ├── jira/ │ │ │ │ ├── __init__.py │ │ │ │ ├── access.py │ │ │ │ ├── connector.py │ │ │ │ └── utils.py │ │ │ ├── linear/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── loopio/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── mediawiki/ │ │ │ │ ├── __init__.py │ │ │ │ ├── family.py │ │ │ │ └── wiki.py │ │ │ ├── microsoft_graph_env.py │ │ │ ├── mock_connector/ │ │ │ │ └── connector.py │ │ │ ├── models.py │ │ │ ├── notion/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── outline/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ └── connector.py │ │ │ ├── productboard/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── registry.py │ │ │ ├── requesttracker/ │ │ │ │ ├── .gitignore │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── salesforce/ │ │ │ │ ├── __init__.py │ │ │ │ ├── blacklist.py │ │ │ │ ├── connector.py │ │ │ │ ├── doc_conversion.py │ │ │ │ ├── onyx_salesforce.py │ │ │ │ ├── salesforce_calls.py │ │ │ │ ├── shelve_stuff/ │ │ │ │ │ ├── old_test_salesforce_shelves.py │ │ │ │ │ ├── shelve_functions.py │ │ │ │ │ ├── shelve_utils.py │ │ │ │ │ └── test_salesforce_shelves.py │ │ │ │ ├── sqlite_functions.py │ │ │ │ └── utils.py │ │ │ ├── sharepoint/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ └── connector_utils.py │ │ │ ├── slab/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── slack/ │ │ │ │ ├── __init__.py │ │ │ │ ├── access.py │ │ │ │ ├── connector.py │ │ │ │ ├── models.py │ │ │ │ ├── onyx_retry_handler.py │ │ │ │ ├── onyx_slack_web_client.py │ │ │ │ └── utils.py │ │ │ ├── teams/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connector.py │ │ │ │ ├── models.py │ │ │ │ └── utils.py │ │ │ ├── testrail/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── web/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── wikipedia/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── xenforo/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ ├── zendesk/ │ │ │ │ ├── __init__.py │ │ │ │ └── connector.py │ │ │ └── zulip/ │ │ │ ├── __init__.py │ │ │ ├── connector.py │ │ │ ├── schemas.py │ │ │ └── utils.py │ │ ├── context/ │ │ │ └── search/ │ │ │ ├── __init__.py │ │ │ ├── enums.py │ │ │ ├── federated/ │ │ │ │ ├── models.py │ │ │ │ ├── slack_search.py │ │ │ │ └── slack_search_utils.py │ │ │ ├── models.py │ │ │ ├── pipeline.py │ │ │ ├── preprocessing/ │ │ │ │ └── access_filters.py │ │ │ ├── retrieval/ │ │ │ │ └── search_runner.py │ │ │ └── utils.py │ │ ├── db/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── _deprecated/ │ │ │ │ └── pg_file_store.py │ │ │ ├── api_key.py │ │ │ ├── auth.py │ │ │ ├── background_error.py │ │ │ ├── chat.py │ │ │ ├── chat_search.py │ │ │ ├── chunk.py │ │ │ ├── code_interpreter.py │ │ │ ├── connector.py │ │ │ ├── connector_credential_pair.py │ │ │ ├── constants.py │ │ │ ├── credentials.py │ │ │ ├── dal.py │ │ │ ├── deletion_attempt.py │ │ │ ├── discord_bot.py │ │ │ ├── document.py │ │ │ ├── document_access.py │ │ │ ├── document_set.py │ │ │ ├── engine/ │ │ │ │ ├── __init__.py │ │ │ │ ├── async_sql_engine.py │ │ │ │ ├── connection_warmup.py │ │ │ │ ├── iam_auth.py │ │ │ │ ├── sql_engine.py │ │ │ │ ├── tenant_utils.py │ │ │ │ └── time_utils.py │ │ │ ├── entities.py │ │ │ ├── entity_type.py │ │ │ ├── enums.py │ │ │ ├── federated.py │ │ │ ├── feedback.py │ │ │ ├── file_content.py │ │ │ ├── file_record.py │ │ │ ├── hierarchy.py │ │ │ ├── hook.py │ │ │ ├── image_generation.py │ │ │ ├── index_attempt.py │ │ │ ├── indexing_coordination.py │ │ │ ├── input_prompt.py │ │ │ ├── kg_config.py │ │ │ ├── kg_temp_view.py │ │ │ ├── llm.py │ │ │ ├── mcp.py │ │ │ ├── memory.py │ │ │ ├── models.py │ │ │ ├── notification.py │ │ │ ├── oauth_config.py │ │ │ ├── opensearch_migration.py │ │ │ ├── pat.py │ │ │ ├── permission_sync_attempt.py │ │ │ ├── permissions.py │ │ │ ├── persona.py │ │ │ ├── projects.py │ │ │ ├── pydantic_type.py │ │ │ ├── relationships.py │ │ │ ├── release_notes.py │ │ │ ├── rotate_encryption_key.py │ │ │ ├── saml.py │ │ │ ├── search_settings.py │ │ │ ├── seeding/ │ │ │ │ └── chat_history_seeding.py │ │ │ ├── slack_bot.py │ │ │ ├── slack_channel_config.py │ │ │ ├── swap_index.py │ │ │ ├── sync_record.py │ │ │ ├── tag.py │ │ │ ├── tasks.py │ │ │ ├── token_limit.py │ │ │ ├── tools.py │ │ │ ├── usage.py │ │ │ ├── user_file.py │ │ │ ├── user_preferences.py │ │ │ ├── users.py │ │ │ ├── utils.py │ │ │ ├── voice.py │ │ │ └── web_search.py │ │ ├── deep_research/ │ │ │ ├── __init__.py │ │ │ ├── dr_loop.py │ │ │ ├── dr_mock_tools.py │ │ │ ├── models.py │ │ │ └── utils.py │ │ ├── document_index/ │ │ │ ├── FILTER_SEMANTICS.md │ │ │ ├── __init__.py │ │ │ ├── chunk_content_enrichment.py │ │ │ ├── disabled.py │ │ │ ├── document_index_utils.py │ │ │ ├── factory.py │ │ │ ├── interfaces.py │ │ │ ├── interfaces_new.py │ │ │ ├── opensearch/ │ │ │ │ ├── README.md │ │ │ │ ├── client.py │ │ │ │ ├── cluster_settings.py │ │ │ │ ├── constants.py │ │ │ │ ├── opensearch_document_index.py │ │ │ │ ├── schema.py │ │ │ │ ├── search.py │ │ │ │ └── string_filtering.py │ │ │ ├── vespa/ │ │ │ │ ├── __init__.py │ │ │ │ ├── app_config/ │ │ │ │ │ ├── schemas/ │ │ │ │ │ │ └── danswer_chunk.sd.jinja │ │ │ │ │ ├── services.xml.jinja │ │ │ │ │ └── validation-overrides.xml.jinja │ │ │ │ ├── chunk_retrieval.py │ │ │ │ ├── deletion.py │ │ │ │ ├── index.py │ │ │ │ ├── indexing_utils.py │ │ │ │ ├── kg_interactions.py │ │ │ │ ├── shared_utils/ │ │ │ │ │ ├── utils.py │ │ │ │ │ └── vespa_request_builders.py │ │ │ │ └── vespa_document_index.py │ │ │ └── vespa_constants.py │ │ ├── error_handling/ │ │ │ ├── __init__.py │ │ │ ├── error_codes.py │ │ │ └── exceptions.py │ │ ├── evals/ │ │ │ ├── README.md │ │ │ ├── eval.py │ │ │ ├── eval_cli.py │ │ │ ├── models.py │ │ │ ├── one_off/ │ │ │ │ └── create_braintrust_dataset.py │ │ │ ├── provider.py │ │ │ └── providers/ │ │ │ ├── braintrust.py │ │ │ └── local.py │ │ ├── feature_flags/ │ │ │ ├── __init__.py │ │ │ ├── factory.py │ │ │ ├── feature_flags_keys.py │ │ │ ├── flags.py │ │ │ └── interface.py │ │ ├── federated_connectors/ │ │ │ ├── __init__.py │ │ │ ├── factory.py │ │ │ ├── federated_retrieval.py │ │ │ ├── interfaces.py │ │ │ ├── models.py │ │ │ ├── oauth_utils.py │ │ │ ├── registry.py │ │ │ └── slack/ │ │ │ ├── __init__.py │ │ │ ├── federated_connector.py │ │ │ └── models.py │ │ ├── file_processing/ │ │ │ ├── __init__.py │ │ │ ├── enums.py │ │ │ ├── extract_file_text.py │ │ │ ├── file_types.py │ │ │ ├── html_utils.py │ │ │ ├── image_summarization.py │ │ │ ├── image_utils.py │ │ │ ├── password_validation.py │ │ │ └── unstructured.py │ │ ├── file_store/ │ │ │ ├── README.md │ │ │ ├── constants.py │ │ │ ├── document_batch_storage.py │ │ │ ├── file_store.py │ │ │ ├── models.py │ │ │ ├── postgres_file_store.py │ │ │ ├── s3_key_utils.py │ │ │ └── utils.py │ │ ├── hooks/ │ │ │ ├── __init__.py │ │ │ ├── api_dependencies.py │ │ │ ├── executor.py │ │ │ ├── models.py │ │ │ ├── points/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── document_ingestion.py │ │ │ │ └── query_processing.py │ │ │ └── registry.py │ │ ├── httpx/ │ │ │ └── httpx_pool.py │ │ ├── image_gen/ │ │ │ ├── __init__.py │ │ │ ├── exceptions.py │ │ │ ├── factory.py │ │ │ ├── interfaces.py │ │ │ └── providers/ │ │ │ ├── azure_img_gen.py │ │ │ ├── openai_img_gen.py │ │ │ └── vertex_img_gen.py │ │ ├── indexing/ │ │ │ ├── __init__.py │ │ │ ├── adapters/ │ │ │ │ ├── document_indexing_adapter.py │ │ │ │ └── user_file_indexing_adapter.py │ │ │ ├── chunk_batch_store.py │ │ │ ├── chunker.py │ │ │ ├── content_classification.py │ │ │ ├── embedder.py │ │ │ ├── indexing_heartbeat.py │ │ │ ├── indexing_pipeline.py │ │ │ ├── models.py │ │ │ └── vector_db_insertion.py │ │ ├── key_value_store/ │ │ │ ├── __init__.py │ │ │ ├── factory.py │ │ │ ├── interface.py │ │ │ └── store.py │ │ ├── kg/ │ │ │ ├── clustering/ │ │ │ │ ├── clustering.py │ │ │ │ └── normalizations.py │ │ │ ├── extractions/ │ │ │ │ └── extraction_processing.py │ │ │ ├── models.py │ │ │ ├── resets/ │ │ │ │ ├── reset_index.py │ │ │ │ ├── reset_source.py │ │ │ │ └── reset_vespa.py │ │ │ ├── setup/ │ │ │ │ └── kg_default_entity_definitions.py │ │ │ ├── utils/ │ │ │ │ ├── embeddings.py │ │ │ │ ├── extraction_utils.py │ │ │ │ ├── formatting_utils.py │ │ │ │ └── lock_utils.py │ │ │ └── vespa/ │ │ │ └── vespa_interactions.py │ │ ├── llm/ │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ ├── cost.py │ │ │ ├── factory.py │ │ │ ├── interfaces.py │ │ │ ├── litellm_singleton/ │ │ │ │ ├── __init__.py │ │ │ │ ├── config.py │ │ │ │ └── monkey_patches.py │ │ │ ├── model_metadata_enrichments.json │ │ │ ├── model_name_parser.py │ │ │ ├── model_response.py │ │ │ ├── models.py │ │ │ ├── multi_llm.py │ │ │ ├── override_models.py │ │ │ ├── prompt_cache/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── cache_manager.py │ │ │ │ ├── models.py │ │ │ │ ├── processor.py │ │ │ │ ├── providers/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── anthropic.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── factory.py │ │ │ │ │ ├── noop.py │ │ │ │ │ ├── openai.py │ │ │ │ │ └── vertex.py │ │ │ │ └── utils.py │ │ │ ├── request_context.py │ │ │ ├── utils.py │ │ │ └── well_known_providers/ │ │ │ ├── auto_update_models.py │ │ │ ├── auto_update_service.py │ │ │ ├── constants.py │ │ │ ├── llm_provider_options.py │ │ │ ├── models.py │ │ │ └── recommended-models.json │ │ ├── main.py │ │ ├── mcp_server/ │ │ │ ├── README.md │ │ │ ├── api.py │ │ │ ├── auth.py │ │ │ ├── mcp.json.template │ │ │ ├── resources/ │ │ │ │ ├── __init__.py │ │ │ │ └── indexed_sources.py │ │ │ ├── tools/ │ │ │ │ ├── __init__.py │ │ │ │ └── search.py │ │ │ └── utils.py │ │ ├── mcp_server_main.py │ │ ├── natural_language_processing/ │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ ├── english_stopwords.py │ │ │ ├── exceptions.py │ │ │ ├── search_nlp_models.py │ │ │ └── utils.py │ │ ├── onyxbot/ │ │ │ ├── discord/ │ │ │ │ ├── DISCORD_MULTITENANT_README.md │ │ │ │ ├── api_client.py │ │ │ │ ├── cache.py │ │ │ │ ├── client.py │ │ │ │ ├── constants.py │ │ │ │ ├── exceptions.py │ │ │ │ ├── handle_commands.py │ │ │ │ ├── handle_message.py │ │ │ │ └── utils.py │ │ │ └── slack/ │ │ │ ├── blocks.py │ │ │ ├── config.py │ │ │ ├── constants.py │ │ │ ├── formatting.py │ │ │ ├── handlers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── handle_buttons.py │ │ │ │ ├── handle_message.py │ │ │ │ ├── handle_regular_answer.py │ │ │ │ ├── handle_standard_answers.py │ │ │ │ └── utils.py │ │ │ ├── icons.py │ │ │ ├── listener.py │ │ │ ├── models.py │ │ │ └── utils.py │ │ ├── prompts/ │ │ │ ├── __init__.py │ │ │ ├── basic_memory.py │ │ │ ├── chat_prompts.py │ │ │ ├── chat_tools.py │ │ │ ├── compression_prompts.py │ │ │ ├── constants.py │ │ │ ├── contextual_retrieval.py │ │ │ ├── deep_research/ │ │ │ │ ├── __init__.py │ │ │ │ ├── dr_tool_prompts.py │ │ │ │ ├── orchestration_layer.py │ │ │ │ └── research_agent.py │ │ │ ├── federated_search.py │ │ │ ├── filter_extration.py │ │ │ ├── image_analysis.py │ │ │ ├── kg_prompts.py │ │ │ ├── prompt_template.py │ │ │ ├── prompt_utils.py │ │ │ ├── search_prompts.py │ │ │ ├── tool_prompts.py │ │ │ └── user_info.py │ │ ├── redis/ │ │ │ ├── iam_auth.py │ │ │ ├── redis_connector.py │ │ │ ├── redis_connector_delete.py │ │ │ ├── redis_connector_doc_perm_sync.py │ │ │ ├── redis_connector_ext_group_sync.py │ │ │ ├── redis_connector_index.py │ │ │ ├── redis_connector_prune.py │ │ │ ├── redis_connector_stop.py │ │ │ ├── redis_connector_utils.py │ │ │ ├── redis_document_set.py │ │ │ ├── redis_hierarchy.py │ │ │ ├── redis_object_helper.py │ │ │ ├── redis_pool.py │ │ │ ├── redis_usergroup.py │ │ │ └── redis_utils.py │ │ ├── secondary_llm_flows/ │ │ │ ├── __init__.py │ │ │ ├── chat_session_naming.py │ │ │ ├── document_filter.py │ │ │ ├── memory_update.py │ │ │ ├── query_expansion.py │ │ │ ├── source_filter.py │ │ │ └── time_filter.py │ │ ├── seeding/ │ │ │ └── __init__.py │ │ ├── server/ │ │ │ ├── __init__.py │ │ │ ├── api_key/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── api_key_usage.py │ │ │ ├── auth_check.py │ │ │ ├── documents/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cc_pair.py │ │ │ │ ├── connector.py │ │ │ │ ├── credential.py │ │ │ │ ├── document.py │ │ │ │ ├── document_utils.py │ │ │ │ ├── models.py │ │ │ │ ├── private_key_types.py │ │ │ │ └── standard_oauth.py │ │ │ ├── evals/ │ │ │ │ ├── __init__.py │ │ │ │ └── models.py │ │ │ ├── features/ │ │ │ │ ├── __init__.py │ │ │ │ ├── build/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── AGENTS.template.md │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── api.py │ │ │ │ │ │ ├── messages_api.py │ │ │ │ │ │ ├── models.py │ │ │ │ │ │ ├── packet_logger.py │ │ │ │ │ │ ├── packets.py │ │ │ │ │ │ ├── rate_limit.py │ │ │ │ │ │ ├── sessions_api.py │ │ │ │ │ │ ├── subscription_check.py │ │ │ │ │ │ ├── templates/ │ │ │ │ │ │ │ ├── webapp_hmr_fixer.js │ │ │ │ │ │ │ └── webapp_offline.html │ │ │ │ │ │ └── user_library.py │ │ │ │ │ ├── configs.py │ │ │ │ │ ├── db/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── build_session.py │ │ │ │ │ │ ├── rate_limit.py │ │ │ │ │ │ ├── sandbox.py │ │ │ │ │ │ └── user_library.py │ │ │ │ │ ├── indexing/ │ │ │ │ │ │ └── persistent_document_writer.py │ │ │ │ │ ├── s3/ │ │ │ │ │ │ └── s3_client.py │ │ │ │ │ ├── sandbox/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ ├── kubernetes/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── docker/ │ │ │ │ │ │ │ │ ├── Dockerfile │ │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ │ ├── generate_agents_md.py │ │ │ │ │ │ │ │ ├── initial-requirements.txt │ │ │ │ │ │ │ │ ├── run-test.sh │ │ │ │ │ │ │ │ ├── skills/ │ │ │ │ │ │ │ │ │ ├── image-generation/ │ │ │ │ │ │ │ │ │ │ ├── SKILL.md │ │ │ │ │ │ │ │ │ │ └── scripts/ │ │ │ │ │ │ │ │ │ │ └── generate.py │ │ │ │ │ │ │ │ │ └── pptx/ │ │ │ │ │ │ │ │ │ ├── SKILL.md │ │ │ │ │ │ │ │ │ ├── editing.md │ │ │ │ │ │ │ │ │ ├── pptxgenjs.md │ │ │ │ │ │ │ │ │ └── scripts/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ ├── add_slide.py │ │ │ │ │ │ │ │ │ ├── clean.py │ │ │ │ │ │ │ │ │ ├── office/ │ │ │ │ │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ │ ├── merge_runs.py │ │ │ │ │ │ │ │ │ │ │ └── simplify_redlines.py │ │ │ │ │ │ │ │ │ │ ├── pack.py │ │ │ │ │ │ │ │ │ │ ├── schemas/ │ │ │ │ │ │ │ │ │ │ │ ├── ISO-IEC29500-4_2016/ │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-chart.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-chartDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-diagram.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-lockedCanvas.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-main.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-picture.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-spreadsheetDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── dml-wordprocessingDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── pml.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-additionalCharacteristics.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-bibliography.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-commonSimpleTypes.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-customXmlDataProperties.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-customXmlSchemaProperties.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-documentPropertiesCustom.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-documentPropertiesExtended.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-documentPropertiesVariantTypes.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-math.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── shared-relationshipReference.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── sml.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── vml-main.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── vml-officeDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── vml-presentationDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── vml-spreadsheetDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── vml-wordprocessingDrawing.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── wml.xsd │ │ │ │ │ │ │ │ │ │ │ │ └── xml.xsd │ │ │ │ │ │ │ │ │ │ │ ├── ecma/ │ │ │ │ │ │ │ │ │ │ │ │ └── fouth-edition/ │ │ │ │ │ │ │ │ │ │ │ │ ├── opc-contentTypes.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── opc-coreProperties.xsd │ │ │ │ │ │ │ │ │ │ │ │ ├── opc-digSig.xsd │ │ │ │ │ │ │ │ │ │ │ │ └── opc-relationships.xsd │ │ │ │ │ │ │ │ │ │ │ ├── mce/ │ │ │ │ │ │ │ │ │ │ │ │ └── mc.xsd │ │ │ │ │ │ │ │ │ │ │ └── microsoft/ │ │ │ │ │ │ │ │ │ │ │ ├── wml-2010.xsd │ │ │ │ │ │ │ │ │ │ │ ├── wml-2012.xsd │ │ │ │ │ │ │ │ │ │ │ ├── wml-2018.xsd │ │ │ │ │ │ │ │ │ │ │ ├── wml-cex-2018.xsd │ │ │ │ │ │ │ │ │ │ │ ├── wml-cid-2016.xsd │ │ │ │ │ │ │ │ │ │ │ ├── wml-sdtdatahash-2020.xsd │ │ │ │ │ │ │ │ │ │ │ └── wml-symex-2015.xsd │ │ │ │ │ │ │ │ │ │ ├── soffice.py │ │ │ │ │ │ │ │ │ │ ├── unpack.py │ │ │ │ │ │ │ │ │ │ ├── validate.py │ │ │ │ │ │ │ │ │ │ └── validators/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ │ │ │ │ ├── docx.py │ │ │ │ │ │ │ │ │ │ ├── pptx.py │ │ │ │ │ │ │ │ │ │ └── redlining.py │ │ │ │ │ │ │ │ │ ├── preview.py │ │ │ │ │ │ │ │ │ └── thumbnail.py │ │ │ │ │ │ │ │ ├── templates/ │ │ │ │ │ │ │ │ │ └── outputs/ │ │ │ │ │ │ │ │ │ └── web/ │ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ │ ├── AGENTS.md │ │ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ │ │ ├── globals.css │ │ │ │ │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ │ │ │ └── site.webmanifest │ │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ │ ├── component-example.tsx │ │ │ │ │ │ │ │ │ │ ├── example.tsx │ │ │ │ │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ │ │ │ │ ├── accordion.tsx │ │ │ │ │ │ │ │ │ │ ├── alert-dialog.tsx │ │ │ │ │ │ │ │ │ │ ├── alert.tsx │ │ │ │ │ │ │ │ │ │ ├── aspect-ratio.tsx │ │ │ │ │ │ │ │ │ │ ├── avatar.tsx │ │ │ │ │ │ │ │ │ │ ├── badge.tsx │ │ │ │ │ │ │ │ │ │ ├── breadcrumb.tsx │ │ │ │ │ │ │ │ │ │ ├── button-group.tsx │ │ │ │ │ │ │ │ │ │ ├── button.tsx │ │ │ │ │ │ │ │ │ │ ├── calendar.tsx │ │ │ │ │ │ │ │ │ │ ├── card.tsx │ │ │ │ │ │ │ │ │ │ ├── carousel.tsx │ │ │ │ │ │ │ │ │ │ ├── chart.tsx │ │ │ │ │ │ │ │ │ │ ├── checkbox.tsx │ │ │ │ │ │ │ │ │ │ ├── collapsible.tsx │ │ │ │ │ │ │ │ │ │ ├── combobox.tsx │ │ │ │ │ │ │ │ │ │ ├── command.tsx │ │ │ │ │ │ │ │ │ │ ├── context-menu.tsx │ │ │ │ │ │ │ │ │ │ ├── dialog.tsx │ │ │ │ │ │ │ │ │ │ ├── drawer.tsx │ │ │ │ │ │ │ │ │ │ ├── dropdown-menu.tsx │ │ │ │ │ │ │ │ │ │ ├── empty.tsx │ │ │ │ │ │ │ │ │ │ ├── field.tsx │ │ │ │ │ │ │ │ │ │ ├── hover-card.tsx │ │ │ │ │ │ │ │ │ │ ├── input-group.tsx │ │ │ │ │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ │ │ │ │ ├── item.tsx │ │ │ │ │ │ │ │ │ │ ├── kbd.tsx │ │ │ │ │ │ │ │ │ │ ├── label.tsx │ │ │ │ │ │ │ │ │ │ ├── menubar.tsx │ │ │ │ │ │ │ │ │ │ ├── native-select.tsx │ │ │ │ │ │ │ │ │ │ ├── navigation-menu.tsx │ │ │ │ │ │ │ │ │ │ ├── pagination.tsx │ │ │ │ │ │ │ │ │ │ ├── popover.tsx │ │ │ │ │ │ │ │ │ │ ├── progress.tsx │ │ │ │ │ │ │ │ │ │ ├── radio-group.tsx │ │ │ │ │ │ │ │ │ │ ├── resizable.tsx │ │ │ │ │ │ │ │ │ │ ├── scroll-area.tsx │ │ │ │ │ │ │ │ │ │ ├── select.tsx │ │ │ │ │ │ │ │ │ │ ├── separator.tsx │ │ │ │ │ │ │ │ │ │ ├── sheet.tsx │ │ │ │ │ │ │ │ │ │ ├── sidebar.tsx │ │ │ │ │ │ │ │ │ │ ├── skeleton.tsx │ │ │ │ │ │ │ │ │ │ ├── slider.tsx │ │ │ │ │ │ │ │ │ │ ├── sonner.tsx │ │ │ │ │ │ │ │ │ │ ├── spinner.tsx │ │ │ │ │ │ │ │ │ │ ├── switch.tsx │ │ │ │ │ │ │ │ │ │ ├── table.tsx │ │ │ │ │ │ │ │ │ │ ├── tabs.tsx │ │ │ │ │ │ │ │ │ │ ├── textarea.tsx │ │ │ │ │ │ │ │ │ │ ├── toggle-group.tsx │ │ │ │ │ │ │ │ │ │ ├── toggle.tsx │ │ │ │ │ │ │ │ │ │ └── tooltip.tsx │ │ │ │ │ │ │ │ │ ├── components.json │ │ │ │ │ │ │ │ │ ├── eslint.config.mjs │ │ │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ │ │ └── use-mobile.ts │ │ │ │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ │ ├── next.config.ts │ │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ │ ├── postcss.config.mjs │ │ │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ │ │ └── test-job.yaml │ │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ └── acp_exec_client.py │ │ │ │ │ │ │ └── kubernetes_sandbox_manager.py │ │ │ │ │ │ ├── local/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── agent_client.py │ │ │ │ │ │ │ ├── local_sandbox_manager.py │ │ │ │ │ │ │ ├── process_manager.py │ │ │ │ │ │ │ ├── test_agent_client.py │ │ │ │ │ │ │ └── test_manager.py │ │ │ │ │ │ ├── manager/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── directory_manager.py │ │ │ │ │ │ │ ├── snapshot_manager.py │ │ │ │ │ │ │ └── test_directory_manager.py │ │ │ │ │ │ ├── models.py │ │ │ │ │ │ ├── tasks/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── tasks.py │ │ │ │ │ │ └── util/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── agent_instructions.py │ │ │ │ │ │ ├── build_venv_template.py │ │ │ │ │ │ ├── opencode_config.py │ │ │ │ │ │ └── persona_mapping.py │ │ │ │ │ ├── session/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── manager.py │ │ │ │ │ │ └── prompts.py │ │ │ │ │ └── utils.py │ │ │ │ ├── default_assistant/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── document_set/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── hierarchy/ │ │ │ │ │ ├── api.py │ │ │ │ │ ├── constants.py │ │ │ │ │ └── models.py │ │ │ │ ├── hooks/ │ │ │ │ │ └── __init__.py │ │ │ │ ├── input_prompt/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── mcp/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── notifications/ │ │ │ │ │ └── api.py │ │ │ │ ├── oauth_config/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── password/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── persona/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api.py │ │ │ │ │ ├── constants.py │ │ │ │ │ └── models.py │ │ │ │ ├── projects/ │ │ │ │ │ ├── api.py │ │ │ │ │ ├── models.py │ │ │ │ │ └── projects_file_utils.py │ │ │ │ ├── release_notes/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── constants.py │ │ │ │ │ ├── models.py │ │ │ │ │ └── utils.py │ │ │ │ ├── tool/ │ │ │ │ │ ├── api.py │ │ │ │ │ ├── models.py │ │ │ │ │ └── tool_visibility.py │ │ │ │ ├── user_oauth_token/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── api.py │ │ │ │ └── web_search/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── federated/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── kg/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── manage/ │ │ │ │ ├── __init__.py │ │ │ │ ├── administrative.py │ │ │ │ ├── code_interpreter/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── discord_bot/ │ │ │ │ │ ├── api.py │ │ │ │ │ ├── models.py │ │ │ │ │ └── utils.py │ │ │ │ ├── embedding/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── get_state.py │ │ │ │ ├── image_generation/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── llm/ │ │ │ │ │ ├── api.py │ │ │ │ │ ├── models.py │ │ │ │ │ └── utils.py │ │ │ │ ├── models.py │ │ │ │ ├── opensearch_migration/ │ │ │ │ │ ├── api.py │ │ │ │ │ └── models.py │ │ │ │ ├── search_settings.py │ │ │ │ ├── slack_bot.py │ │ │ │ ├── users.py │ │ │ │ ├── validate_tokens.py │ │ │ │ ├── voice/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api.py │ │ │ │ │ ├── models.py │ │ │ │ │ ├── user_api.py │ │ │ │ │ └── websocket_api.py │ │ │ │ └── web_search/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── metrics/ │ │ │ │ ├── __init__.py │ │ │ │ ├── celery_task_metrics.py │ │ │ │ ├── indexing_pipeline.py │ │ │ │ ├── indexing_pipeline_setup.py │ │ │ │ ├── indexing_task_metrics.py │ │ │ │ ├── metrics_server.py │ │ │ │ ├── opensearch_search.py │ │ │ │ ├── per_tenant.py │ │ │ │ ├── postgres_connection_pool.py │ │ │ │ ├── prometheus_setup.py │ │ │ │ └── slow_requests.py │ │ │ ├── middleware/ │ │ │ │ ├── latency_logging.py │ │ │ │ └── rate_limiting.py │ │ │ ├── models.py │ │ │ ├── onyx_api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ingestion.py │ │ │ │ └── models.py │ │ │ ├── pat/ │ │ │ │ ├── __init__.py │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── query_and_chat/ │ │ │ │ ├── __init__.py │ │ │ │ ├── chat_backend.py │ │ │ │ ├── chat_utils.py │ │ │ │ ├── models.py │ │ │ │ ├── placement.py │ │ │ │ ├── query_backend.py │ │ │ │ ├── session_loading.py │ │ │ │ ├── streaming_models.py │ │ │ │ └── token_limit.py │ │ │ ├── runtime/ │ │ │ │ └── onyx_runtime.py │ │ │ ├── saml.py │ │ │ ├── settings/ │ │ │ │ ├── api.py │ │ │ │ ├── models.py │ │ │ │ └── store.py │ │ │ ├── tenant_usage_limits.py │ │ │ ├── token_rate_limits/ │ │ │ │ ├── api.py │ │ │ │ └── models.py │ │ │ ├── usage_limits.py │ │ │ ├── utils.py │ │ │ └── utils_vector_db.py │ │ ├── setup.py │ │ ├── tools/ │ │ │ ├── built_in_tools.py │ │ │ ├── constants.py │ │ │ ├── fake_tools/ │ │ │ │ ├── __init__.py │ │ │ │ └── research_agent.py │ │ │ ├── interface.py │ │ │ ├── models.py │ │ │ ├── tool_constructor.py │ │ │ ├── tool_implementations/ │ │ │ │ ├── custom/ │ │ │ │ │ ├── base_tool_types.py │ │ │ │ │ ├── custom_tool.py │ │ │ │ │ └── openapi_parsing.py │ │ │ │ ├── file_reader/ │ │ │ │ │ └── file_reader_tool.py │ │ │ │ ├── images/ │ │ │ │ │ ├── image_generation_tool.py │ │ │ │ │ └── models.py │ │ │ │ ├── knowledge_graph/ │ │ │ │ │ └── knowledge_graph_tool.py │ │ │ │ ├── mcp/ │ │ │ │ │ ├── mcp_client.py │ │ │ │ │ └── mcp_tool.py │ │ │ │ ├── memory/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── memory_tool.py │ │ │ │ │ └── models.py │ │ │ │ ├── open_url/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── firecrawl.py │ │ │ │ │ ├── models.py │ │ │ │ │ ├── onyx_web_crawler.py │ │ │ │ │ ├── open_url_tool.py │ │ │ │ │ ├── snippet_matcher.py │ │ │ │ │ ├── url_normalization.py │ │ │ │ │ └── utils.py │ │ │ │ ├── python/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── code_interpreter_client.py │ │ │ │ │ └── python_tool.py │ │ │ │ ├── search/ │ │ │ │ │ ├── constants.py │ │ │ │ │ ├── search_tool.py │ │ │ │ │ └── search_utils.py │ │ │ │ ├── search_like_tool_utils.py │ │ │ │ ├── utils.py │ │ │ │ └── web_search/ │ │ │ │ ├── clients/ │ │ │ │ │ ├── brave_client.py │ │ │ │ │ ├── exa_client.py │ │ │ │ │ ├── google_pse_client.py │ │ │ │ │ ├── searxng_client.py │ │ │ │ │ └── serper_client.py │ │ │ │ ├── models.py │ │ │ │ ├── providers.py │ │ │ │ ├── utils.py │ │ │ │ └── web_search_tool.py │ │ │ ├── tool_runner.py │ │ │ └── utils.py │ │ ├── tracing/ │ │ │ ├── braintrust_tracing_processor.py │ │ │ ├── framework/ │ │ │ │ ├── __init__.py │ │ │ │ ├── _error_tracing.py │ │ │ │ ├── create.py │ │ │ │ ├── processor_interface.py │ │ │ │ ├── provider.py │ │ │ │ ├── scope.py │ │ │ │ ├── setup.py │ │ │ │ ├── span_data.py │ │ │ │ ├── spans.py │ │ │ │ ├── traces.py │ │ │ │ └── util.py │ │ │ ├── langfuse_tracing_processor.py │ │ │ ├── llm_utils.py │ │ │ ├── masking.py │ │ │ └── setup.py │ │ ├── utils/ │ │ │ ├── __init__.py │ │ │ ├── b64.py │ │ │ ├── batching.py │ │ │ ├── callbacks.py │ │ │ ├── encryption.py │ │ │ ├── error_handling.py │ │ │ ├── errors.py │ │ │ ├── file.py │ │ │ ├── gpu_utils.py │ │ │ ├── headers.py │ │ │ ├── jsonriver/ │ │ │ │ ├── __init__.py │ │ │ │ ├── parse.py │ │ │ │ └── tokenize.py │ │ │ ├── logger.py │ │ │ ├── long_term_log.py │ │ │ ├── memory_logger.py │ │ │ ├── middleware.py │ │ │ ├── object_size_check.py │ │ │ ├── postgres_sanitization.py │ │ │ ├── pydantic_util.py │ │ │ ├── retry_wrapper.py │ │ │ ├── search_nlp_models_utils.py │ │ │ ├── sensitive.py │ │ │ ├── sitemap.py │ │ │ ├── special_types.py │ │ │ ├── subclasses.py │ │ │ ├── supervisord_watchdog.py │ │ │ ├── telemetry.py │ │ │ ├── tenant.py │ │ │ ├── text_processing.py │ │ │ ├── threadpool_concurrency.py │ │ │ ├── timing.py │ │ │ ├── url.py │ │ │ ├── variable_functionality.py │ │ │ └── web_content.py │ │ └── voice/ │ │ ├── __init__.py │ │ ├── factory.py │ │ ├── interface.py │ │ └── providers/ │ │ ├── __init__.py │ │ ├── azure.py │ │ ├── elevenlabs.py │ │ └── openai.py │ ├── pyproject.toml │ ├── pytest.ini │ ├── requirements/ │ │ ├── README.md │ │ ├── combined.txt │ │ ├── default.txt │ │ ├── dev.txt │ │ ├── ee.txt │ │ └── model_server.txt │ ├── scripts/ │ │ ├── __init__.py │ │ ├── add_connector_creation_script.py │ │ ├── api_inference_sample.py │ │ ├── celery_purge_queue.py │ │ ├── chat_feedback_dump.py │ │ ├── chat_history_seeding.py │ │ ├── chat_loadtest.py │ │ ├── debugging/ │ │ │ ├── debug_usage_limits.py │ │ │ ├── litellm/ │ │ │ │ ├── README │ │ │ │ ├── call_litellm.py │ │ │ │ ├── directly_hit_azure_api.py │ │ │ │ └── payload.json │ │ │ ├── onyx_db.py │ │ │ ├── onyx_list_tenants.py │ │ │ ├── onyx_redis.py │ │ │ ├── onyx_vespa_schemas.py │ │ │ └── opensearch/ │ │ │ ├── benchmark_retrieval.py │ │ │ ├── constants.py │ │ │ ├── embed_and_save.py │ │ │ ├── embedding_io.py │ │ │ ├── opensearch_debug.py │ │ │ └── query_hierarchy_debug.py │ │ ├── decrypt.py │ │ ├── dev_run_background_jobs.py │ │ ├── docker_memory_tracking.sh │ │ ├── force_delete_connector_by_id.py │ │ ├── get_wikidocs.py │ │ ├── hard_delete_chats.py │ │ ├── lib/ │ │ │ └── logger.py │ │ ├── make_foss_repo.sh │ │ ├── onyx_openapi_schema.py │ │ ├── orphan_doc_cleanup_script.py │ │ ├── query_time_check/ │ │ │ ├── seed_dummy_docs.py │ │ │ └── test_query_times.py │ │ ├── reencrypt_secrets.py │ │ ├── reset_indexes.py │ │ ├── reset_postgres.py │ │ ├── restart_containers.sh │ │ ├── resume_paused_connectors.py │ │ ├── run_industryrag_bench_questions.py │ │ ├── save_load_state.py │ │ ├── setup_craft_templates.sh │ │ ├── sources_selection_analysis.py │ │ ├── supervisord_entrypoint.sh │ │ ├── tenant_cleanup/ │ │ │ ├── QUICK_START_NO_BASTION.md │ │ │ ├── README.md │ │ │ ├── analyze_current_tenants.py │ │ │ ├── check_no_bastion_setup.py │ │ │ ├── cleanup_tenants.py │ │ │ ├── cleanup_utils.py │ │ │ ├── mark_connectors_for_deletion.py │ │ │ ├── no_bastion_analyze_tenants.py │ │ │ ├── no_bastion_cleanup_tenants.py │ │ │ ├── no_bastion_cleanup_utils.py │ │ │ ├── no_bastion_mark_connectors.py │ │ │ └── on_pod_scripts/ │ │ │ ├── check_documents_deleted.py │ │ │ ├── cleanup_tenant_schema.py │ │ │ ├── execute_connector_deletion.py │ │ │ ├── get_tenant_connectors.py │ │ │ ├── get_tenant_index_name.py │ │ │ ├── get_tenant_users.py │ │ │ └── understand_tenants.py │ │ ├── test-openapi-key.py │ │ ├── transform_openapi_for_docs.py │ │ └── upload_files_as_connectors.py │ ├── shared_configs/ │ │ ├── __init__.py │ │ ├── configs.py │ │ ├── contextvars.py │ │ ├── enums.py │ │ ├── model_server_models.py │ │ └── utils.py │ ├── slackbot_images/ │ │ └── README.md │ ├── supervisord.conf │ └── tests/ │ ├── README.md │ ├── __init__.py │ ├── api/ │ │ └── test_api.py │ ├── conftest.py │ ├── daily/ │ │ ├── conftest.py │ │ ├── connectors/ │ │ │ ├── airtable/ │ │ │ │ └── test_airtable_basic.py │ │ │ ├── bitbucket/ │ │ │ │ ├── conftest.py │ │ │ │ ├── test_bitbucket_checkpointed.py │ │ │ │ └── test_bitbucket_slim_connector.py │ │ │ ├── blob/ │ │ │ │ └── test_blob_connector.py │ │ │ ├── coda/ │ │ │ │ ├── README.md │ │ │ │ └── test_coda_connector.py │ │ │ ├── confluence/ │ │ │ │ ├── models.py │ │ │ │ ├── test_confluence_basic.py │ │ │ │ ├── test_confluence_permissions_basic.py │ │ │ │ └── test_confluence_user_email_overrides.py │ │ │ ├── conftest.py │ │ │ ├── discord/ │ │ │ │ └── test_discord_connector.py │ │ │ ├── file/ │ │ │ │ └── test_file_connector.py │ │ │ ├── fireflies/ │ │ │ │ ├── test_fireflies_connector.py │ │ │ │ └── test_fireflies_data.json │ │ │ ├── gitbook/ │ │ │ │ └── test_gitbook_connector.py │ │ │ ├── github/ │ │ │ │ └── test_github_basic.py │ │ │ ├── gitlab/ │ │ │ │ └── test_gitlab_basic.py │ │ │ ├── gmail/ │ │ │ │ ├── conftest.py │ │ │ │ └── test_gmail_connector.py │ │ │ ├── gong/ │ │ │ │ └── test_gong.py │ │ │ ├── google_drive/ │ │ │ │ ├── conftest.py │ │ │ │ ├── consts_and_utils.py │ │ │ │ ├── drive_id_mapping.json │ │ │ │ ├── test_admin_oauth.py │ │ │ │ ├── test_drive_perm_sync.py │ │ │ │ ├── test_link_visibility_filter.py │ │ │ │ ├── test_map_test_ids.py │ │ │ │ ├── test_sections.py │ │ │ │ ├── test_service_acct.py │ │ │ │ └── test_user_1_oauth.py │ │ │ ├── highspot/ │ │ │ │ ├── test_highspot_connector.py │ │ │ │ └── test_highspot_data.json │ │ │ ├── hubspot/ │ │ │ │ └── test_hubspot_connector.py │ │ │ ├── imap/ │ │ │ │ ├── models.py │ │ │ │ └── test_imap_connector.py │ │ │ ├── jira/ │ │ │ │ └── test_jira_basic.py │ │ │ ├── notion/ │ │ │ │ └── test_notion_connector.py │ │ │ ├── outline/ │ │ │ │ └── test_outline_connector.py │ │ │ ├── salesforce/ │ │ │ │ ├── test_salesforce_connector.py │ │ │ │ └── test_salesforce_data.json │ │ │ ├── sharepoint/ │ │ │ │ └── test_sharepoint_connector.py │ │ │ ├── slab/ │ │ │ │ ├── test_slab_connector.py │ │ │ │ └── test_slab_data.json │ │ │ ├── slack/ │ │ │ │ ├── conftest.py │ │ │ │ ├── test_slack_connector.py │ │ │ │ └── test_slack_perm_sync.py │ │ │ ├── teams/ │ │ │ │ ├── models.py │ │ │ │ └── test_teams_connector.py │ │ │ ├── utils.py │ │ │ ├── web/ │ │ │ │ └── test_web_connector.py │ │ │ └── zendesk/ │ │ │ ├── test_zendesk_connector.py │ │ │ └── test_zendesk_data.json │ │ ├── embedding/ │ │ │ └── test_embeddings.py │ │ └── llm/ │ │ └── test_bedrock.py │ ├── external_dependency_unit/ │ │ ├── answer/ │ │ │ ├── conftest.py │ │ │ ├── stream_test_assertions.py │ │ │ ├── stream_test_builder.py │ │ │ ├── stream_test_utils.py │ │ │ ├── test_answer_without_openai.py │ │ │ ├── test_current_datetime_replacement.py │ │ │ ├── test_stream_chat_message.py │ │ │ └── test_stream_chat_message_objects.py │ │ ├── background/ │ │ │ ├── test_periodic_task_claim.py │ │ │ └── test_startup_recovery.py │ │ ├── cache/ │ │ │ ├── conftest.py │ │ │ ├── test_cache_backend_parity.py │ │ │ ├── test_kv_store_cache_layer.py │ │ │ └── test_postgres_cache_backend.py │ │ ├── celery/ │ │ │ ├── test_docfetching_priority.py │ │ │ ├── test_docprocessing_priority.py │ │ │ ├── test_persona_file_sync.py │ │ │ ├── test_pruning_hierarchy_nodes.py │ │ │ ├── test_user_file_delete_queue.py │ │ │ ├── test_user_file_indexing_adapter.py │ │ │ └── test_user_file_processing_queue.py │ │ ├── chat/ │ │ │ └── test_user_reminder_message_type.py │ │ ├── conftest.py │ │ ├── connectors/ │ │ │ ├── confluence/ │ │ │ │ ├── conftest.py │ │ │ │ └── test_confluence_group_sync.py │ │ │ ├── google_drive/ │ │ │ │ └── test_google_drive_group_sync.py │ │ │ └── jira/ │ │ │ ├── conftest.py │ │ │ ├── test_jira_doc_sync.py │ │ │ └── test_jira_group_sync.py │ │ ├── constants.py │ │ ├── craft/ │ │ │ ├── conftest.py │ │ │ ├── test_build_packet_storage.py │ │ │ ├── test_file_upload.py │ │ │ ├── test_kubernetes_sandbox.py │ │ │ └── test_persistent_document_writer.py │ │ ├── db/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── test_chat_session_eager_load.py │ │ │ ├── test_credential_sensitive_value.py │ │ │ ├── test_rotate_encryption_key.py │ │ │ ├── test_tag_race_condition.py │ │ │ └── test_user_account_type.py │ │ ├── discord_bot/ │ │ │ ├── conftest.py │ │ │ └── test_discord_events.py │ │ ├── document_index/ │ │ │ ├── conftest.py │ │ │ ├── test_document_index.py │ │ │ └── test_document_index_old.py │ │ ├── feature_flags/ │ │ │ ├── __init__.py │ │ │ └── test_feature_flag_provider_factory.py │ │ ├── file_store/ │ │ │ ├── test_file_store_non_mocked.py │ │ │ └── test_postgres_file_store_non_mocked.py │ │ ├── full_setup.py │ │ ├── hierarchy/ │ │ │ ├── __init__.py │ │ │ └── test_hierarchy_access_filter.py │ │ ├── llm/ │ │ │ ├── test_llm_provider.py │ │ │ ├── test_llm_provider_api_base.py │ │ │ ├── test_llm_provider_auto_mode.py │ │ │ ├── test_llm_provider_called.py │ │ │ ├── test_llm_provider_default_model_protection.py │ │ │ └── test_prompt_caching.py │ │ ├── mock_content_provider.py │ │ ├── mock_image_provider.py │ │ ├── mock_llm.py │ │ ├── mock_search_pipeline.py │ │ ├── mock_search_provider.py │ │ ├── opensearch/ │ │ │ ├── test_assistant_knowledge_filter.py │ │ │ └── test_opensearch_client.py │ │ ├── opensearch_migration/ │ │ │ └── test_opensearch_migration_tasks.py │ │ ├── permission_sync/ │ │ │ ├── test_doc_permission_sync_attempt.py │ │ │ └── test_external_group_permission_sync_attempt.py │ │ ├── search_settings/ │ │ │ └── test_search_settings.py │ │ ├── slack_bot/ │ │ │ ├── __init__.py │ │ │ ├── test_slack_bot_crud.py │ │ │ └── test_slack_bot_federated_search.py │ │ ├── tools/ │ │ │ ├── data/ │ │ │ │ └── financial-sample.xlsx │ │ │ ├── test_image_generation_tool.py │ │ │ ├── test_mcp_passthrough_oauth.py │ │ │ ├── test_memory_tool_integration.py │ │ │ ├── test_oauth_config_crud.py │ │ │ ├── test_oauth_token_manager.py │ │ │ ├── test_oauth_tool_integration.py │ │ │ ├── test_python_tool.py │ │ │ └── test_python_tool_server_enabled.py │ │ └── tracing/ │ │ ├── __init__.py │ │ └── test_llm_span_recording.py │ ├── integration/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── __init__.py │ │ ├── common_utils/ │ │ │ ├── chat.py │ │ │ ├── config.py │ │ │ ├── constants.py │ │ │ ├── document_acl.py │ │ │ ├── managers/ │ │ │ │ ├── api_key.py │ │ │ │ ├── cc_pair.py │ │ │ │ ├── chat.py │ │ │ │ ├── connector.py │ │ │ │ ├── credential.py │ │ │ │ ├── discord_bot.py │ │ │ │ ├── document.py │ │ │ │ ├── document_search.py │ │ │ │ ├── document_set.py │ │ │ │ ├── file.py │ │ │ │ ├── image_generation.py │ │ │ │ ├── index_attempt.py │ │ │ │ ├── llm_provider.py │ │ │ │ ├── pat.py │ │ │ │ ├── persona.py │ │ │ │ ├── project.py │ │ │ │ ├── query_history.py │ │ │ │ ├── scim_client.py │ │ │ │ ├── scim_token.py │ │ │ │ ├── settings.py │ │ │ │ ├── tenant.py │ │ │ │ ├── tool.py │ │ │ │ ├── user.py │ │ │ │ └── user_group.py │ │ │ ├── reset.py │ │ │ ├── test_document_utils.py │ │ │ ├── test_file_utils.py │ │ │ ├── test_files/ │ │ │ │ └── three_images.docx │ │ │ ├── test_models.py │ │ │ ├── timeout.py │ │ │ └── vespa.py │ │ ├── conftest.py │ │ ├── connector_job_tests/ │ │ │ ├── github/ │ │ │ │ ├── conftest.py │ │ │ │ ├── test_github_permission_sync.py │ │ │ │ └── utils.py │ │ │ ├── google/ │ │ │ │ ├── google_drive_api_utils.py │ │ │ │ └── test_google_drive_permission_sync.py │ │ │ ├── jira/ │ │ │ │ ├── conftest.py │ │ │ │ └── test_jira_permission_sync_full.py │ │ │ ├── sharepoint/ │ │ │ │ ├── conftest.py │ │ │ │ └── test_sharepoint_permissions.py │ │ │ └── slack/ │ │ │ ├── conftest.py │ │ │ ├── slack_api_utils.py │ │ │ ├── test_permission_sync.py │ │ │ └── test_prune.py │ │ ├── mock_services/ │ │ │ ├── docker-compose.mock-it-services.yml │ │ │ ├── mcp_test_server/ │ │ │ │ ├── run_mcp_server_api_key.py │ │ │ │ ├── run_mcp_server_google_oauth.py │ │ │ │ ├── run_mcp_server_no_auth.py │ │ │ │ ├── run_mcp_server_oauth.py │ │ │ │ └── run_mcp_server_per_user_key.py │ │ │ └── mock_connector_server/ │ │ │ ├── Dockerfile │ │ │ └── main.py │ │ ├── multitenant_tests/ │ │ │ ├── discord_bot/ │ │ │ │ └── test_discord_bot_multitenant.py │ │ │ ├── invitation/ │ │ │ │ └── test_user_invitation.py │ │ │ ├── migrations/ │ │ │ │ └── test_run_multitenant_migrations.py │ │ │ ├── syncing/ │ │ │ │ └── test_search_permissions.py │ │ │ ├── tenants/ │ │ │ │ ├── test_tenant_creation.py │ │ │ │ └── test_tenant_provisioning_rollback.py │ │ │ └── test_get_schemas_needing_migration.py │ │ └── tests/ │ │ ├── anonymous_user/ │ │ │ └── test_anonymous_user.py │ │ ├── api_key/ │ │ │ └── test_api_key.py │ │ ├── auth/ │ │ │ └── test_saml_user_conversion.py │ │ ├── chat/ │ │ │ ├── test_chat_deletion.py │ │ │ └── test_chat_session_access.py │ │ ├── chat_retention/ │ │ │ └── test_chat_retention.py │ │ ├── code_interpreter/ │ │ │ ├── conftest.py │ │ │ └── test_code_interpreter_api.py │ │ ├── connector/ │ │ │ ├── test_connector_creation.py │ │ │ ├── test_connector_deletion.py │ │ │ └── test_last_indexed_time.py │ │ ├── discord_bot/ │ │ │ ├── test_discord_bot_api.py │ │ │ └── test_discord_bot_db.py │ │ ├── document_set/ │ │ │ └── test_syncing.py │ │ ├── image_generation/ │ │ │ ├── test_image_generation_config.py │ │ │ └── test_image_generation_tool_visibility.py │ │ ├── image_indexing/ │ │ │ └── test_indexing_images.py │ │ ├── index_attempt/ │ │ │ └── test_index_attempt_pagination.py │ │ ├── indexing/ │ │ │ ├── conftest.py │ │ │ ├── file_connector/ │ │ │ │ ├── test_file_connector_zip_metadata.py │ │ │ │ └── test_files/ │ │ │ │ ├── .onyx_metadata.json │ │ │ │ ├── sample1.txt │ │ │ │ └── sample2.txt │ │ │ ├── test_checkpointing.py │ │ │ ├── test_initial_permission_sync.py │ │ │ ├── test_polling.py │ │ │ └── test_repeated_error_state.py │ │ ├── ingestion/ │ │ │ └── test_ingestion_api.py │ │ ├── kg/ │ │ │ └── test_kg_api.py │ │ ├── llm_auto_update/ │ │ │ └── test_auto_llm_update.py │ │ ├── llm_provider/ │ │ │ ├── test_llm_provider.py │ │ │ ├── test_llm_provider_access_control.py │ │ │ └── test_llm_provider_persona_access.py │ │ ├── llm_workflows/ │ │ │ ├── test_mock_llm_tool_calls.py │ │ │ ├── test_nightly_provider_chat_workflow.py │ │ │ └── test_tool_policy_enforcement.py │ │ ├── mcp/ │ │ │ ├── test_mcp_client_no_auth_flow.py │ │ │ ├── test_mcp_server_auth.py │ │ │ └── test_mcp_server_search.py │ │ ├── migrations/ │ │ │ ├── conftest.py │ │ │ ├── test_alembic_main.py │ │ │ ├── test_alembic_tenants.py │ │ │ ├── test_assistant_consolidation_migration.py │ │ │ ├── test_migrations.py │ │ │ └── test_tool_seeding.py │ │ ├── no_vectordb/ │ │ │ ├── conftest.py │ │ │ ├── test_no_vectordb_chat.py │ │ │ ├── test_no_vectordb_endpoints.py │ │ │ └── test_no_vectordb_file_lifecycle.py │ │ ├── opensearch_migration/ │ │ │ └── test_opensearch_migration_api.py │ │ ├── pat/ │ │ │ └── test_pat_api.py │ │ ├── permissions/ │ │ │ ├── test_auth_permission_propagation.py │ │ │ ├── test_cc_pair_permissions.py │ │ │ ├── test_connector_permissions.py │ │ │ ├── test_credential_permissions.py │ │ │ ├── test_doc_set_permissions.py │ │ │ ├── test_file_connector_permissions.py │ │ │ ├── test_persona_permissions.py │ │ │ ├── test_user_file_permissions.py │ │ │ ├── test_user_role_permissions.py │ │ │ └── test_whole_curator_flow.py │ │ ├── personalization/ │ │ │ └── test_personalization_flow.py │ │ ├── personas/ │ │ │ ├── test_persona_categories.py │ │ │ ├── test_persona_creation.py │ │ │ ├── test_persona_file_context.py │ │ │ ├── test_persona_label_updates.py │ │ │ ├── test_persona_pagination.py │ │ │ └── test_unified_assistant.py │ │ ├── projects/ │ │ │ └── test_projects.py │ │ ├── pruning/ │ │ │ ├── test_pruning.py │ │ │ └── website/ │ │ │ ├── about.html │ │ │ ├── contact.html │ │ │ ├── courses.html │ │ │ ├── css/ │ │ │ │ ├── animate.css │ │ │ │ ├── custom-fonts.css │ │ │ │ ├── fancybox/ │ │ │ │ │ └── jquery.fancybox.css │ │ │ │ ├── font-awesome.css │ │ │ │ └── style.css │ │ │ ├── fonts/ │ │ │ │ └── fontawesome.otf │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ ├── animate.js │ │ │ │ ├── custom.js │ │ │ │ ├── flexslider/ │ │ │ │ │ ├── jquery.flexslider.js │ │ │ │ │ └── setting.js │ │ │ │ ├── google-code-prettify/ │ │ │ │ │ ├── prettify.css │ │ │ │ │ └── prettify.js │ │ │ │ ├── jquery.easing.1.3.js │ │ │ │ ├── jquery.fancybox-media.js │ │ │ │ ├── jquery.fancybox.pack.js │ │ │ │ ├── jquery.flexslider.js │ │ │ │ ├── jquery.js │ │ │ │ ├── portfolio/ │ │ │ │ │ ├── jquery.quicksand.js │ │ │ │ │ └── setting.js │ │ │ │ ├── quicksand/ │ │ │ │ │ ├── jquery.quicksand.js │ │ │ │ │ └── setting.js │ │ │ │ └── validate.js │ │ │ ├── portfolio.html │ │ │ ├── pricing.html │ │ │ └── readme.txt │ │ ├── query_history/ │ │ │ ├── test_query_history.py │ │ │ ├── test_query_history_pagination.py │ │ │ ├── test_usage_reports.py │ │ │ └── utils.py │ │ ├── reporting/ │ │ │ └── test_usage_export_api.py │ │ ├── scim/ │ │ │ ├── test_scim_groups.py │ │ │ ├── test_scim_tokens.py │ │ │ └── test_scim_users.py │ │ ├── search_settings/ │ │ │ └── test_search_settings.py │ │ ├── streaming_endpoints/ │ │ │ ├── test_chat_file_attachment.py │ │ │ └── test_chat_stream.py │ │ ├── tags/ │ │ │ └── test_tags.py │ │ ├── tools/ │ │ │ ├── test_force_tool_use.py │ │ │ └── test_image_generation_streaming.py │ │ ├── usergroup/ │ │ │ ├── test_add_users_to_group.py │ │ │ ├── test_group_membership_updates_user_permissions.py │ │ │ ├── test_new_group_gets_basic_permission.py │ │ │ ├── test_user_group_deletion.py │ │ │ └── test_usergroup_syncing.py │ │ ├── users/ │ │ │ ├── test_default_group_assignment.py │ │ │ ├── test_password_signup_upgrade.py │ │ │ ├── test_reactivation_groups.py │ │ │ ├── test_seat_limit.py │ │ │ ├── test_slack_user_deactivation.py │ │ │ └── test_user_pagination.py │ │ └── web_search/ │ │ └── test_web_search_api.py │ ├── load_env_vars.py │ ├── regression/ │ │ ├── answer_quality/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── api_utils.py │ │ │ ├── cli_utils.py │ │ │ ├── file_uploader.py │ │ │ ├── launch_eval_env.py │ │ │ └── search_test_config.yaml.template │ │ └── search_quality/ │ │ ├── README.md │ │ ├── models.py │ │ ├── run_search_eval.py │ │ ├── test_queries.json.template │ │ └── utils.py │ └── unit/ │ ├── __init__.py │ ├── build/ │ │ └── test_rewrite_asset_paths.py │ ├── ee/ │ │ ├── conftest.py │ │ └── onyx/ │ │ ├── db/ │ │ │ ├── test_license.py │ │ │ └── test_user_group_rename.py │ │ ├── external_permissions/ │ │ │ ├── salesforce/ │ │ │ │ └── test_postprocessing.py │ │ │ └── sharepoint/ │ │ │ └── test_permission_utils.py │ │ ├── hooks/ │ │ │ ├── __init__.py │ │ │ └── test_executor.py │ │ ├── server/ │ │ │ ├── __init__.py │ │ │ ├── billing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── conftest.py │ │ │ │ ├── test_billing_api.py │ │ │ │ ├── test_billing_service.py │ │ │ │ └── test_proxy.py │ │ │ ├── features/ │ │ │ │ ├── __init__.py │ │ │ │ └── hooks/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_api.py │ │ │ ├── license/ │ │ │ │ └── test_api.py │ │ │ ├── middleware/ │ │ │ │ └── test_license_enforcement.py │ │ │ ├── settings/ │ │ │ │ └── test_license_enforcement_settings.py │ │ │ └── tenants/ │ │ │ ├── test_billing_api.py │ │ │ ├── test_product_gating.py │ │ │ ├── test_proxy.py │ │ │ └── test_schema_management.py │ │ └── utils/ │ │ ├── test_encryption.py │ │ └── test_license_utils.py │ ├── federated_connector/ │ │ └── slack/ │ │ └── test_slack_federated_connnector.py │ ├── file_store/ │ │ ├── test_file_store.py │ │ └── test_postgres_file_store.py │ ├── model_server/ │ │ └── test_embedding.py │ ├── onyx/ │ │ ├── __init__.py │ │ ├── access/ │ │ │ └── test_user_file_access.py │ │ ├── auth/ │ │ │ ├── conftest.py │ │ │ ├── test_disposable_email_validator.py │ │ │ ├── test_email.py │ │ │ ├── test_is_same_origin.py │ │ │ ├── test_jwt_provisioning.py │ │ │ ├── test_oauth_refresher.py │ │ │ ├── test_oidc_pkce.py │ │ │ ├── test_permissions.py │ │ │ ├── test_single_tenant_jwt_strategy.py │ │ │ ├── test_user_create_schema.py │ │ │ ├── test_user_default_pins.py │ │ │ ├── test_user_registration.py │ │ │ ├── test_verify_auth_setting.py │ │ │ ├── test_verify_email_domain.py │ │ │ └── test_verify_email_invite.py │ │ ├── background/ │ │ │ └── celery/ │ │ │ ├── tasks/ │ │ │ │ ├── tenant_provisioning/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_check_available_tenants.py │ │ │ │ ├── test_hierarchyfetching_queue.py │ │ │ │ ├── test_user_file_impl_redis_locking.py │ │ │ │ ├── test_user_file_processing_no_vectordb.py │ │ │ │ └── test_user_file_project_sync_queue.py │ │ │ └── test_celery_redis.py │ │ ├── chat/ │ │ │ ├── test_argument_delta_streaming.py │ │ │ ├── test_chat_utils.py │ │ │ ├── test_citation_processor.py │ │ │ ├── test_citation_utils.py │ │ │ ├── test_compression.py │ │ │ ├── test_context_files.py │ │ │ ├── test_emitter.py │ │ │ ├── test_llm_loop.py │ │ │ ├── test_llm_step.py │ │ │ ├── test_multi_model_streaming.py │ │ │ ├── test_multi_model_types.py │ │ │ ├── test_process_message.py │ │ │ ├── test_process_message_mock_llm.py │ │ │ ├── test_save_chat.py │ │ │ └── test_stop_signal_checker.py │ │ ├── connectors/ │ │ │ ├── airtable/ │ │ │ │ └── test_airtable_index_all.py │ │ │ ├── asana/ │ │ │ │ └── test_asana_connector.py │ │ │ ├── canvas/ │ │ │ │ └── test_canvas_connector.py │ │ │ ├── confluence/ │ │ │ │ ├── test_confluence_checkpointing.py │ │ │ │ ├── test_onyx_confluence.py │ │ │ │ └── test_rate_limit_handler.py │ │ │ ├── cross_connector_utils/ │ │ │ │ ├── test_html_utils.py │ │ │ │ ├── test_rate_limit.py │ │ │ │ └── test_table.html │ │ │ ├── discord/ │ │ │ │ └── test_discord_validation.py │ │ │ ├── github/ │ │ │ │ └── test_github_checkpointing.py │ │ │ ├── gmail/ │ │ │ │ ├── test_connector.py │ │ │ │ └── thread.json │ │ │ ├── google_utils/ │ │ │ │ └── test_rate_limit_detection.py │ │ │ ├── jira/ │ │ │ │ ├── conftest.py │ │ │ │ ├── test_jira_bulk_fetch.py │ │ │ │ ├── test_jira_checkpointing.py │ │ │ │ ├── test_jira_error_handling.py │ │ │ │ ├── test_jira_large_ticket_handling.py │ │ │ │ └── test_jira_permission_sync.py │ │ │ ├── mediawiki/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_mediawiki_family.py │ │ │ │ └── test_wiki.py │ │ │ ├── notion/ │ │ │ │ └── test_notion_datasource.py │ │ │ ├── salesforce/ │ │ │ │ ├── test_salesforce_custom_config.py │ │ │ │ ├── test_salesforce_sqlite.py │ │ │ │ └── test_yield_doc_batches.py │ │ │ ├── sharepoint/ │ │ │ │ ├── test_delta_checkpointing.py │ │ │ │ ├── test_denylist.py │ │ │ │ ├── test_drive_matching.py │ │ │ │ ├── test_fetch_site_pages.py │ │ │ │ ├── test_hierarchy_helpers.py │ │ │ │ ├── test_rest_client_context_caching.py │ │ │ │ └── test_url_parsing.py │ │ │ ├── slab/ │ │ │ │ └── test_slab_validation.py │ │ │ ├── slack/ │ │ │ │ └── test_message_filtering.py │ │ │ ├── teams/ │ │ │ │ └── test_collect_teams.py │ │ │ ├── test_connector_factory.py │ │ │ ├── test_document_metadata_coercion.py │ │ │ ├── test_microsoft_graph_env.py │ │ │ ├── utils.py │ │ │ └── zendesk/ │ │ │ ├── test_zendesk_checkpointing.py │ │ │ └── test_zendesk_rate_limit.py │ │ ├── context/ │ │ │ └── search/ │ │ │ └── federated/ │ │ │ ├── test_slack_query_construction.py │ │ │ └── test_slack_thread_context.py │ │ ├── db/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── test_assign_default_groups.py │ │ │ ├── test_chat_sessions.py │ │ │ ├── test_dal.py │ │ │ ├── test_delete_user.py │ │ │ ├── test_llm_sync.py │ │ │ ├── test_persona_display_priority.py │ │ │ ├── test_projects_upload_task_expiry.py │ │ │ ├── test_scim_dal.py │ │ │ ├── test_tools.py │ │ │ ├── test_usage.py │ │ │ └── test_voice.py │ │ ├── document_index/ │ │ │ ├── opensearch/ │ │ │ │ ├── test_get_doc_chunk_id.py │ │ │ │ └── test_opensearch_batch_flush.py │ │ │ ├── test_disabled_document_index.py │ │ │ └── vespa/ │ │ │ ├── shared_utils/ │ │ │ │ └── test_utils.py │ │ │ └── test_vespa_batch_flush.py │ │ ├── error_handling/ │ │ │ ├── __init__.py │ │ │ └── test_exceptions.py │ │ ├── federated_connectors/ │ │ │ ├── test_federated_connector_factory.py │ │ │ └── test_oauth_utils.py │ │ ├── file_processing/ │ │ │ ├── __init__.py │ │ │ ├── test_image_summarization_errors.py │ │ │ ├── test_image_summarization_litellm_errors.py │ │ │ ├── test_pdf.py │ │ │ └── test_xlsx_to_text.py │ │ ├── hooks/ │ │ │ ├── __init__.py │ │ │ ├── test_api_dependencies.py │ │ │ ├── test_base_spec.py │ │ │ ├── test_models.py │ │ │ ├── test_query_processing_spec.py │ │ │ └── test_registry.py │ │ ├── image_gen/ │ │ │ └── test_provider_building.py │ │ ├── indexing/ │ │ │ ├── conftest.py │ │ │ ├── test_censoring.py │ │ │ ├── test_chunker.py │ │ │ ├── test_embed_chunks_in_batches.py │ │ │ ├── test_embedder.py │ │ │ ├── test_indexing_pipeline.py │ │ │ ├── test_personas_in_chunks.py │ │ │ └── test_vespa.py │ │ ├── lazy_handling/ │ │ │ └── __init__.py │ │ ├── llm/ │ │ │ ├── conftest.py │ │ │ ├── test_bedrock_token_limit.py │ │ │ ├── test_factory.py │ │ │ ├── test_formatting_reenabled.py │ │ │ ├── test_litellm_monkey_patches.py │ │ │ ├── test_llm_provider_options.py │ │ │ ├── test_model_is_reasoning.py │ │ │ ├── test_model_map.py │ │ │ ├── test_model_name_parser.py │ │ │ ├── test_model_response.py │ │ │ ├── test_multi_llm.py │ │ │ ├── test_reasoning_effort_mapping.py │ │ │ ├── test_request_context.py │ │ │ ├── test_true_openai_model.py │ │ │ └── test_vision_model_selection_logging.py │ │ ├── natural_language_processing/ │ │ │ └── test_search_nlp_models.py │ │ ├── onyxbot/ │ │ │ ├── discord/ │ │ │ │ ├── conftest.py │ │ │ │ ├── test_api_client.py │ │ │ │ ├── test_cache_manager.py │ │ │ │ ├── test_context_builders.py │ │ │ │ ├── test_discord_utils.py │ │ │ │ ├── test_message_utils.py │ │ │ │ └── test_should_respond.py │ │ │ ├── test_handle_regular_answer.py │ │ │ ├── test_slack_blocks.py │ │ │ ├── test_slack_channel_config.py │ │ │ ├── test_slack_formatting.py │ │ │ └── test_slack_gating.py │ │ ├── prompts/ │ │ │ └── test_prompt_utils.py │ │ ├── redis_ca.pem │ │ ├── server/ │ │ │ ├── __init__.py │ │ │ ├── features/ │ │ │ │ ├── __init__.py │ │ │ │ ├── hierarchy/ │ │ │ │ │ └── test_user_access_info.py │ │ │ │ └── hooks/ │ │ │ │ └── __init__.py │ │ │ ├── manage/ │ │ │ │ ├── embedding/ │ │ │ │ │ └── test_embedding_api.py │ │ │ │ ├── llm/ │ │ │ │ │ ├── test_fetch_models_api.py │ │ │ │ │ └── test_llm_provider_utils.py │ │ │ │ ├── test_bulk_invite_limit.py │ │ │ │ └── voice/ │ │ │ │ └── test_voice_api_validation.py │ │ │ ├── scim/ │ │ │ │ ├── __init__.py │ │ │ │ ├── conftest.py │ │ │ │ ├── test_admin.py │ │ │ │ ├── test_auth.py │ │ │ │ ├── test_entra.py │ │ │ │ ├── test_filtering.py │ │ │ │ ├── test_group_endpoints.py │ │ │ │ ├── test_patch.py │ │ │ │ ├── test_providers.py │ │ │ │ └── test_user_endpoints.py │ │ │ ├── test_full_user_snapshot.py │ │ │ ├── test_pool_metrics.py │ │ │ ├── test_projects_file_utils.py │ │ │ ├── test_prometheus_instrumentation.py │ │ │ ├── test_settings_store.py │ │ │ └── test_upload_files.py │ │ ├── test_redis.py │ │ ├── test_startup_validation.py │ │ ├── tools/ │ │ │ ├── __init__.py │ │ │ ├── custom/ │ │ │ │ └── test_custom_tools.py │ │ │ ├── test_construct_tools_no_vectordb.py │ │ │ ├── test_file_reader_tool.py │ │ │ ├── test_no_vectordb.py │ │ │ ├── test_python_tool_availability.py │ │ │ ├── test_search_utils.py │ │ │ ├── test_tool_runner.py │ │ │ ├── test_tool_runner_chat_files.py │ │ │ ├── test_tool_utils.py │ │ │ └── tool_implementations/ │ │ │ ├── open_url/ │ │ │ │ ├── data/ │ │ │ │ │ └── test_snippet_finding_data.json │ │ │ │ ├── test_onyx_web_crawler.py │ │ │ │ ├── test_snippet_matcher.py │ │ │ │ └── test_url_normalization.py │ │ │ ├── python/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_code_interpreter_client.py │ │ │ │ └── test_python_tool_upload_cache.py │ │ │ └── websearch/ │ │ │ ├── data/ │ │ │ │ └── tartan.txt │ │ │ ├── test_brave_client.py │ │ │ ├── test_web_search_providers.py │ │ │ ├── test_web_search_tool_run.py │ │ │ └── test_websearch_utils.py │ │ ├── tracing/ │ │ │ ├── __init__.py │ │ │ └── test_tracing_setup.py │ │ ├── utils/ │ │ │ ├── test_gpu_utils.py │ │ │ ├── test_json_river.py │ │ │ ├── test_postgres_sanitization.py │ │ │ ├── test_sensitive.py │ │ │ ├── test_sensitive_typing.py │ │ │ ├── test_telemetry.py │ │ │ ├── test_threadpool_concurrency.py │ │ │ ├── test_threadpool_contextvars.py │ │ │ ├── test_url_ssrf.py │ │ │ ├── test_vespa_query.py │ │ │ └── test_vespa_tasks.py │ │ └── voice/ │ │ └── providers/ │ │ ├── test_azure_provider.py │ │ ├── test_azure_ssml.py │ │ ├── test_elevenlabs_provider.py │ │ └── test_openai_provider.py │ ├── scripts/ │ │ └── __init__.py │ ├── server/ │ │ └── metrics/ │ │ ├── test_celery_task_metrics.py │ │ ├── test_indexing_pipeline_collectors.py │ │ ├── test_indexing_pipeline_setup.py │ │ ├── test_indexing_task_metrics.py │ │ ├── test_metrics_server.py │ │ ├── test_opensearch_search_metrics.py │ │ └── test_worker_health.py │ └── tools/ │ ├── __init__.py │ └── test_memory_tool_packets.py ├── contributor_ip_assignment/ │ └── EE_Contributor_IP_Assignment_Agreement.md ├── ct.yaml ├── cubic.yaml ├── deployment/ │ ├── .gitignore │ ├── README.md │ ├── aws_ecs_fargate/ │ │ └── cloudformation/ │ │ ├── README.md │ │ ├── deploy.sh │ │ ├── onyx_acm_template.yaml │ │ ├── onyx_cluster_template.yaml │ │ ├── onyx_config.jsonl │ │ ├── onyx_efs_template.yaml │ │ ├── services/ │ │ │ ├── onyx_backend_api_server_service_template.yaml │ │ │ ├── onyx_backend_background_server_service_template.yaml │ │ │ ├── onyx_model_server_indexing_service_template.yaml │ │ │ ├── onyx_model_server_inference_service_template.yaml │ │ │ ├── onyx_nginx_service_template.yaml │ │ │ ├── onyx_postgres_service_template.yaml │ │ │ ├── onyx_redis_service_template.yaml │ │ │ ├── onyx_vespaengine_service_template.yaml │ │ │ └── onyx_web_server_service_template.yaml │ │ └── uninstall.sh │ ├── data/ │ │ └── nginx/ │ │ ├── app.conf.template │ │ ├── app.conf.template.no-letsencrypt │ │ ├── app.conf.template.prod │ │ ├── mcp.conf.inc.template │ │ ├── mcp_upstream.conf.inc.template │ │ └── run-nginx.sh │ ├── docker_compose/ │ │ ├── README.md │ │ ├── docker-compose.dev.yml │ │ ├── docker-compose.mcp-api-key-test.yml │ │ ├── docker-compose.mcp-oauth-test.yml │ │ ├── docker-compose.multitenant-dev.yml │ │ ├── docker-compose.onyx-lite.yml │ │ ├── docker-compose.prod-cloud.yml │ │ ├── docker-compose.prod-no-letsencrypt.yml │ │ ├── docker-compose.prod.yml │ │ ├── docker-compose.resources.yml │ │ ├── docker-compose.search-testing.yml │ │ ├── docker-compose.yml │ │ ├── env.nginx.template │ │ ├── env.prod.template │ │ ├── env.template │ │ ├── init-letsencrypt.sh │ │ ├── install.ps1 │ │ └── install.sh │ ├── helm/ │ │ ├── README.md │ │ └── charts/ │ │ └── onyx/ │ │ ├── .gitignore │ │ ├── .helmignore │ │ ├── Chart.yaml │ │ ├── ci/ │ │ │ └── ct-values.yaml │ │ ├── dashboards/ │ │ │ └── indexing-pipeline.json │ │ ├── templates/ │ │ │ ├── _helpers.tpl │ │ │ ├── api-deployment.yaml │ │ │ ├── api-hpa.yaml │ │ │ ├── api-scaledobject.yaml │ │ │ ├── api-service.yaml │ │ │ ├── auth-secrets.yaml │ │ │ ├── celery-beat.yaml │ │ │ ├── celery-worker-docfetching-hpa.yaml │ │ │ ├── celery-worker-docfetching-metrics-service.yaml │ │ │ ├── celery-worker-docfetching-scaledobject.yaml │ │ │ ├── celery-worker-docfetching.yaml │ │ │ ├── celery-worker-docprocessing-hpa.yaml │ │ │ ├── celery-worker-docprocessing-metrics-service.yaml │ │ │ ├── celery-worker-docprocessing-scaledobject.yaml │ │ │ ├── celery-worker-docprocessing.yaml │ │ │ ├── celery-worker-heavy-hpa.yaml │ │ │ ├── celery-worker-heavy-scaledobject.yaml │ │ │ ├── celery-worker-heavy.yaml │ │ │ ├── celery-worker-light-hpa.yaml │ │ │ ├── celery-worker-light-scaledobject.yaml │ │ │ ├── celery-worker-light.yaml │ │ │ ├── celery-worker-monitoring-hpa.yaml │ │ │ ├── celery-worker-monitoring-metrics-service.yaml │ │ │ ├── celery-worker-monitoring-scaledobject.yaml │ │ │ ├── celery-worker-monitoring.yaml │ │ │ ├── celery-worker-primary-hpa.yaml │ │ │ ├── celery-worker-primary-scaledobject.yaml │ │ │ ├── celery-worker-primary.yaml │ │ │ ├── celery-worker-servicemonitors.yaml │ │ │ ├── celery-worker-user-file-processing-hpa.yaml │ │ │ ├── celery-worker-user-file-processing-scaledobject.yaml │ │ │ ├── celery-worker-user-file-processing.yaml │ │ │ ├── configmap.yaml │ │ │ ├── discordbot.yaml │ │ │ ├── grafana-dashboards.yaml │ │ │ ├── indexing-model-deployment.yaml │ │ │ ├── indexing-model-service.yaml │ │ │ ├── inference-model-deployment.yaml │ │ │ ├── inference-model-service.yaml │ │ │ ├── ingress-api.yaml │ │ │ ├── ingress-mcp.yaml │ │ │ ├── ingress-webserver.yaml │ │ │ ├── lets-encrypt.yaml │ │ │ ├── mcp-server-deployment.yaml │ │ │ ├── mcp-server-service.yaml │ │ │ ├── nginx-conf.yaml │ │ │ ├── serviceaccount.yaml │ │ │ ├── slackbot.yaml │ │ │ ├── tests/ │ │ │ │ └── test-connection.yaml │ │ │ ├── tooling-pginto-configmap.yaml │ │ │ ├── webserver-deployment.yaml │ │ │ ├── webserver-hpa.yaml │ │ │ ├── webserver-scaledobject.yaml │ │ │ └── webserver-service.yaml │ │ ├── templates_disabled/ │ │ │ ├── background-deployment.yaml │ │ │ ├── background-hpa.yaml │ │ │ └── onyx-secret.yaml │ │ ├── values-lite.yaml │ │ └── values.yaml │ └── terraform/ │ └── modules/ │ └── aws/ │ ├── README.md │ ├── eks/ │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── onyx/ │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── opensearch/ │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── postgres/ │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── redis/ │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── s3/ │ │ ├── main.tf │ │ └── variables.tf │ ├── vpc/ │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ └── waf/ │ ├── main.tf │ ├── outputs.tf │ └── variables.tf ├── desktop/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── scripts/ │ │ └── generate-icons.sh │ ├── src/ │ │ ├── index.html │ │ └── titlebar.js │ └── src-tauri/ │ ├── Cargo.toml │ ├── build.rs │ ├── gen/ │ │ └── schemas/ │ │ ├── acl-manifests.json │ │ ├── capabilities.json │ │ ├── desktop-schema.json │ │ └── macOS-schema.json │ ├── icons/ │ │ ├── android/ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ └── ic_launcher.xml │ │ │ └── values/ │ │ │ └── ic_launcher_background.xml │ │ └── icon.icns │ ├── src/ │ │ └── main.rs │ └── tauri.conf.json ├── docker-bake.hcl ├── docs/ │ └── METRICS.md ├── examples/ │ ├── assistants-api/ │ │ └── topics_analyzer.py │ └── widget/ │ ├── .eslintrc.json │ ├── .gitignore │ ├── README.md │ ├── next.config.mjs │ ├── package.json │ ├── postcss.config.mjs │ ├── src/ │ │ └── app/ │ │ ├── globals.css │ │ ├── layout.tsx │ │ ├── page.tsx │ │ └── widget/ │ │ └── Widget.tsx │ ├── tailwind.config.ts │ └── tsconfig.json ├── extensions/ │ └── chrome/ │ ├── LICENSE │ ├── README.md │ ├── manifest.json │ ├── service_worker.js │ └── src/ │ ├── pages/ │ │ ├── onyx_home.html │ │ ├── onyx_home.js │ │ ├── options.html │ │ ├── options.js │ │ ├── panel.html │ │ ├── panel.js │ │ ├── popup.html │ │ ├── popup.js │ │ ├── welcome.html │ │ └── welcome.js │ ├── styles/ │ │ ├── selection-icon.css │ │ └── shared.css │ └── utils/ │ ├── constants.js │ ├── content.js │ ├── error-modal.js │ ├── selection-icon.js │ └── storage.js ├── profiling/ │ └── grafana/ │ └── dashboards/ │ └── onyx/ │ └── opensearch-search-latency.json ├── pyproject.toml ├── web/ │ ├── .dockerignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.json │ ├── .storybook/ │ │ ├── Introduction.mdx │ │ ├── README.md │ │ ├── main.ts │ │ ├── mocks/ │ │ │ ├── next-image.tsx │ │ │ ├── next-link.tsx │ │ │ └── next-navigation.tsx │ │ ├── preview-head.html │ │ └── preview.ts │ ├── @types/ │ │ ├── favicon-fetch.d.ts │ │ └── images.d.ts │ ├── AGENTS.md │ ├── Dockerfile │ ├── README.md │ ├── components.json │ ├── jest.config.js │ ├── lib/ │ │ └── opal/ │ │ ├── README.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── README.md │ │ │ ├── convert-svg.sh │ │ │ └── icon-template.js │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── README.md │ │ │ │ ├── buttons/ │ │ │ │ │ ├── Button/ │ │ │ │ │ │ └── Button.stories.tsx │ │ │ │ │ ├── button/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── components.tsx │ │ │ │ │ ├── chevron.css │ │ │ │ │ ├── chevron.tsx │ │ │ │ │ ├── filter-button/ │ │ │ │ │ │ ├── FilterButton.stories.tsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── components.tsx │ │ │ │ │ ├── icon-wrapper.tsx │ │ │ │ │ ├── line-item-button/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── components.tsx │ │ │ │ │ ├── open-button/ │ │ │ │ │ │ ├── OpenButton.stories.tsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── components.tsx │ │ │ │ │ ├── select-button/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── components.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ └── sidebar-tab/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── SidebarTab.stories.tsx │ │ │ │ │ └── components.tsx │ │ │ │ ├── cards/ │ │ │ │ │ ├── card/ │ │ │ │ │ │ ├── Card.stories.tsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── components.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── empty-message-card/ │ │ │ │ │ │ ├── EmptyMessageCard.stories.tsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── components.tsx │ │ │ │ │ └── select-card/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── SelectCard.stories.tsx │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── index.ts │ │ │ │ ├── pagination/ │ │ │ │ │ ├── Pagination.stories.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ └── components.tsx │ │ │ │ ├── table/ │ │ │ │ │ ├── ActionsContainer.tsx │ │ │ │ │ ├── ColumnSortabilityPopover.tsx │ │ │ │ │ ├── ColumnVisibilityPopover.tsx │ │ │ │ │ ├── DragOverlayRow.tsx │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── QualifierContainer.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ ├── Table.stories.tsx │ │ │ │ │ ├── TableBody.tsx │ │ │ │ │ ├── TableCell.tsx │ │ │ │ │ ├── TableElement.tsx │ │ │ │ │ ├── TableHead.tsx │ │ │ │ │ ├── TableHeader.tsx │ │ │ │ │ ├── TableQualifier.tsx │ │ │ │ │ ├── TableRow.tsx │ │ │ │ │ ├── TableSizeContext.tsx │ │ │ │ │ ├── columns.ts │ │ │ │ │ ├── components.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useColumnWidths.ts │ │ │ │ │ │ ├── useDataTable.ts │ │ │ │ │ │ └── useDraggableRows.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ └── types.ts │ │ │ │ ├── tag/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── Tag.stories.tsx │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── text/ │ │ │ │ │ ├── InlineMarkdown.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ ├── Text.stories.tsx │ │ │ │ │ └── components.tsx │ │ │ │ └── tooltip.css │ │ │ ├── core/ │ │ │ │ ├── README.md │ │ │ │ ├── animations/ │ │ │ │ │ ├── Hoverable.stories.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── disabled/ │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── index.ts │ │ │ │ └── interactive/ │ │ │ │ ├── Interactive.stories.tsx │ │ │ │ ├── README.md │ │ │ │ ├── container/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── components.tsx │ │ │ │ ├── foldable/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── shared.css │ │ │ │ ├── simple/ │ │ │ │ │ └── components.tsx │ │ │ │ ├── stateful/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── stateless/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ └── utils.ts │ │ │ ├── icons/ │ │ │ │ ├── DiscordMono.tsx │ │ │ │ ├── actions.tsx │ │ │ │ ├── activity-small.tsx │ │ │ │ ├── activity.tsx │ │ │ │ ├── add-lines.tsx │ │ │ │ ├── alert-circle.tsx │ │ │ │ ├── alert-triangle.tsx │ │ │ │ ├── arrow-down-dot.tsx │ │ │ │ ├── arrow-exchange.tsx │ │ │ │ ├── arrow-left-dot.tsx │ │ │ │ ├── arrow-left.tsx │ │ │ │ ├── arrow-right-circle.tsx │ │ │ │ ├── arrow-right-dot.tsx │ │ │ │ ├── arrow-right.tsx │ │ │ │ ├── arrow-up-circle.tsx │ │ │ │ ├── arrow-up-dot.tsx │ │ │ │ ├── arrow-up-down.tsx │ │ │ │ ├── arrow-up-right.tsx │ │ │ │ ├── arrow-up.tsx │ │ │ │ ├── arrow-wall-right.tsx │ │ │ │ ├── audio-eq-small.tsx │ │ │ │ ├── audio.tsx │ │ │ │ ├── aws.tsx │ │ │ │ ├── azure.tsx │ │ │ │ ├── bar-chart-small.tsx │ │ │ │ ├── bar-chart.tsx │ │ │ │ ├── bell.tsx │ │ │ │ ├── bifrost.tsx │ │ │ │ ├── blocks.tsx │ │ │ │ ├── book-open.tsx │ │ │ │ ├── bookmark.tsx │ │ │ │ ├── books-line-small.tsx │ │ │ │ ├── books-stack-small.tsx │ │ │ │ ├── bracket-curly.tsx │ │ │ │ ├── branch.tsx │ │ │ │ ├── bubble-text.tsx │ │ │ │ ├── calendar.tsx │ │ │ │ ├── check-circle.tsx │ │ │ │ ├── check-small.tsx │ │ │ │ ├── check-square.tsx │ │ │ │ ├── check.tsx │ │ │ │ ├── chevron-down-small.tsx │ │ │ │ ├── chevron-down.tsx │ │ │ │ ├── chevron-left.tsx │ │ │ │ ├── chevron-right.tsx │ │ │ │ ├── chevron-up-small.tsx │ │ │ │ ├── chevron-up.tsx │ │ │ │ ├── circle.tsx │ │ │ │ ├── claude.tsx │ │ │ │ ├── clipboard.tsx │ │ │ │ ├── clock-hands-small.tsx │ │ │ │ ├── clock.tsx │ │ │ │ ├── cloud.tsx │ │ │ │ ├── code.tsx │ │ │ │ ├── column.tsx │ │ │ │ ├── copy.tsx │ │ │ │ ├── corner-right-up-dot.tsx │ │ │ │ ├── cpu.tsx │ │ │ │ ├── credit-card.tsx │ │ │ │ ├── curate.tsx │ │ │ │ ├── dashboard.tsx │ │ │ │ ├── dev-kit.tsx │ │ │ │ ├── download-cloud.tsx │ │ │ │ ├── download.tsx │ │ │ │ ├── edit-big.tsx │ │ │ │ ├── edit.tsx │ │ │ │ ├── empty.tsx │ │ │ │ ├── expand.tsx │ │ │ │ ├── external-link.tsx │ │ │ │ ├── eye-closed.tsx │ │ │ │ ├── eye-off.tsx │ │ │ │ ├── eye.tsx │ │ │ │ ├── file-braces.tsx │ │ │ │ ├── file-broadcast.tsx │ │ │ │ ├── file-chart-pie.tsx │ │ │ │ ├── file-small.tsx │ │ │ │ ├── file-text.tsx │ │ │ │ ├── files.tsx │ │ │ │ ├── filter-plus.tsx │ │ │ │ ├── filter.tsx │ │ │ │ ├── fold.tsx │ │ │ │ ├── folder-in.tsx │ │ │ │ ├── folder-open.tsx │ │ │ │ ├── folder-partial-open.tsx │ │ │ │ ├── folder-plus.tsx │ │ │ │ ├── folder.tsx │ │ │ │ ├── gemini.tsx │ │ │ │ ├── globe.tsx │ │ │ │ ├── handle.tsx │ │ │ │ ├── hard-drive.tsx │ │ │ │ ├── hash-small.tsx │ │ │ │ ├── hash.tsx │ │ │ │ ├── headset-mic.tsx │ │ │ │ ├── history.tsx │ │ │ │ ├── hourglass.tsx │ │ │ │ ├── image-small.tsx │ │ │ │ ├── image.tsx │ │ │ │ ├── import-icon.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── info-small.tsx │ │ │ │ ├── info.tsx │ │ │ │ ├── key.tsx │ │ │ │ ├── keystroke.tsx │ │ │ │ ├── lightbulb-simple.tsx │ │ │ │ ├── line-chart-up.tsx │ │ │ │ ├── link.tsx │ │ │ │ ├── linked-dots.tsx │ │ │ │ ├── litellm.tsx │ │ │ │ ├── lm-studio.tsx │ │ │ │ ├── loader.tsx │ │ │ │ ├── lock.tsx │ │ │ │ ├── log-out.tsx │ │ │ │ ├── maximize-2.tsx │ │ │ │ ├── mcp.tsx │ │ │ │ ├── menu.tsx │ │ │ │ ├── microphone-off.tsx │ │ │ │ ├── microphone.tsx │ │ │ │ ├── minus-circle.tsx │ │ │ │ ├── minus.tsx │ │ │ │ ├── moon.tsx │ │ │ │ ├── more-horizontal.tsx │ │ │ │ ├── music-small.tsx │ │ │ │ ├── network-graph.tsx │ │ │ │ ├── notification-bubble.tsx │ │ │ │ ├── ollama.tsx │ │ │ │ ├── onyx-logo-typed.tsx │ │ │ │ ├── onyx-logo.tsx │ │ │ │ ├── onyx-octagon.tsx │ │ │ │ ├── onyx-typed.tsx │ │ │ │ ├── openai.tsx │ │ │ │ ├── openrouter.tsx │ │ │ │ ├── organization.tsx │ │ │ │ ├── paint-brush.tsx │ │ │ │ ├── paperclip.tsx │ │ │ │ ├── pause-circle.tsx │ │ │ │ ├── pen-small.tsx │ │ │ │ ├── pencil-ruler.tsx │ │ │ │ ├── pie-chart.tsx │ │ │ │ ├── pin.tsx │ │ │ │ ├── pinned.tsx │ │ │ │ ├── play-circle.tsx │ │ │ │ ├── plug.tsx │ │ │ │ ├── plus-circle.tsx │ │ │ │ ├── plus.tsx │ │ │ │ ├── progress-bars.tsx │ │ │ │ ├── progress-circle.tsx │ │ │ │ ├── question-mark-small.tsx │ │ │ │ ├── quote-end.tsx │ │ │ │ ├── quote-start.tsx │ │ │ │ ├── refresh-cw.tsx │ │ │ │ ├── revert.tsx │ │ │ │ ├── search-menu.tsx │ │ │ │ ├── search-small.tsx │ │ │ │ ├── search.tsx │ │ │ │ ├── server.tsx │ │ │ │ ├── settings.tsx │ │ │ │ ├── share-webhook.tsx │ │ │ │ ├── share.tsx │ │ │ │ ├── shield.tsx │ │ │ │ ├── sidebar.tsx │ │ │ │ ├── slack.tsx │ │ │ │ ├── slash.tsx │ │ │ │ ├── sliders-small.tsx │ │ │ │ ├── sliders.tsx │ │ │ │ ├── sort-order.tsx │ │ │ │ ├── sort.tsx │ │ │ │ ├── sparkle.tsx │ │ │ │ ├── star-off.tsx │ │ │ │ ├── star.tsx │ │ │ │ ├── step1.tsx │ │ │ │ ├── step2.tsx │ │ │ │ ├── step3-end.tsx │ │ │ │ ├── step3.tsx │ │ │ │ ├── stop-circle.tsx │ │ │ │ ├── stop.tsx │ │ │ │ ├── sun.tsx │ │ │ │ ├── tag.tsx │ │ │ │ ├── terminal-small.tsx │ │ │ │ ├── terminal.tsx │ │ │ │ ├── text-lines-small.tsx │ │ │ │ ├── text-lines.tsx │ │ │ │ ├── thumbs-down.tsx │ │ │ │ ├── thumbs-up.tsx │ │ │ │ ├── trash.tsx │ │ │ │ ├── two-line-small.tsx │ │ │ │ ├── unplug.tsx │ │ │ │ ├── upload-cloud.tsx │ │ │ │ ├── user-check.tsx │ │ │ │ ├── user-edit.tsx │ │ │ │ ├── user-key.tsx │ │ │ │ ├── user-manage.tsx │ │ │ │ ├── user-minus.tsx │ │ │ │ ├── user-plus.tsx │ │ │ │ ├── user-shield.tsx │ │ │ │ ├── user-speaker.tsx │ │ │ │ ├── user-sync.tsx │ │ │ │ ├── user-x.tsx │ │ │ │ ├── user.tsx │ │ │ │ ├── users.tsx │ │ │ │ ├── volume-off.tsx │ │ │ │ ├── volume.tsx │ │ │ │ ├── wallet.tsx │ │ │ │ ├── workflow.tsx │ │ │ │ ├── x-circle.tsx │ │ │ │ ├── x-octagon.tsx │ │ │ │ ├── x.tsx │ │ │ │ ├── zoom-in.tsx │ │ │ │ └── zoom-out.tsx │ │ │ ├── illustrations/ │ │ │ │ ├── broken-key.tsx │ │ │ │ ├── connect.tsx │ │ │ │ ├── connected.tsx │ │ │ │ ├── disconnected.tsx │ │ │ │ ├── empty.tsx │ │ │ │ ├── end-of-line.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── limit-alert.tsx │ │ │ │ ├── long-wait.tsx │ │ │ │ ├── no-access.tsx │ │ │ │ ├── no-result.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ ├── overflow.tsx │ │ │ │ ├── plug-broken.tsx │ │ │ │ ├── timeout.tsx │ │ │ │ ├── un-plugged.tsx │ │ │ │ └── usage-alert.tsx │ │ │ ├── layouts/ │ │ │ │ ├── README.md │ │ │ │ ├── cards/ │ │ │ │ │ └── header-layout/ │ │ │ │ │ ├── CardHeaderLayout.stories.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ └── components.tsx │ │ │ │ ├── content/ │ │ │ │ │ ├── Content.stories.tsx │ │ │ │ │ ├── ContentLg.tsx │ │ │ │ │ ├── ContentMd.tsx │ │ │ │ │ ├── ContentSm.tsx │ │ │ │ │ ├── ContentXl.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ ├── components.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── content-action/ │ │ │ │ │ ├── ContentAction.stories.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ └── components.tsx │ │ │ │ ├── illustration-content/ │ │ │ │ │ ├── IllustrationContent.stories.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ └── components.tsx │ │ │ │ └── index.ts │ │ │ ├── shared.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── next.config.js │ ├── package.json │ ├── playwright.config.ts │ ├── postcss.config.js │ ├── public/ │ │ └── fonts/ │ │ └── KHTeka-Medium.otf │ ├── sentry.edge.config.ts │ ├── sentry.server.config.ts │ ├── src/ │ │ ├── app/ │ │ │ ├── PostHogPageView.tsx │ │ │ ├── admin/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── edit/ │ │ │ │ │ │ └── [toolId]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── edit-mcp/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── mcp/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── new/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── add-connector/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── agents/ │ │ │ │ │ ├── CollapsibleSection.tsx │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ ├── lib.ts │ │ │ │ │ └── page.tsx │ │ │ │ ├── billing/ │ │ │ │ │ ├── BillingDetailsView.tsx │ │ │ │ │ ├── CheckoutView.tsx │ │ │ │ │ ├── LicenseActivationCard.tsx │ │ │ │ │ ├── PlansView.tsx │ │ │ │ │ ├── billing.css │ │ │ │ │ ├── page.test.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── bots/ │ │ │ │ │ ├── SlackBotCreationForm.tsx │ │ │ │ │ ├── SlackBotTable.tsx │ │ │ │ │ ├── SlackBotUpdateForm.tsx │ │ │ │ │ ├── SlackTokensForm.tsx │ │ │ │ │ ├── [bot-id]/ │ │ │ │ │ │ ├── SlackChannelConfigsTable.tsx │ │ │ │ │ │ ├── channels/ │ │ │ │ │ │ │ ├── SlackChannelConfigCreationForm.tsx │ │ │ │ │ │ │ ├── SlackChannelConfigFormFields.tsx │ │ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ │ └── new/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── hooks.ts │ │ │ │ │ │ ├── lib.ts │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── new/ │ │ │ │ │ │ ├── lib.ts │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── configuration/ │ │ │ │ │ ├── chat-preferences/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── code-interpreter/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── document-processing/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── image-generation/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── llm/ │ │ │ │ │ │ ├── ModelConfigurationField.tsx │ │ │ │ │ │ ├── ProviderIcon.tsx │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── search/ │ │ │ │ │ │ ├── UpgradingPage.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── voice/ │ │ │ │ │ │ ├── VoiceProviderSetupModal.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── web-search/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── connector/ │ │ │ │ │ └── [ccPairId]/ │ │ │ │ │ ├── ConfigDisplay.tsx │ │ │ │ │ ├── DeletionErrorStatus.tsx │ │ │ │ │ ├── IndexAttemptErrorsModal.tsx │ │ │ │ │ ├── IndexAttemptsTable.tsx │ │ │ │ │ ├── InlineFileManagement.tsx │ │ │ │ │ ├── ReIndexModal.tsx │ │ │ │ │ ├── lib.ts │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── types.ts │ │ │ │ │ └── useStatusChange.tsx │ │ │ │ ├── connectors/ │ │ │ │ │ └── [connector]/ │ │ │ │ │ ├── AddConnectorPage.tsx │ │ │ │ │ ├── ConnectorWrapper.tsx │ │ │ │ │ ├── NavigationRow.tsx │ │ │ │ │ ├── auth/ │ │ │ │ │ │ └── callback/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── oauth/ │ │ │ │ │ │ ├── callback/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ └── finalize/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── pages/ │ │ │ │ │ ├── Advanced.tsx │ │ │ │ │ ├── ConnectorInput/ │ │ │ │ │ │ ├── FileInput.tsx │ │ │ │ │ │ ├── ListInput.tsx │ │ │ │ │ │ ├── NumberInput.tsx │ │ │ │ │ │ └── SelectInput.tsx │ │ │ │ │ ├── DynamicConnectorCreationForm.tsx │ │ │ │ │ ├── FieldRendering.tsx │ │ │ │ │ ├── gdrive/ │ │ │ │ │ │ ├── Credential.tsx │ │ │ │ │ │ └── GoogleDrivePage.tsx │ │ │ │ │ ├── gmail/ │ │ │ │ │ │ ├── Credential.tsx │ │ │ │ │ │ └── GmailPage.tsx │ │ │ │ │ └── utils/ │ │ │ │ │ ├── files.ts │ │ │ │ │ ├── google_site.ts │ │ │ │ │ └── hooks.ts │ │ │ │ ├── debug/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── discord-bot/ │ │ │ │ │ ├── BotConfigCard.tsx │ │ │ │ │ ├── DiscordGuildsTable.tsx │ │ │ │ │ ├── [guild-id]/ │ │ │ │ │ │ ├── DiscordChannelsTable.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── lib.ts │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── document-index-migration/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── documents/ │ │ │ │ │ ├── ScoreEditor.tsx │ │ │ │ │ ├── explorer/ │ │ │ │ │ │ ├── DocumentExplorerPage.tsx │ │ │ │ │ │ ├── Explorer.tsx │ │ │ │ │ │ ├── lib.ts │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── feedback/ │ │ │ │ │ │ ├── DocumentFeedbackTable.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── lib.ts │ │ │ │ │ └── sets/ │ │ │ │ │ ├── DocumentSetCreationForm.tsx │ │ │ │ │ ├── [documentSetId]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── hooks.tsx │ │ │ │ │ ├── lib.ts │ │ │ │ │ ├── new/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── embeddings/ │ │ │ │ │ ├── EmbeddingModelSelectionForm.tsx │ │ │ │ │ ├── RerankingFormPage.tsx │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ ├── modals/ │ │ │ │ │ │ ├── AlreadyPickedModal.tsx │ │ │ │ │ │ ├── ChangeCredentialsModal.tsx │ │ │ │ │ │ ├── DeleteCredentialsModal.tsx │ │ │ │ │ │ ├── InstantSwitchConfirmModal.tsx │ │ │ │ │ │ ├── ModelSelectionModal.tsx │ │ │ │ │ │ ├── ProviderCreationModal.tsx │ │ │ │ │ │ └── SelectModelModal.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── pages/ │ │ │ │ │ ├── AdvancedEmbeddingFormPage.tsx │ │ │ │ │ ├── CloudEmbeddingPage.tsx │ │ │ │ │ ├── EmbeddingFormPage.tsx │ │ │ │ │ ├── OpenEmbeddingPage.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── federated/ │ │ │ │ │ └── [id]/ │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── useFederatedConnector.ts │ │ │ │ ├── groups/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── groups2/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── indexing/ │ │ │ │ │ └── status/ │ │ │ │ │ ├── CCPairIndexingStatusTable.tsx │ │ │ │ │ ├── ConnectorRowSkeleton.tsx │ │ │ │ │ ├── FilterComponent.tsx │ │ │ │ │ ├── SearchAndFilterControls.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── kg/ │ │ │ │ │ ├── KGEntityTypes.tsx │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── layout.tsx │ │ │ │ ├── scim/ │ │ │ │ │ ├── ScimModal.tsx │ │ │ │ │ ├── ScimSyncCard.tsx │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── svc.ts │ │ │ │ ├── service-accounts/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── systeminfo/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── token-rate-limits/ │ │ │ │ │ ├── CreateRateLimitModal.tsx │ │ │ │ │ ├── TokenRateLimitTables.tsx │ │ │ │ │ ├── lib.ts │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── types.ts │ │ │ │ └── users/ │ │ │ │ └── page.tsx │ │ │ ├── anonymous/ │ │ │ │ └── [id]/ │ │ │ │ ├── AnonymousPage.tsx │ │ │ │ └── page.tsx │ │ │ ├── api/ │ │ │ │ ├── [...path]/ │ │ │ │ │ └── route.ts │ │ │ │ └── chat/ │ │ │ │ └── mcp/ │ │ │ │ └── oauth/ │ │ │ │ └── callback/ │ │ │ │ └── route.ts │ │ │ ├── app/ │ │ │ │ ├── agents/ │ │ │ │ │ ├── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── edit/ │ │ │ │ │ │ └── [id]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── AgentDescription.tsx │ │ │ │ │ ├── AppPopup.tsx │ │ │ │ │ ├── WelcomeMessage.tsx │ │ │ │ │ ├── files/ │ │ │ │ │ │ ├── InputBarPreview.tsx │ │ │ │ │ │ └── images/ │ │ │ │ │ │ ├── FullImageModal.tsx │ │ │ │ │ │ ├── InMessageImage.tsx │ │ │ │ │ │ ├── InputBarPreviewImage.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── folders/ │ │ │ │ │ │ ├── FolderDropdown.tsx │ │ │ │ │ │ └── interfaces.ts │ │ │ │ │ ├── modifiers/ │ │ │ │ │ │ └── SelectedDocuments.tsx │ │ │ │ │ ├── projects/ │ │ │ │ │ │ ├── ProjectChatSessionList.tsx │ │ │ │ │ │ ├── ProjectContextPanel.tsx │ │ │ │ │ │ └── project_utils.ts │ │ │ │ │ └── tools/ │ │ │ │ │ ├── GeneratingImageDisplay.tsx │ │ │ │ │ └── constants.ts │ │ │ │ ├── interfaces.ts │ │ │ │ ├── layout.tsx │ │ │ │ ├── message/ │ │ │ │ │ ├── BlinkingBar.tsx │ │ │ │ │ ├── CodeBlock.tsx │ │ │ │ │ ├── FileDisplay.tsx │ │ │ │ │ ├── HumanMessage.tsx │ │ │ │ │ ├── MemoizedTextComponents.tsx │ │ │ │ │ ├── MessageSwitcher.tsx │ │ │ │ │ ├── Resubmit.tsx │ │ │ │ │ ├── codeUtils.test.ts │ │ │ │ │ ├── codeUtils.ts │ │ │ │ │ ├── copyingUtils.tsx │ │ │ │ │ ├── custom-code-styles.css │ │ │ │ │ ├── errorHelpers.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── messageComponents/ │ │ │ │ │ │ ├── AgentMessage.tsx │ │ │ │ │ │ ├── CustomToolAuthCard.tsx │ │ │ │ │ │ ├── MessageToolbar.tsx │ │ │ │ │ │ ├── TTSButton.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── useAuthErrors.ts │ │ │ │ │ │ │ ├── useMessageSwitching.ts │ │ │ │ │ │ │ └── usePacketAnimationAndCollapse.ts │ │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ │ ├── markdownUtils.tsx │ │ │ │ │ │ ├── renderMessageComponent.tsx │ │ │ │ │ │ ├── renderers/ │ │ │ │ │ │ │ ├── CustomToolRenderer.tsx │ │ │ │ │ │ │ ├── ImageToolRenderer.tsx │ │ │ │ │ │ │ └── MessageTextRenderer.tsx │ │ │ │ │ │ ├── timeline/ │ │ │ │ │ │ │ ├── AgentTimeline.tsx │ │ │ │ │ │ │ ├── CollapsedStreamingContent.tsx │ │ │ │ │ │ │ ├── ExpandedTimelineContent.tsx │ │ │ │ │ │ │ ├── ParallelTimelineTabs.tsx │ │ │ │ │ │ │ ├── StepContainer.tsx │ │ │ │ │ │ │ ├── TimelineRendererComponent.tsx │ │ │ │ │ │ │ ├── TimelineStepComposer.tsx │ │ │ │ │ │ │ ├── headers/ │ │ │ │ │ │ │ │ ├── CompletedHeader.tsx │ │ │ │ │ │ │ │ ├── ParallelStreamingHeader.tsx │ │ │ │ │ │ │ │ ├── StoppedHeader.tsx │ │ │ │ │ │ │ │ └── StreamingHeader.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ │ │ └── testHelpers.ts │ │ │ │ │ │ │ │ ├── packetProcessor.test.ts │ │ │ │ │ │ │ │ ├── packetProcessor.ts │ │ │ │ │ │ │ │ ├── usePacedTurnGroups.test.tsx │ │ │ │ │ │ │ │ ├── usePacedTurnGroups.ts │ │ │ │ │ │ │ │ ├── usePacketProcessor.test.tsx │ │ │ │ │ │ │ │ ├── usePacketProcessor.ts │ │ │ │ │ │ │ │ ├── useStreamingDuration.ts │ │ │ │ │ │ │ │ ├── useTimelineExpansion.ts │ │ │ │ │ │ │ │ ├── useTimelineHeader.ts │ │ │ │ │ │ │ │ ├── useTimelineMetrics.ts │ │ │ │ │ │ │ │ ├── useTimelineStepState.ts │ │ │ │ │ │ │ │ └── useTimelineUIState.ts │ │ │ │ │ │ │ ├── packetHelpers.ts │ │ │ │ │ │ │ ├── primitives/ │ │ │ │ │ │ │ │ ├── TimelineHeaderRow.tsx │ │ │ │ │ │ │ │ ├── TimelineIconColumn.tsx │ │ │ │ │ │ │ │ ├── TimelineRoot.tsx │ │ │ │ │ │ │ │ ├── TimelineRow.tsx │ │ │ │ │ │ │ │ ├── TimelineStepContent.tsx │ │ │ │ │ │ │ │ ├── TimelineSurface.tsx │ │ │ │ │ │ │ │ ├── TimelineTopSpacer.tsx │ │ │ │ │ │ │ │ └── tokens.ts │ │ │ │ │ │ │ ├── renderers/ │ │ │ │ │ │ │ │ ├── code/ │ │ │ │ │ │ │ │ │ └── PythonToolRenderer.tsx │ │ │ │ │ │ │ │ ├── deepresearch/ │ │ │ │ │ │ │ │ │ ├── DeepResearchPlanRenderer.tsx │ │ │ │ │ │ │ │ │ └── ResearchAgentRenderer.tsx │ │ │ │ │ │ │ │ ├── fetch/ │ │ │ │ │ │ │ │ │ ├── FetchToolRenderer.tsx │ │ │ │ │ │ │ │ │ └── fetchStateUtils.ts │ │ │ │ │ │ │ │ ├── filereader/ │ │ │ │ │ │ │ │ │ └── FileReaderToolRenderer.tsx │ │ │ │ │ │ │ │ ├── memory/ │ │ │ │ │ │ │ │ │ ├── MemoryToolRenderer.tsx │ │ │ │ │ │ │ │ │ └── memoryStateUtils.ts │ │ │ │ │ │ │ │ ├── reasoning/ │ │ │ │ │ │ │ │ │ └── ReasoningRenderer.tsx │ │ │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ │ │ ├── InternalSearchToolRenderer.tsx │ │ │ │ │ │ │ │ │ ├── SearchChipList.tsx │ │ │ │ │ │ │ │ │ ├── WebSearchToolRenderer.tsx │ │ │ │ │ │ │ │ │ └── searchStateUtils.ts │ │ │ │ │ │ │ │ └── sharedMarkdownComponents.tsx │ │ │ │ │ │ │ └── transformers.ts │ │ │ │ │ │ ├── timing.ts │ │ │ │ │ │ └── toolDisplayHelpers.tsx │ │ │ │ │ └── thinkingBox/ │ │ │ │ │ └── ThinkingBox.css │ │ │ │ ├── page.tsx │ │ │ │ ├── projects/ │ │ │ │ │ └── projectsService.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── actionUtils.ts │ │ │ │ │ ├── currentMessageFIFO.ts │ │ │ │ │ ├── fileUtils.ts │ │ │ │ │ ├── lib.tsx │ │ │ │ │ ├── messageTree.ts │ │ │ │ │ ├── packetUtils.test.ts │ │ │ │ │ ├── packetUtils.ts │ │ │ │ │ ├── searchParams.ts │ │ │ │ │ ├── streamingModels.ts │ │ │ │ │ └── thinkingTokens.ts │ │ │ │ ├── settings/ │ │ │ │ │ ├── accounts-access/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── chat-preferences/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── connectors/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── general/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── shared/ │ │ │ │ │ └── [chatId]/ │ │ │ │ │ ├── SharedChatDisplay.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── stores/ │ │ │ │ └── useChatSessionStore.ts │ │ │ ├── auth/ │ │ │ │ ├── create-account/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── error/ │ │ │ │ │ ├── AuthErrorContent.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── forgot-password/ │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── impersonate/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── join/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── lib.ts │ │ │ │ ├── libSS.ts │ │ │ │ ├── login/ │ │ │ │ │ ├── EmailPasswordForm.test.tsx │ │ │ │ │ ├── EmailPasswordForm.tsx │ │ │ │ │ ├── LoginPage.tsx │ │ │ │ │ ├── LoginText.tsx │ │ │ │ │ ├── SignInButton.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── logout/ │ │ │ │ │ └── route.ts │ │ │ │ ├── oauth/ │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── oidc/ │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── reset-password/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── saml/ │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── signup/ │ │ │ │ │ ├── ReferralSourceSelector.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── verify-email/ │ │ │ │ │ ├── Verify.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── waiting-on-verification/ │ │ │ │ ├── RequestNewVerificationEmail.tsx │ │ │ │ └── page.tsx │ │ │ ├── components/ │ │ │ │ └── nrf/ │ │ │ │ └── SettingsPanel.tsx │ │ │ ├── config/ │ │ │ │ └── timeRange.tsx │ │ │ ├── connector/ │ │ │ │ └── oauth/ │ │ │ │ └── callback/ │ │ │ │ └── [source]/ │ │ │ │ └── route.tsx │ │ │ ├── craft/ │ │ │ │ ├── README.md │ │ │ │ ├── components/ │ │ │ │ │ ├── BigButton.tsx │ │ │ │ │ ├── BuildLLMPopover.tsx │ │ │ │ │ ├── BuildMessageList.tsx │ │ │ │ │ ├── BuildWelcome.tsx │ │ │ │ │ ├── ChatPanel.tsx │ │ │ │ │ ├── ConnectDataBanner.tsx │ │ │ │ │ ├── ConnectorBannersRow.tsx │ │ │ │ │ ├── CraftingLoader.tsx │ │ │ │ │ ├── DiffView.tsx │ │ │ │ │ ├── FileBrowser.tsx │ │ │ │ │ ├── FilePreviewModal.tsx │ │ │ │ │ ├── InputBar.tsx │ │ │ │ │ ├── IntroBackground.tsx │ │ │ │ │ ├── IntroContent.tsx │ │ │ │ │ ├── OutputPanel.tsx │ │ │ │ │ ├── RawOutputBlock.tsx │ │ │ │ │ ├── SandboxStatusIndicator.tsx │ │ │ │ │ ├── ShareButton.tsx │ │ │ │ │ ├── SideBar.tsx │ │ │ │ │ ├── SuggestedPrompts.tsx │ │ │ │ │ ├── SuggestionBubbles.tsx │ │ │ │ │ ├── TextChunk.tsx │ │ │ │ │ ├── ThinkingCard.tsx │ │ │ │ │ ├── TodoListCard.tsx │ │ │ │ │ ├── ToggleWarningModal.tsx │ │ │ │ │ ├── ToolCallPill.tsx │ │ │ │ │ ├── TypewriterText.tsx │ │ │ │ │ ├── UpgradePlanModal.tsx │ │ │ │ │ ├── UserMessage.tsx │ │ │ │ │ ├── WorkingLine.tsx │ │ │ │ │ ├── WorkingPill.tsx │ │ │ │ │ └── output-panel/ │ │ │ │ │ ├── ArtifactsTab.tsx │ │ │ │ │ ├── FilePreviewContent.tsx │ │ │ │ │ ├── FilesTab.tsx │ │ │ │ │ ├── ImagePreview.tsx │ │ │ │ │ ├── MarkdownFilePreview.tsx │ │ │ │ │ ├── PdfPreview.tsx │ │ │ │ │ ├── PptxPreview.tsx │ │ │ │ │ ├── PreviewTab.tsx │ │ │ │ │ └── UrlBar.tsx │ │ │ │ ├── constants/ │ │ │ │ │ └── exampleBuildPrompts.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── contexts/ │ │ │ │ │ ├── BuildContext.tsx │ │ │ │ │ └── UploadFilesContext.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useBuildConnectors.ts │ │ │ │ │ ├── useBuildLlmSelection.ts │ │ │ │ │ ├── useBuildSessionController.ts │ │ │ │ │ ├── useBuildSessionStore.ts │ │ │ │ │ ├── useBuildStreaming.ts │ │ │ │ │ ├── usePreProvisionPolling.ts │ │ │ │ │ └── useUsageLimits.ts │ │ │ │ ├── layout.tsx │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── BuildOnboardingProvider.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── BuildOnboardingModal.tsx │ │ │ │ │ │ ├── NoLlmProvidersModal.tsx │ │ │ │ │ │ ├── NotAllowedModal.tsx │ │ │ │ │ │ ├── OnboardingInfoPages.tsx │ │ │ │ │ │ ├── OnboardingLlmSetup.tsx │ │ │ │ │ │ └── OnboardingUserInfo.tsx │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── useOnboardingModal.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── page.tsx │ │ │ │ ├── services/ │ │ │ │ │ ├── apiServices.ts │ │ │ │ │ └── searchParams.ts │ │ │ │ ├── types/ │ │ │ │ │ ├── displayTypes.ts │ │ │ │ │ ├── streamingTypes.ts │ │ │ │ │ └── user-library.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── packetTypes.ts │ │ │ │ │ ├── parsePacket.ts │ │ │ │ │ ├── pathSanitizer.test.ts │ │ │ │ │ ├── pathSanitizer.ts │ │ │ │ │ └── streamItemHelpers.ts │ │ │ │ └── v1/ │ │ │ │ ├── configure/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ComingSoonConnectors.tsx │ │ │ │ │ │ ├── ConfigureConnectorModal.tsx │ │ │ │ │ │ ├── ConfigureOverlays.tsx │ │ │ │ │ │ ├── ConnectorCard.tsx │ │ │ │ │ │ ├── ConnectorConfigStep.tsx │ │ │ │ │ │ ├── CreateCredentialInline.tsx │ │ │ │ │ │ ├── CredentialStep.tsx │ │ │ │ │ │ ├── DemoDataConfirmModal.tsx │ │ │ │ │ │ ├── RequestConnectorModal.tsx │ │ │ │ │ │ └── UserLibraryModal.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── utils/ │ │ │ │ │ └── createBuildConnector.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ ├── css/ │ │ │ │ ├── attachment-button.css │ │ │ │ ├── button.css │ │ │ │ ├── card.css │ │ │ │ ├── code.css │ │ │ │ ├── color-swatch.css │ │ │ │ ├── colors.css │ │ │ │ ├── divider.css │ │ │ │ ├── general-layouts.css │ │ │ │ ├── inputs.css │ │ │ │ ├── knowledge-table.css │ │ │ │ ├── line-item.css │ │ │ │ ├── sizes.css │ │ │ │ ├── square-button.css │ │ │ │ ├── switch.css │ │ │ │ └── z-index.css │ │ │ ├── ee/ │ │ │ │ ├── EEFeatureRedirect.tsx │ │ │ │ ├── LICENSE │ │ │ │ ├── admin/ │ │ │ │ │ ├── billing/ │ │ │ │ │ │ ├── BillingAlerts.tsx │ │ │ │ │ │ ├── BillingInformationPage.tsx │ │ │ │ │ │ ├── InfoItem.tsx │ │ │ │ │ │ ├── SubscriptionSummary.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── groups/ │ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── create/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── performance/ │ │ │ │ │ │ ├── custom-analytics/ │ │ │ │ │ │ │ ├── CustomAnalyticsUpdateForm.tsx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── lib.ts │ │ │ │ │ │ ├── query-history/ │ │ │ │ │ │ │ ├── FeedbackBadge.tsx │ │ │ │ │ │ │ ├── KickoffCSVExport.tsx │ │ │ │ │ │ │ ├── QueryHistoryTable.tsx │ │ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ └── usage/ │ │ │ │ │ │ ├── FeedbackChart.tsx │ │ │ │ │ │ ├── OnyxBotChart.tsx │ │ │ │ │ │ ├── PersonaMessagesChart.tsx │ │ │ │ │ │ ├── QueryPerformanceChart.tsx │ │ │ │ │ │ ├── UsageReports.tsx │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── standard-answer/ │ │ │ │ │ │ ├── StandardAnswerCreationForm.tsx │ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── hooks.ts │ │ │ │ │ │ ├── lib.ts │ │ │ │ │ │ ├── new/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── theme/ │ │ │ │ │ ├── AppearanceThemeSettings.tsx │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── agents/ │ │ │ │ │ └── stats/ │ │ │ │ │ └── [id]/ │ │ │ │ │ ├── AgentStats.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── layout.tsx │ │ │ ├── federated/ │ │ │ │ └── oauth/ │ │ │ │ └── callback/ │ │ │ │ └── page.tsx │ │ │ ├── global-error.tsx │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ ├── mcp/ │ │ │ │ ├── [[...path]]/ │ │ │ │ │ └── route.ts │ │ │ │ └── oauth/ │ │ │ │ └── callback/ │ │ │ │ └── page.tsx │ │ │ ├── not-found.tsx │ │ │ ├── nrf/ │ │ │ │ ├── (main)/ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── NRFChrome.tsx │ │ │ │ ├── NRFPage.tsx │ │ │ │ ├── layout.tsx │ │ │ │ └── side-panel/ │ │ │ │ ├── SidePanelHeader.tsx │ │ │ │ └── page.tsx │ │ │ ├── oauth-config/ │ │ │ │ └── callback/ │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── providers.tsx │ │ │ └── web-vitals.tsx │ │ ├── ce.tsx │ │ ├── components/ │ │ │ ├── AdvancedOptionsToggle.tsx │ │ │ ├── AgentsMultiSelect.tsx │ │ │ ├── BasicClickable.tsx │ │ │ ├── Bubble.tsx │ │ │ ├── CollapsibleCard.tsx │ │ │ ├── ConnectorMultiSelect.tsx │ │ │ ├── DeleteButton.tsx │ │ │ ├── Dropdown.tsx │ │ │ ├── EditableStringFieldDisplay.tsx │ │ │ ├── EditableValue.tsx │ │ │ ├── ErrorCallout.tsx │ │ │ ├── FederatedConnectorSelector.tsx │ │ │ ├── Field.tsx │ │ │ ├── FormErrorHelpers.tsx │ │ │ ├── GatedContentWrapper.tsx │ │ │ ├── GenericMultiSelect.tsx │ │ │ ├── GroupsMultiSelect.tsx │ │ │ ├── HoverPopup.tsx │ │ │ ├── IsPublicGroupSelector.tsx │ │ │ ├── Loading.tsx │ │ │ ├── MetadataBadge.tsx │ │ │ ├── MultiSelectDropdown.tsx │ │ │ ├── NonSelectableConnectors.tsx │ │ │ ├── OnyxInitializingLoader.tsx │ │ │ ├── PageSelector.tsx │ │ │ ├── RichTextSubtext.tsx │ │ │ ├── SSRAutoRefresh.tsx │ │ │ ├── SearchResultIcon.tsx │ │ │ ├── SourceIcon.tsx │ │ │ ├── SourceTile.tsx │ │ │ ├── Spinner.tsx │ │ │ ├── Status.tsx │ │ │ ├── WebResultIcon.tsx │ │ │ ├── admin/ │ │ │ │ ├── CardSection.tsx │ │ │ │ ├── ClientLayout.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ ├── Title.tsx │ │ │ │ ├── connectors/ │ │ │ │ │ ├── AccessTypeForm.tsx │ │ │ │ │ ├── AccessTypeGroupSelector.tsx │ │ │ │ │ ├── AutoSyncOptions.tsx │ │ │ │ │ ├── BasicTable.tsx │ │ │ │ │ ├── ConnectorDocsLink.tsx │ │ │ │ │ ├── ConnectorTitle.tsx │ │ │ │ │ ├── CredentialForm.tsx │ │ │ │ │ ├── FileUpload.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── federated/ │ │ │ │ │ └── FederatedConnectorForm.tsx │ │ │ │ └── users/ │ │ │ │ ├── BulkAdd.tsx │ │ │ │ ├── CenteredPageSelector.tsx │ │ │ │ ├── InvitedUserTable.tsx │ │ │ │ ├── PendingUsersTable.tsx │ │ │ │ ├── ResetPasswordModal.tsx │ │ │ │ ├── SignedUpUserTable.tsx │ │ │ │ └── buttons/ │ │ │ │ ├── DeactivateUserButton.tsx │ │ │ │ ├── DeleteUserButton.tsx │ │ │ │ ├── InviteUserButton.tsx │ │ │ │ ├── LeaveOrganizationButton.tsx │ │ │ │ └── UserRoleDropdown.tsx │ │ │ ├── auth/ │ │ │ │ ├── AuthErrorDisplay.tsx │ │ │ │ └── AuthFlowContainer.tsx │ │ │ ├── chat/ │ │ │ │ ├── DynamicBottomSpacer.tsx │ │ │ │ ├── FederatedOAuthModal.tsx │ │ │ │ ├── MCPApiKeyModal.tsx │ │ │ │ ├── MinimalMarkdown.test.tsx │ │ │ │ ├── MinimalMarkdown.tsx │ │ │ │ ├── ProviderContext.tsx │ │ │ │ └── ScrollContainerContext.tsx │ │ │ ├── context/ │ │ │ │ ├── EmbeddingContext.tsx │ │ │ │ ├── FormContext.tsx │ │ │ │ ├── ModalContext.tsx │ │ │ │ └── NRFPreferencesContext.tsx │ │ │ ├── credentials/ │ │ │ │ ├── CredentialFields.tsx │ │ │ │ ├── CredentialSection.tsx │ │ │ │ ├── actions/ │ │ │ │ │ ├── CreateCredential.tsx │ │ │ │ │ ├── CreateStdOAuthCredential.tsx │ │ │ │ │ ├── CredentialFieldsRenderer.tsx │ │ │ │ │ ├── EditCredential.tsx │ │ │ │ │ └── ModifyCredential.tsx │ │ │ │ ├── lib.ts │ │ │ │ └── types.ts │ │ │ ├── dateRangeSelectors/ │ │ │ │ ├── AdminDateRangeSelector.tsx │ │ │ │ ├── SearchDateRangeSelector.tsx │ │ │ │ └── dateUtils.ts │ │ │ ├── dev/ │ │ │ │ ├── StatsOverlay.tsx │ │ │ │ └── StatsOverlayLoader.tsx │ │ │ ├── embedding/ │ │ │ │ ├── CustomEmbeddingModelForm.tsx │ │ │ │ ├── CustomModelForm.tsx │ │ │ │ ├── FailedReIndexAttempts.tsx │ │ │ │ ├── ModelSelector.tsx │ │ │ │ ├── ReindexingProgressTable.tsx │ │ │ │ └── interfaces.tsx │ │ │ ├── errorPages/ │ │ │ │ ├── AccessRestrictedPage.tsx │ │ │ │ ├── CloudErrorPage.tsx │ │ │ │ ├── ErrorPage.tsx │ │ │ │ └── ErrorPageLayout.tsx │ │ │ ├── filters/ │ │ │ │ ├── SourceSelector.tsx │ │ │ │ └── TimeRangeSelector.tsx │ │ │ ├── header/ │ │ │ │ ├── AnnouncementBanner.tsx │ │ │ │ └── HeaderTitle.tsx │ │ │ ├── icons/ │ │ │ │ ├── DynamicFaIcon.tsx │ │ │ │ ├── icons.test.tsx │ │ │ │ └── icons.tsx │ │ │ ├── llm/ │ │ │ │ └── LLMSelector.tsx │ │ │ ├── loading.css │ │ │ ├── modals/ │ │ │ │ ├── AddInstructionModal.tsx │ │ │ │ ├── ConfirmEntityModal.tsx │ │ │ │ ├── CreateProjectModal.tsx │ │ │ │ ├── EditPropertyModal.tsx │ │ │ │ ├── GenericConfirmModal.tsx │ │ │ │ ├── MoveCustomAgentChatModal.tsx │ │ │ │ ├── NewTeamModal.tsx │ │ │ │ ├── NoAgentModal.tsx │ │ │ │ ├── ProviderModal.tsx │ │ │ │ └── UserFilesModal.tsx │ │ │ ├── oauth/ │ │ │ │ └── OAuthCallbackPage.tsx │ │ │ ├── resizable/ │ │ │ │ └── constants.ts │ │ │ ├── search/ │ │ │ │ ├── DocumentDisplay.tsx │ │ │ │ ├── DocumentFeedbackBlock.tsx │ │ │ │ ├── DocumentUpdatedAtBadge.tsx │ │ │ │ ├── filtering/ │ │ │ │ │ └── FilterDropdown.tsx │ │ │ │ └── results/ │ │ │ │ ├── Citation.tsx │ │ │ │ └── ResponseSection.tsx │ │ │ ├── settings/ │ │ │ │ ├── lib.ts │ │ │ │ └── usePaidEnterpriseFeaturesEnabled.ts │ │ │ ├── sidebar/ │ │ │ │ ├── ChatSessionMorePopup.tsx │ │ │ │ └── types.ts │ │ │ ├── spinner.css │ │ │ ├── standardAnswers/ │ │ │ │ ├── StandardAnswerCategoryDropdown.tsx │ │ │ │ └── getStandardAnswerCategoriesIfEE.tsx │ │ │ ├── table/ │ │ │ │ ├── DragHandle.tsx │ │ │ │ ├── DraggableRow.tsx │ │ │ │ ├── DraggableTable.tsx │ │ │ │ └── interfaces.ts │ │ │ ├── theme/ │ │ │ │ └── ThemeProvider.tsx │ │ │ ├── tools/ │ │ │ │ ├── CSVContent.tsx │ │ │ │ ├── ExpandableContentWrapper.tsx │ │ │ │ └── parseCSV.test.ts │ │ │ ├── tooltip/ │ │ │ │ └── CustomTooltip.tsx │ │ │ ├── ui/ │ │ │ │ ├── RadioGroupItemField.tsx │ │ │ │ ├── accordion.tsx │ │ │ │ ├── alert.tsx │ │ │ │ ├── areaChart.tsx │ │ │ │ ├── badge.tsx │ │ │ │ ├── callout.tsx │ │ │ │ ├── card.tsx │ │ │ │ ├── dialog.tsx │ │ │ │ ├── dropdown-menu-with-tooltip.tsx │ │ │ │ ├── dropdown-menu.tsx │ │ │ │ ├── input.tsx │ │ │ │ ├── radio-group.tsx │ │ │ │ ├── scroll-area.tsx │ │ │ │ ├── select.tsx │ │ │ │ ├── slider.tsx │ │ │ │ ├── table.tsx │ │ │ │ ├── title.tsx │ │ │ │ └── tooltip.tsx │ │ │ └── voice/ │ │ │ └── Waveform.tsx │ │ ├── ee/ │ │ │ ├── LICENSE │ │ │ ├── hooks/ │ │ │ │ ├── useHookExecutionLogs.ts │ │ │ │ ├── useHookSpecs.ts │ │ │ │ └── useHooks.ts │ │ │ ├── lib/ │ │ │ │ └── search/ │ │ │ │ └── svc.ts │ │ │ ├── providers/ │ │ │ │ └── QueryControllerProvider.tsx │ │ │ ├── refresh-pages/ │ │ │ │ └── admin/ │ │ │ │ └── HooksPage/ │ │ │ │ ├── HookFormModal.tsx │ │ │ │ ├── HookLogsModal.tsx │ │ │ │ ├── HookStatusPopover.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interfaces.ts │ │ │ │ └── svc.ts │ │ │ └── sections/ │ │ │ ├── SearchCard.tsx │ │ │ └── SearchUI.tsx │ │ ├── hooks/ │ │ │ ├── __tests__/ │ │ │ │ └── useShowOnboarding.test.tsx │ │ │ ├── appNavigation.ts │ │ │ ├── formHooks.ts │ │ │ ├── useAdminPersonas.ts │ │ │ ├── useAdminUsers.ts │ │ │ ├── useAgentController.ts │ │ │ ├── useAgentPreferences.ts │ │ │ ├── useAgents.ts │ │ │ ├── useAppFocus.ts │ │ │ ├── useAuthTypeMetadata.ts │ │ │ ├── useAvailableTools.ts │ │ │ ├── useBillingInformation.ts │ │ │ ├── useBoundingBox.ts │ │ │ ├── useBrowserInfo.ts │ │ │ ├── useCCPairs.ts │ │ │ ├── useChatController.ts │ │ │ ├── useChatSessionController.ts │ │ │ ├── useChatSessions.ts │ │ │ ├── useClickOutside.ts │ │ │ ├── useCloudSubscription.ts │ │ │ ├── useCodeInterpreter.ts │ │ │ ├── useContainerCenter.ts │ │ │ ├── useContentSize.ts │ │ │ ├── useCurrentUser.ts │ │ │ ├── useDeepResearchToggle.ts │ │ │ ├── useFederatedOAuthStatus.ts │ │ │ ├── useFeedbackController.ts │ │ │ ├── useFilter.ts │ │ │ ├── useGroups.ts │ │ │ ├── useImageDropzone.ts │ │ │ ├── useIsDefaultAgent.ts │ │ │ ├── useKeyPress.ts │ │ │ ├── useLLMProviders.ts │ │ │ ├── useLicense.ts │ │ │ ├── useMcpServers.ts │ │ │ ├── useMcpServersForAgentEditor.ts │ │ │ ├── useMemoryManager.ts │ │ │ ├── useOnMount.ts │ │ │ ├── useOpenApiTools.ts │ │ │ ├── usePaginatedFetch.ts │ │ │ ├── usePromptShortcuts.ts │ │ │ ├── useScimToken.ts │ │ │ ├── useScreenSize.ts │ │ │ ├── useServerTools.ts │ │ │ ├── useSettings.test.ts │ │ │ ├── useSettings.ts │ │ │ ├── useShareableGroups.ts │ │ │ ├── useShareableUsers.ts │ │ │ ├── useShowOnboarding.ts │ │ │ ├── useTags.ts │ │ │ ├── useToast.ts │ │ │ ├── useTokenRefresh.ts │ │ │ ├── useUserCounts.ts │ │ │ ├── useUserPersonalization.ts │ │ │ ├── useUsers.ts │ │ │ ├── useVoicePlayback.ts │ │ │ ├── useVoiceProviders.ts │ │ │ ├── useVoiceRecorder.ts │ │ │ ├── useVoiceStatus.ts │ │ │ └── useWebSocket.ts │ │ ├── instrumentation-client.ts │ │ ├── instrumentation.ts │ │ ├── interfaces/ │ │ │ ├── llm.ts │ │ │ ├── onboarding.ts │ │ │ └── settings.ts │ │ ├── layouts/ │ │ │ ├── actions-layouts.tsx │ │ │ ├── app-layouts.tsx │ │ │ ├── expandable-card-layouts.tsx │ │ │ ├── general-layouts.tsx │ │ │ ├── input-layouts.tsx │ │ │ ├── settings-layouts.tsx │ │ │ └── table-layouts.tsx │ │ ├── lib/ │ │ │ ├── admin/ │ │ │ │ ├── users/ │ │ │ │ │ └── userMutationFetcher.ts │ │ │ │ └── voice/ │ │ │ │ └── svc.ts │ │ │ ├── admin-routes.ts │ │ │ ├── agents.ts │ │ │ ├── agentsSS.ts │ │ │ ├── analytics.ts │ │ │ ├── appSidebarSS.ts │ │ │ ├── auth/ │ │ │ │ ├── redirectValidation.ts │ │ │ │ └── requireAuth.ts │ │ │ ├── azureTargetUri.ts │ │ │ ├── billing/ │ │ │ │ ├── index.ts │ │ │ │ ├── interfaces.ts │ │ │ │ ├── svc.test.ts │ │ │ │ └── svc.ts │ │ │ ├── browserUtilities.tsx │ │ │ ├── build/ │ │ │ │ └── client.ts │ │ │ ├── ccPair.ts │ │ │ ├── chat/ │ │ │ │ ├── fetchAgentData.ts │ │ │ │ ├── fetchBackendChatSessionSS.ts │ │ │ │ ├── greetingMessages.ts │ │ │ │ └── svc.ts │ │ │ ├── clipboard.test.ts │ │ │ ├── clipboard.ts │ │ │ ├── connector.ts │ │ │ ├── connectors/ │ │ │ │ ├── AutoSyncOptionFields.tsx │ │ │ │ ├── connectors.tsx │ │ │ │ ├── credentials.ts │ │ │ │ ├── fileTypes.ts │ │ │ │ └── oauth.ts │ │ │ ├── constants/ │ │ │ │ └── chatBackgrounds.ts │ │ │ ├── constants.ts │ │ │ ├── contains.ts │ │ │ ├── credential.ts │ │ │ ├── dateUtils.ts │ │ │ ├── documentDeletion.ts │ │ │ ├── documentUtils.ts │ │ │ ├── download.ts │ │ │ ├── drag/ │ │ │ │ └── constants.ts │ │ │ ├── error.ts │ │ │ ├── extension/ │ │ │ │ ├── constants.ts │ │ │ │ └── utils.ts │ │ │ ├── fetchUtils.ts │ │ │ ├── fetcher.ts │ │ │ ├── fileConnector.ts │ │ │ ├── filters.ts │ │ │ ├── generated/ │ │ │ │ └── README.md │ │ │ ├── gmail.ts │ │ │ ├── googleConnector.ts │ │ │ ├── googleDrive.ts │ │ │ ├── headers/ │ │ │ │ └── fetchHeaderDataSS.ts │ │ │ ├── hierarchy/ │ │ │ │ ├── interfaces.ts │ │ │ │ └── svc.ts │ │ │ ├── hooks/ │ │ │ │ ├── useCaptcha.ts │ │ │ │ ├── useCustomAnalyticsEnabled.ts │ │ │ │ ├── useDocumentSets.ts │ │ │ │ ├── useForcedTools.ts │ │ │ │ ├── useLLMProviderOptions.ts │ │ │ │ ├── useLLMProviders.test.ts │ │ │ │ ├── useProjects.ts │ │ │ │ └── useToolOAuthStatus.ts │ │ │ ├── hooks.llmResolver.test.ts │ │ │ ├── hooks.ts │ │ │ ├── indexAttempt.ts │ │ │ ├── languages.test.ts │ │ │ ├── languages.ts │ │ │ ├── llmConfig/ │ │ │ │ ├── cache.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── providers.ts │ │ │ │ ├── svc.ts │ │ │ │ ├── utils.ts │ │ │ │ └── visionLLM.ts │ │ │ ├── oauth/ │ │ │ │ └── api.ts │ │ │ ├── oauth_utils.ts │ │ │ ├── redirectSS.ts │ │ │ ├── search/ │ │ │ │ ├── interfaces.ts │ │ │ │ ├── streamingUtils.ts │ │ │ │ ├── utils.ts │ │ │ │ └── utilsSS.ts │ │ │ ├── sources.ts │ │ │ ├── streamingTTS.ts │ │ │ ├── swr-keys.ts │ │ │ ├── time.ts │ │ │ ├── tools/ │ │ │ │ ├── fetchTools.ts │ │ │ │ ├── interfaces.ts │ │ │ │ ├── mcpService.ts │ │ │ │ ├── mcpUtils.tsx │ │ │ │ └── openApiService.ts │ │ │ ├── types.ts │ │ │ ├── typingUtils.ts │ │ │ ├── updateSlackBotField.ts │ │ │ ├── urlBuilder.ts │ │ │ ├── user.test.ts │ │ │ ├── user.ts │ │ │ ├── userSS.ts │ │ │ ├── userSettings.ts │ │ │ ├── utils.test.ts │ │ │ ├── utils.ts │ │ │ ├── utilsSS.ts │ │ │ └── version.ts │ │ ├── providers/ │ │ │ ├── AppBackgroundProvider.tsx │ │ │ ├── AppProvider.tsx │ │ │ ├── AppSidebarProvider.tsx │ │ │ ├── CustomAnalyticsScript.tsx │ │ │ ├── DynamicMetadata.tsx │ │ │ ├── ProductGatingWrapper.tsx │ │ │ ├── ProjectsContext.tsx │ │ │ ├── QueryControllerProvider.tsx │ │ │ ├── SWRConfigProvider.tsx │ │ │ ├── SettingsProvider.tsx │ │ │ ├── ToastProvider.tsx │ │ │ ├── UserProvider.tsx │ │ │ ├── VoiceModeProvider.tsx │ │ │ └── __tests__/ │ │ │ └── ProjectsContext.test.tsx │ │ ├── proxy.ts │ │ ├── refresh-components/ │ │ │ ├── Attachment.stories.tsx │ │ │ ├── Attachment.tsx │ │ │ ├── Calendar.stories.tsx │ │ │ ├── Calendar.tsx │ │ │ ├── CharacterCount.stories.tsx │ │ │ ├── CharacterCount.tsx │ │ │ ├── Chip.stories.tsx │ │ │ ├── Chip.tsx │ │ │ ├── Code.stories.tsx │ │ │ ├── Code.tsx │ │ │ ├── Collapsible.stories.tsx │ │ │ ├── Collapsible.tsx │ │ │ ├── ColorSwatch.stories.tsx │ │ │ ├── ColorSwatch.tsx │ │ │ ├── ConnectionProviderIcon.stories.tsx │ │ │ ├── ConnectionProviderIcon.tsx │ │ │ ├── Divider.stories.tsx │ │ │ ├── Divider.tsx │ │ │ ├── EmptyMessage.stories.tsx │ │ │ ├── EmptyMessage.tsx │ │ │ ├── EnabledCount.stories.tsx │ │ │ ├── EnabledCount.tsx │ │ │ ├── FadingEdgeContainer.stories.tsx │ │ │ ├── FadingEdgeContainer.tsx │ │ │ ├── FrostedDiv.stories.tsx │ │ │ ├── FrostedDiv.tsx │ │ │ ├── InlineExternalLink.stories.tsx │ │ │ ├── InlineExternalLink.tsx │ │ │ ├── Logo.tsx │ │ │ ├── Modal.stories.tsx │ │ │ ├── Modal.tsx │ │ │ ├── OverflowDiv.stories.tsx │ │ │ ├── OverflowDiv.tsx │ │ │ ├── Popover.stories.tsx │ │ │ ├── Popover.tsx │ │ │ ├── PreviewImage.stories.tsx │ │ │ ├── PreviewImage.tsx │ │ │ ├── ScrollIndicatorDiv.stories.tsx │ │ │ ├── ScrollIndicatorDiv.tsx │ │ │ ├── Separator.stories.tsx │ │ │ ├── Separator.tsx │ │ │ ├── ShadowDiv.stories.tsx │ │ │ ├── ShadowDiv.tsx │ │ │ ├── SimpleCollapsible.stories.tsx │ │ │ ├── SimpleCollapsible.tsx │ │ │ ├── SimplePopover.stories.tsx │ │ │ ├── SimplePopover.tsx │ │ │ ├── SimpleTabs.stories.tsx │ │ │ ├── SimpleTabs.tsx │ │ │ ├── SimpleTooltip.stories.tsx │ │ │ ├── SimpleTooltip.tsx │ │ │ ├── Spacer.stories.tsx │ │ │ ├── Spacer.tsx │ │ │ ├── Tabs.stories.tsx │ │ │ ├── Tabs.tsx │ │ │ ├── TextSeparator.stories.tsx │ │ │ ├── TextSeparator.tsx │ │ │ ├── avatars/ │ │ │ │ ├── AgentAvatar.tsx │ │ │ │ ├── CustomAgentAvatar.stories.tsx │ │ │ │ ├── CustomAgentAvatar.tsx │ │ │ │ └── UserAvatar.tsx │ │ │ ├── buttons/ │ │ │ │ ├── AttachmentButton.stories.tsx │ │ │ │ ├── AttachmentButton.tsx │ │ │ │ ├── BackButton.stories.tsx │ │ │ │ ├── BackButton.tsx │ │ │ │ ├── Button.stories.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── ButtonRenaming.stories.tsx │ │ │ │ ├── ButtonRenaming.tsx │ │ │ │ ├── CopyIconButton.stories.tsx │ │ │ │ ├── CopyIconButton.tsx │ │ │ │ ├── CreateButton.stories.tsx │ │ │ │ ├── CreateButton.tsx │ │ │ │ ├── IconButton.stories.tsx │ │ │ │ ├── IconButton.tsx │ │ │ │ ├── LineItem.stories.tsx │ │ │ │ ├── LineItem.tsx │ │ │ │ ├── SelectButton.stories.tsx │ │ │ │ ├── SelectButton.tsx │ │ │ │ ├── SquareButton.stories.tsx │ │ │ │ ├── SquareButton.tsx │ │ │ │ ├── Tag.stories.tsx │ │ │ │ ├── Tag.tsx │ │ │ │ └── source-tag/ │ │ │ │ ├── SourceTag.tsx │ │ │ │ ├── SourceTagDetailsCard.tsx │ │ │ │ ├── index.ts │ │ │ │ └── sourceTagUtils.ts │ │ │ ├── cards/ │ │ │ │ ├── Card.stories.tsx │ │ │ │ ├── Card.tsx │ │ │ │ └── index.ts │ │ │ ├── commandmenu/ │ │ │ │ ├── CommandMenu.stories.tsx │ │ │ │ ├── CommandMenu.test.tsx │ │ │ │ ├── CommandMenu.tsx │ │ │ │ └── types.ts │ │ │ ├── contexts/ │ │ │ │ └── ModalContext.tsx │ │ │ ├── form/ │ │ │ │ ├── CheckboxField.tsx │ │ │ │ ├── FieldContext.tsx │ │ │ │ ├── FormField.stories.tsx │ │ │ │ ├── FormField.tsx │ │ │ │ ├── FormikField.tsx │ │ │ │ ├── FormikFields.stories.tsx │ │ │ │ ├── InputDatePickerField.tsx │ │ │ │ ├── InputSelectField.tsx │ │ │ │ ├── InputTextAreaField.tsx │ │ │ │ ├── InputTypeInElementField.tsx │ │ │ │ ├── InputTypeInField.tsx │ │ │ │ ├── Label.stories.tsx │ │ │ │ ├── Label.tsx │ │ │ │ ├── LabeledCheckboxField.tsx │ │ │ │ ├── PasswordInputTypeInField.tsx │ │ │ │ ├── SwitchField.tsx │ │ │ │ └── types.ts │ │ │ ├── inputs/ │ │ │ │ ├── Checkbox.stories.tsx │ │ │ │ ├── Checkbox.test.tsx │ │ │ │ ├── Checkbox.tsx │ │ │ │ ├── InputAvatar.stories.tsx │ │ │ │ ├── InputAvatar.tsx │ │ │ │ ├── InputChipField.stories.tsx │ │ │ │ ├── InputChipField.tsx │ │ │ │ ├── InputComboBox/ │ │ │ │ │ ├── InputComboBox.stories.tsx │ │ │ │ │ ├── InputComboBox.test.tsx │ │ │ │ │ ├── InputComboBox.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ComboBoxDropdown.tsx │ │ │ │ │ │ ├── OptionItem.tsx │ │ │ │ │ │ └── OptionsList.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── aria.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── InputDatePicker.stories.tsx │ │ │ │ ├── InputDatePicker.tsx │ │ │ │ ├── InputFile.stories.tsx │ │ │ │ ├── InputFile.tsx │ │ │ │ ├── InputImage.stories.tsx │ │ │ │ ├── InputImage.tsx │ │ │ │ ├── InputKeyValue.stories.tsx │ │ │ │ ├── InputKeyValue.tsx │ │ │ │ ├── InputNumber.stories.tsx │ │ │ │ ├── InputNumber.tsx │ │ │ │ ├── InputSearch.stories.tsx │ │ │ │ ├── InputSearch.tsx │ │ │ │ ├── InputSelect.stories.tsx │ │ │ │ ├── InputSelect.tsx │ │ │ │ ├── InputTextArea.stories.tsx │ │ │ │ ├── InputTextArea.tsx │ │ │ │ ├── InputTypeIn.stories.tsx │ │ │ │ ├── InputTypeIn.tsx │ │ │ │ ├── ListFieldInput.stories.tsx │ │ │ │ ├── ListFieldInput.tsx │ │ │ │ ├── PasswordInputTypeIn.stories.tsx │ │ │ │ ├── PasswordInputTypeIn.test.ts │ │ │ │ ├── PasswordInputTypeIn.tsx │ │ │ │ ├── Switch.stories.tsx │ │ │ │ ├── Switch.tsx │ │ │ │ └── styles.ts │ │ │ ├── layouts/ │ │ │ │ ├── ConfirmationModalLayout.stories.tsx │ │ │ │ └── ConfirmationModalLayout.tsx │ │ │ ├── loaders/ │ │ │ │ ├── SimpleLoader.stories.tsx │ │ │ │ └── SimpleLoader.tsx │ │ │ ├── messages/ │ │ │ │ ├── FieldMessage.stories.tsx │ │ │ │ ├── FieldMessage.tsx │ │ │ │ ├── InfoBlock.stories.tsx │ │ │ │ ├── InfoBlock.tsx │ │ │ │ ├── Message.stories.tsx │ │ │ │ └── Message.tsx │ │ │ ├── modals/ │ │ │ │ └── MemoriesModal.tsx │ │ │ ├── popovers/ │ │ │ │ ├── ActionsPopover/ │ │ │ │ │ ├── ActionLineItem.tsx │ │ │ │ │ ├── MCPLineItem.tsx │ │ │ │ │ ├── SwitchList.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── FilePickerPopover.tsx │ │ │ │ ├── LLMPopover.test.tsx │ │ │ │ ├── LLMPopover.tsx │ │ │ │ └── interfaces.ts │ │ │ ├── skeletons/ │ │ │ │ ├── ChatSessionSkeleton.stories.tsx │ │ │ │ ├── ChatSessionSkeleton.tsx │ │ │ │ ├── SidebarTabSkeleton.stories.tsx │ │ │ │ └── SidebarTabSkeleton.tsx │ │ │ ├── texts/ │ │ │ │ ├── ExpandableTextDisplay.stories.tsx │ │ │ │ ├── ExpandableTextDisplay.tsx │ │ │ │ ├── Text.stories.tsx │ │ │ │ ├── Text.tsx │ │ │ │ ├── Truncated.stories.tsx │ │ │ │ └── Truncated.tsx │ │ │ └── tiles/ │ │ │ ├── ButtonTile.stories.tsx │ │ │ ├── ButtonTile.tsx │ │ │ ├── FileTile.stories.tsx │ │ │ └── FileTile.tsx │ │ ├── refresh-pages/ │ │ │ ├── AgentEditorPage.tsx │ │ │ ├── AgentsNavigationPage.tsx │ │ │ ├── AppPage.tsx │ │ │ ├── SettingsPage.tsx │ │ │ └── admin/ │ │ │ ├── AgentsPage/ │ │ │ │ ├── AgentRowActions.tsx │ │ │ │ ├── AgentsTable.tsx │ │ │ │ ├── interfaces.ts │ │ │ │ └── svc.ts │ │ │ ├── AgentsPage.tsx │ │ │ ├── ChatPreferencesPage.tsx │ │ │ ├── CodeInterpreterPage/ │ │ │ │ ├── index.tsx │ │ │ │ └── svc.ts │ │ │ ├── GroupsPage/ │ │ │ │ ├── CreateGroupPage.tsx │ │ │ │ ├── EditGroupPage.tsx │ │ │ │ ├── GroupCard.tsx │ │ │ │ ├── GroupsList.tsx │ │ │ │ ├── SharedGroupResources/ │ │ │ │ │ ├── ResourceContent.tsx │ │ │ │ │ ├── ResourcePopover.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── interfaces.ts │ │ │ │ ├── TokenLimitSection.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interfaces.ts │ │ │ │ ├── shared.tsx │ │ │ │ ├── svc.ts │ │ │ │ └── utils.ts │ │ │ ├── ImageGenerationPage/ │ │ │ │ ├── ImageGenerationContent.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── forms/ │ │ │ │ │ ├── AzureImageGenForm.tsx │ │ │ │ │ ├── ImageGenFormWrapper.tsx │ │ │ │ │ ├── OpenAIImageGenForm.tsx │ │ │ │ │ ├── VertexImageGenForm.tsx │ │ │ │ │ ├── getImageGenForm.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.tsx │ │ │ │ └── svc.ts │ │ │ ├── LLMConfigurationPage.tsx │ │ │ ├── ServiceAccountsPage/ │ │ │ │ ├── ApiKeyFormModal.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interfaces.ts │ │ │ │ └── svc.ts │ │ │ ├── UsersPage/ │ │ │ │ ├── EditUserModal.tsx │ │ │ │ ├── GroupsCell.tsx │ │ │ │ ├── InviteUsersModal.tsx │ │ │ │ ├── UserActionModals.tsx │ │ │ │ ├── UserFilters.tsx │ │ │ │ ├── UserRoleCell.tsx │ │ │ │ ├── UserRowActions.tsx │ │ │ │ ├── UsersSummary.tsx │ │ │ │ ├── UsersTable.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interfaces.ts │ │ │ │ └── svc.ts │ │ │ ├── VoiceConfigurationPage.tsx │ │ │ └── WebSearchPage/ │ │ │ ├── WebProviderModalReducer.ts │ │ │ ├── WebProviderSetupModal.tsx │ │ │ ├── connectProviderFlow.ts │ │ │ ├── contentProviderUtils.ts │ │ │ ├── index.tsx │ │ │ ├── interfaces.ts │ │ │ ├── searchProviderUtils.ts │ │ │ └── svc.ts │ │ ├── sections/ │ │ │ ├── AppHealthBanner.tsx │ │ │ ├── Suggestions.tsx │ │ │ ├── actions/ │ │ │ │ ├── ActionCard.tsx │ │ │ │ ├── ActionCardContext.tsx │ │ │ │ ├── ActionCardHeader.tsx │ │ │ │ ├── Actions.tsx │ │ │ │ ├── MCPActionCard.tsx │ │ │ │ ├── MCPPageContent.tsx │ │ │ │ ├── OpenApiActionCard.tsx │ │ │ │ ├── OpenApiPageContent.tsx │ │ │ │ ├── PerUserAuthConfig.tsx │ │ │ │ ├── ToolItem.tsx │ │ │ │ ├── ToolsList.tsx │ │ │ │ ├── ToolsSection.tsx │ │ │ │ ├── modals/ │ │ │ │ │ ├── AddMCPServerModal.tsx │ │ │ │ │ ├── AddOpenAPIActionModal.tsx │ │ │ │ │ ├── DisconnectEntityModal.tsx │ │ │ │ │ ├── MCPAuthenticationModal.tsx │ │ │ │ │ └── OpenAPIAuthenticationModal.tsx │ │ │ │ └── skeleton/ │ │ │ │ ├── ActionCardSkeleton.tsx │ │ │ │ └── ToolItemSkeleton.tsx │ │ │ ├── admin/ │ │ │ │ ├── AdminListHeader.tsx │ │ │ │ └── ProviderCard.tsx │ │ │ ├── cards/ │ │ │ │ ├── AgentCard.tsx │ │ │ │ ├── DocumentSetCard.tsx │ │ │ │ ├── FileCard.tsx │ │ │ │ └── README.md │ │ │ ├── chat/ │ │ │ │ ├── ChatScrollContainer.tsx │ │ │ │ └── ChatUI.tsx │ │ │ ├── document-sidebar/ │ │ │ │ ├── ChatDocumentDisplay.tsx │ │ │ │ └── DocumentsSidebar.tsx │ │ │ ├── input/ │ │ │ │ ├── AppInputBar.tsx │ │ │ │ ├── MicrophoneButton.tsx │ │ │ │ └── SharedAppInputBar.tsx │ │ │ ├── knowledge/ │ │ │ │ ├── AgentKnowledgePane.tsx │ │ │ │ └── SourceHierarchyBrowser.tsx │ │ │ ├── modals/ │ │ │ │ ├── AgentViewerModal.tsx │ │ │ │ ├── FeedbackModal.tsx │ │ │ │ ├── NewTenantModal.tsx │ │ │ │ ├── PreviewModal/ │ │ │ │ │ ├── ExceptionTraceModal.tsx │ │ │ │ │ ├── FloatingFooter.tsx │ │ │ │ │ ├── PreviewModal.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ └── variants/ │ │ │ │ │ ├── CodePreview.tsx │ │ │ │ │ ├── codeVariant.tsx │ │ │ │ │ ├── csvVariant.tsx │ │ │ │ │ ├── dataVariant.tsx │ │ │ │ │ ├── docxVariant.tsx │ │ │ │ │ ├── imageVariant.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── markdownVariant.tsx │ │ │ │ │ ├── pdfVariant.tsx │ │ │ │ │ ├── shared.tsx │ │ │ │ │ ├── textVariant.tsx │ │ │ │ │ └── unsupportedVariant.tsx │ │ │ │ ├── ShareAgentModal.test.tsx │ │ │ │ ├── ShareAgentModal.tsx │ │ │ │ ├── ShareChatSessionModal.tsx │ │ │ │ └── llmConfig/ │ │ │ │ ├── AnthropicModal.tsx │ │ │ │ ├── AzureModal.tsx │ │ │ │ ├── BedrockModal.tsx │ │ │ │ ├── BifrostModal.tsx │ │ │ │ ├── CustomModal.test.tsx │ │ │ │ ├── CustomModal.tsx │ │ │ │ ├── LMStudioForm.tsx │ │ │ │ ├── LiteLLMProxyModal.tsx │ │ │ │ ├── OllamaModal.tsx │ │ │ │ ├── OpenAIModal.tsx │ │ │ │ ├── OpenRouterModal.tsx │ │ │ │ ├── VertexAIModal.tsx │ │ │ │ ├── getModal.tsx │ │ │ │ ├── shared.tsx │ │ │ │ ├── svc.ts │ │ │ │ └── utils.ts │ │ │ ├── onboarding/ │ │ │ │ ├── OnboardingFlow.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── onboardingReducer.test.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── LLMProviderCard.tsx │ │ │ │ │ ├── NonAdminStep.tsx │ │ │ │ │ └── OnboardingHeader.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── forms/ │ │ │ │ │ └── getOnboardingForm.tsx │ │ │ │ ├── reducer.ts │ │ │ │ └── steps/ │ │ │ │ ├── FinalStep.tsx │ │ │ │ ├── LLMStep.tsx │ │ │ │ └── NameStep.tsx │ │ │ ├── settings/ │ │ │ │ └── Memories.tsx │ │ │ └── sidebar/ │ │ │ ├── AdminSidebar.tsx │ │ │ ├── AgentButton.tsx │ │ │ ├── AppSidebar.tsx │ │ │ ├── ChatButton.tsx │ │ │ ├── ChatSearchCommandMenu.tsx │ │ │ ├── CreateConnectorSidebar.tsx │ │ │ ├── NotificationsPopover.tsx │ │ │ ├── ProjectFolderButton.tsx │ │ │ ├── SidebarBody.tsx │ │ │ ├── SidebarSection.tsx │ │ │ ├── SidebarWrapper.tsx │ │ │ ├── StepSidebarWrapper.tsx │ │ │ ├── UpsertEmbeddingSidebar.tsx │ │ │ ├── UserAvatarPopover.tsx │ │ │ ├── chatSearchUtils.ts │ │ │ ├── constants.ts │ │ │ ├── sidebarUtils.ts │ │ │ └── useChatSearchOptimistic.ts │ │ └── types.ts │ ├── tailwind-themes/ │ │ └── tailwind.config.js │ ├── tailwind.config.js │ ├── tests/ │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── admin/ │ │ │ │ ├── admin_auth.setup.ts │ │ │ │ ├── admin_oauth_redirect_uri.spec.ts │ │ │ │ ├── admin_pages.spec.ts │ │ │ │ ├── code-interpreter/ │ │ │ │ │ └── code_interpreter.spec.ts │ │ │ │ ├── default-agent.spec.ts │ │ │ │ ├── disable_default_agent.spec.ts │ │ │ │ ├── discord-bot/ │ │ │ │ │ ├── admin-workflows.spec.ts │ │ │ │ │ ├── bot-config.spec.ts │ │ │ │ │ ├── channel-config.spec.ts │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ └── guilds-list.spec.ts │ │ │ │ ├── ee_feature_redirect.spec.ts │ │ │ │ ├── groups/ │ │ │ │ │ ├── GroupsAdminPage.ts │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ └── groups.spec.ts │ │ │ │ ├── image-generation/ │ │ │ │ │ ├── disconnect-provider.spec.ts │ │ │ │ │ └── image-generation-content.spec.ts │ │ │ │ ├── llm_provider_setup.spec.ts │ │ │ │ ├── oauth_config/ │ │ │ │ │ └── test_tool_oauth.spec.ts │ │ │ │ ├── scim/ │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ └── scim.spec.ts │ │ │ │ ├── theme/ │ │ │ │ │ └── appearance_theme_settings.spec.ts │ │ │ │ ├── users/ │ │ │ │ │ ├── UsersAdminPage.ts │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ └── users.spec.ts │ │ │ │ ├── voice/ │ │ │ │ │ └── disconnect-provider.spec.ts │ │ │ │ └── web-search/ │ │ │ │ ├── disconnect-provider.spec.ts │ │ │ │ ├── svc.ts │ │ │ │ ├── web_content_providers.spec.ts │ │ │ │ └── web_search_providers.spec.ts │ │ │ ├── agents/ │ │ │ │ ├── create_and_edit_agent.spec.ts │ │ │ │ ├── llm_provider_rbac.spec.ts │ │ │ │ └── user_file_attachment.spec.ts │ │ │ ├── auth/ │ │ │ │ ├── email_verification.spec.ts │ │ │ │ ├── login.spec.ts │ │ │ │ ├── password_managements.spec.ts │ │ │ │ ├── pat_management.spec.ts │ │ │ │ └── signup.spec.ts │ │ │ ├── chat/ │ │ │ │ ├── actions_popover.spec.ts │ │ │ │ ├── chat-search-command-menu.spec.ts │ │ │ │ ├── chat_message_rendering.spec.ts │ │ │ │ ├── chat_session_not_found.spec.ts │ │ │ │ ├── current_agent.spec.ts │ │ │ │ ├── default_agent.spec.ts │ │ │ │ ├── default_app_mode.spec.ts │ │ │ │ ├── file_preview_modal.spec.ts │ │ │ │ ├── input_focus_retention.spec.ts │ │ │ │ ├── live_agent.spec.ts │ │ │ │ ├── llm_ordering.spec.ts │ │ │ │ ├── llm_runtime_selection.spec.ts │ │ │ │ ├── message_edit_regenerate.spec.ts │ │ │ │ ├── message_feedback.spec.ts │ │ │ │ ├── project_files_visual_regression.spec.ts │ │ │ │ ├── scroll_behavior.spec.ts │ │ │ │ ├── share_chat.spec.ts │ │ │ │ └── welcome_page.spec.ts │ │ │ ├── connectors/ │ │ │ │ ├── federated_slack.spec.ts │ │ │ │ └── inlineFileManagement.spec.ts │ │ │ ├── constants.ts │ │ │ ├── fixtures/ │ │ │ │ ├── eeFeatures.ts │ │ │ │ ├── llmProvider.ts │ │ │ │ └── three_images.docx │ │ │ ├── global-setup.ts │ │ │ ├── mcp/ │ │ │ │ ├── default-agent-mcp.spec.ts │ │ │ │ └── mcp_oauth_flow.spec.ts │ │ │ ├── onboarding/ │ │ │ │ └── onboarding_flow.spec.ts │ │ │ ├── settings/ │ │ │ │ └── settings_pages.spec.ts │ │ │ └── utils/ │ │ │ ├── agentUtils.ts │ │ │ ├── auth.ts │ │ │ ├── chatActions.ts │ │ │ ├── chatStream.ts │ │ │ ├── dragUtils.ts │ │ │ ├── mcpServer.ts │ │ │ ├── onyxApiClient.ts │ │ │ ├── pageStateLogger.ts │ │ │ ├── theme.ts │ │ │ ├── tools.ts │ │ │ └── visualRegression.ts │ │ └── setup/ │ │ ├── fileMock.js │ │ ├── jest.setup.ts │ │ ├── llmProviderTestUtils.ts │ │ ├── mocks/ │ │ │ ├── README.md │ │ │ ├── components/ │ │ │ │ └── UserProvider.tsx │ │ │ └── cssMock.js │ │ └── test-utils.tsx │ ├── tsconfig.json │ ├── tsconfig.types.json │ └── types/ │ ├── assets.d.ts │ └── favicon-fetch.d.ts └── widget/ ├── .gitignore ├── README.md ├── index.html ├── package.json ├── src/ │ ├── assets/ │ │ └── logo.ts │ ├── config/ │ │ └── config.ts │ ├── index.ts │ ├── services/ │ │ ├── api-service.ts │ │ └── stream-parser.ts │ ├── styles/ │ │ ├── colors.ts │ │ ├── theme.ts │ │ └── widget-styles.ts │ ├── types/ │ │ ├── api-types.ts │ │ └── widget-types.ts │ ├── utils/ │ │ └── storage.ts │ └── widget.ts ├── tsconfig.json └── vite.config.ts