gitextract_y8izy66h/ ├── .cursor/ │ └── rules/ │ ├── README.md │ ├── core-development.mdc │ ├── cursor.json │ ├── project-context.mdc │ └── specialized-rules/ │ ├── controller-rules.mdc │ ├── dto-rules.mdc │ ├── guard-rules.mdc │ ├── integration-channel-rules.mdc │ ├── integration-chatbot-rules.mdc │ ├── integration-event-rules.mdc │ ├── integration-storage-rules.mdc │ ├── route-rules.mdc │ ├── service-rules.mdc │ ├── type-rules.mdc │ ├── util-rules.mdc │ └── validate-rules.mdc ├── .dockerignore ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── -en--bug-report.yaml │ │ ├── -en--feature-request.yaml │ │ ├── -pt--reportar-bug.yaml │ │ ├── -pt--solicitar-recurso.yaml │ │ ├── bug_report.yml │ │ └── feature_request.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── check_code_quality.yml │ ├── publish_docker_image.yml │ ├── publish_docker_image_homolog.yml │ ├── publish_docker_image_latest.yml │ └── security.yml ├── .gitignore ├── .gitmodules ├── .husky/ │ ├── README.md │ ├── commit-msg │ ├── pre-commit │ └── pre-push ├── .prettierrc.js ├── .vscode/ │ └── settings.json ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── Docker/ │ ├── kafka/ │ │ └── docker-compose.yaml │ ├── minio/ │ │ └── docker-compose.yaml │ ├── mysql/ │ │ └── docker-compose.yaml │ ├── postgres/ │ │ └── docker-compose.yaml │ ├── rabbitmq/ │ │ └── docker-compose.yaml │ ├── redis/ │ │ └── docker-compose.yaml │ ├── scripts/ │ │ ├── deploy_database.sh │ │ ├── env_functions.sh │ │ └── generate_database.sh │ └── swarm/ │ └── evolution_api_v2.yaml ├── Dockerfile ├── Dockerfile.metrics ├── Extras/ │ └── chatwoot/ │ ├── configurar_admin.json │ ├── criador_de_empresas.json │ └── criador_de_inbox.json ├── LICENSE ├── README.md ├── SECURITY.md ├── commitlint.config.js ├── docker-compose.dev.yaml ├── docker-compose.yaml ├── env.example ├── grafana-dashboard.json.example ├── local_install.sh ├── manager/ │ └── dist/ │ ├── assets/ │ │ ├── index-CO3NSIFj.js │ │ └── index-DsIrum0U.css │ └── index.html ├── manager_install.sh ├── package.json ├── prisma/ │ ├── mysql-migrations/ │ │ ├── 20240809105427_init/ │ │ │ └── migration.sql │ │ ├── 20240813153900_add_unique_index_for_remoted_jid_and_instance_in_contacts/ │ │ │ └── migration.sql │ │ ├── 20240814173138_add_ignore_jids_chatwoot/ │ │ │ └── migration.sql │ │ ├── 20240814214314_integrations_unification/ │ │ │ └── migration.sql │ │ ├── 20240821203259_add_postgres_migrations/ │ │ │ └── migration.sql │ │ ├── 20240824162012_add_type_on_integration_sessions/ │ │ │ └── migration.sql │ │ ├── 20240825131301_change_to_evolution_bot/ │ │ │ └── migration.sql │ │ ├── 20241001172800_add_message_status/ │ │ │ └── migration.sql │ │ ├── 20241108101333_fix_message_status_as_string/ │ │ │ └── migration.sql │ │ ├── 20250214181954_add_wavoip_token_column/ │ │ │ └── migration.sql │ │ ├── 20250225180031_add_nats_integration/ │ │ │ └── migration.sql │ │ ├── 20250510035200_add_wavoip_token_to_settings_table/ │ │ │ └── migration.sql │ │ ├── 20250514232744_add_n8n_table/ │ │ │ └── migration.sql │ │ ├── 20250515211815_add_evoai_table/ │ │ │ └── migration.sql │ │ ├── 20250516012152_remove_unique_atribute_for_file_name_in_media/ │ │ │ └── migration.sql │ │ ├── 20250612155048_add_coluns_trypebot_tables/ │ │ │ └── migration.sql │ │ ├── 20250613143000_add_lid_column_to_is_onwhatsapp/ │ │ │ └── migration.sql │ │ ├── 20250918183910_add_kafka_integration/ │ │ │ └── migration.sql │ │ └── migration_lock.toml │ ├── mysql-schema.prisma │ ├── postgresql-migrations/ │ │ ├── 20240609181238_init/ │ │ │ └── migration.sql │ │ ├── 20240610144159_create_column_profile_name_instance/ │ │ │ └── migration.sql │ │ ├── 20240611125754_create_columns_whitelabel_chatwoot/ │ │ │ └── migration.sql │ │ ├── 20240611202817_create_columns_debounce_time_typebot/ │ │ │ └── migration.sql │ │ ├── 20240712144948_add_business_id_column_to_instances/ │ │ │ └── migration.sql │ │ ├── 20240712150256_create_templates_table/ │ │ │ └── migration.sql │ │ ├── 20240712155950_adjusts_in_templates_table/ │ │ │ └── migration.sql │ │ ├── 20240712162206_remove_templates_table/ │ │ │ └── migration.sql │ │ ├── 20240712223655_column_fallback_typebot/ │ │ │ └── migration.sql │ │ ├── 20240712230631_column_ignore_jids_typebot/ │ │ │ └── migration.sql │ │ ├── 20240713184337_add_media_table/ │ │ │ └── migration.sql │ │ ├── 20240718121437_add_openai_tables/ │ │ │ └── migration.sql │ │ ├── 20240718123923_adjusts_openai_tables/ │ │ │ └── migration.sql │ │ ├── 20240722173259_add_name_column_to_openai_creds/ │ │ │ └── migration.sql │ │ ├── 20240722173518_add_name_column_to_openai_creds/ │ │ │ └── migration.sql │ │ ├── 20240723152648_adjusts_in_column_openai_creds/ │ │ │ └── migration.sql │ │ ├── 20240723200254_add_webhookurl_on_message/ │ │ │ └── migration.sql │ │ ├── 20240725184147_create_template_table/ │ │ │ └── migration.sql │ │ ├── 20240725202651_add_webhook_url_template_table/ │ │ │ └── migration.sql │ │ ├── 20240725221646_modify_token_instance_table/ │ │ │ └── migration.sql │ │ ├── 20240729115127_modify_trigger_type_openai_typebot_table/ │ │ │ └── migration.sql │ │ ├── 20240729180347_modify_typebot_session_status_openai_typebot_table/ │ │ │ └── migration.sql │ │ ├── 20240730152156_create_dify_tables/ │ │ │ └── migration.sql │ │ ├── 20240801193907_add_column_speech_to_text_openai_setting_table/ │ │ │ └── migration.sql │ │ ├── 20240803163908_add_column_description_on_integrations_table/ │ │ │ └── migration.sql │ │ ├── 20240808210239_add_column_function_url_openaibot_table/ │ │ │ └── migration.sql │ │ ├── 20240811021156_add_chat_name_column/ │ │ │ └── migration.sql │ │ ├── 20240811183328_add_unique_index_for_remoted_jid_and_instance_in_contacts/ │ │ │ └── migration.sql │ │ ├── 20240813003116_make_label_unique_for_instance/ │ │ │ └── migration.sql │ │ ├── 20240814173033_add_ignore_jids_chatwoot/ │ │ │ └── migration.sql │ │ ├── 20240814202359_integrations_unification/ │ │ │ └── migration.sql │ │ ├── 20240817110155_add_trigger_type_advanced/ │ │ │ └── migration.sql │ │ ├── 20240819154941_add_context_to_integration_session/ │ │ │ └── migration.sql │ │ ├── 20240821120816_bot_id_integration_session/ │ │ │ └── migration.sql │ │ ├── 20240821171327_add_generic_bot_table/ │ │ │ └── migration.sql │ │ ├── 20240821194524_add_flowise_table/ │ │ │ └── migration.sql │ │ ├── 20240824161333_add_type_on_integration_sessions/ │ │ │ └── migration.sql │ │ ├── 20240825130616_change_to_evolution_bot/ │ │ │ └── migration.sql │ │ ├── 20240828140837_add_is_on_whatsapp_table/ │ │ │ └── migration.sql │ │ ├── 20240828141556_remove_name_column_from_on_whatsapp_table/ │ │ │ └── migration.sql │ │ ├── 20240830193533_changed_table_case/ │ │ │ └── migration.sql │ │ ├── 20240906202019_add_headers_on_webhook_config/ │ │ │ └── migration.sql │ │ ├── 20241001180457_add_message_status/ │ │ │ └── migration.sql │ │ ├── 20241006130306_alter_status_on_message_table/ │ │ │ └── migration.sql │ │ ├── 20241007164026_add_unread_messages_on_chat_table/ │ │ │ └── migration.sql │ │ ├── 20241011085129_create_pusher_table/ │ │ │ └── migration.sql │ │ ├── 20241011100803_split_messages_and_time_per_char_integrations/ │ │ │ └── migration.sql │ │ ├── 20241017144950_create_index/ │ │ │ └── migration.sql │ │ ├── 20250116001415_add_wavoip_token_to_settings_table/ │ │ │ └── migration.sql │ │ ├── 20250225180031_add_nats_integration/ │ │ │ └── migration.sql │ │ ├── 20250514232744_add_n8n_table/ │ │ │ └── migration.sql │ │ ├── 20250515211815_add_evoai_table/ │ │ │ └── migration.sql │ │ ├── 20250516012152_remove_unique_atribute_for_file_name_in_media/ │ │ │ └── migration.sql │ │ ├── 20250612155048_add_coluns_trypebot_tables/ │ │ │ └── migration.sql │ │ ├── 20250613143000_add_lid_column_to_is_onwhatsapp/ │ │ │ └── migration.sql │ │ ├── 20250918182355_add_kafka_integration/ │ │ │ └── migration.sql │ │ ├── 20251122003044_add_chat_instance_remotejid_unique/ │ │ │ └── migration.sql │ │ └── migration_lock.toml │ ├── postgresql-schema.prisma │ └── psql_bouncer-schema.prisma ├── prometheus.yml.example ├── runWithProvider.js ├── src/ │ ├── @types/ │ │ └── express.d.ts │ ├── api/ │ │ ├── abstract/ │ │ │ ├── abstract.cache.ts │ │ │ ├── abstract.repository.ts │ │ │ └── abstract.router.ts │ │ ├── controllers/ │ │ │ ├── business.controller.ts │ │ │ ├── call.controller.ts │ │ │ ├── chat.controller.ts │ │ │ ├── group.controller.ts │ │ │ ├── instance.controller.ts │ │ │ ├── label.controller.ts │ │ │ ├── proxy.controller.ts │ │ │ ├── sendMessage.controller.ts │ │ │ ├── settings.controller.ts │ │ │ └── template.controller.ts │ │ ├── dto/ │ │ │ ├── business.dto.ts │ │ │ ├── call.dto.ts │ │ │ ├── chat.dto.ts │ │ │ ├── chatbot.dto.ts │ │ │ ├── group.dto.ts │ │ │ ├── instance.dto.ts │ │ │ ├── label.dto.ts │ │ │ ├── proxy.dto.ts │ │ │ ├── sendMessage.dto.ts │ │ │ ├── settings.dto.ts │ │ │ └── template.dto.ts │ │ ├── guards/ │ │ │ ├── auth.guard.ts │ │ │ ├── instance.guard.ts │ │ │ └── telemetry.guard.ts │ │ ├── integrations/ │ │ │ ├── channel/ │ │ │ │ ├── channel.controller.ts │ │ │ │ ├── channel.router.ts │ │ │ │ ├── evolution/ │ │ │ │ │ ├── evolution.channel.service.ts │ │ │ │ │ ├── evolution.controller.ts │ │ │ │ │ └── evolution.router.ts │ │ │ │ ├── meta/ │ │ │ │ │ ├── meta.controller.ts │ │ │ │ │ ├── meta.router.ts │ │ │ │ │ └── whatsapp.business.service.ts │ │ │ │ └── whatsapp/ │ │ │ │ ├── baileys.controller.ts │ │ │ │ ├── baileys.router.ts │ │ │ │ ├── baileysMessage.processor.ts │ │ │ │ ├── voiceCalls/ │ │ │ │ │ ├── transport.type.ts │ │ │ │ │ └── useVoiceCallsBaileys.ts │ │ │ │ └── whatsapp.baileys.service.ts │ │ │ ├── chatbot/ │ │ │ │ ├── base-chatbot.controller.ts │ │ │ │ ├── base-chatbot.dto.ts │ │ │ │ ├── base-chatbot.service.ts │ │ │ │ ├── chatbot.controller.ts │ │ │ │ ├── chatbot.router.ts │ │ │ │ ├── chatbot.schema.ts │ │ │ │ ├── chatwoot/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── chatwoot.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── chatwoot.dto.ts │ │ │ │ │ ├── libs/ │ │ │ │ │ │ └── postgres.client.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── chatwoot.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── chatwoot.service.ts │ │ │ │ │ ├── utils/ │ │ │ │ │ │ └── chatwoot-import-helper.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── chatwoot.schema.ts │ │ │ │ ├── dify/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── dify.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── dify.dto.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── dify.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── dify.service.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── dify.schema.ts │ │ │ │ ├── evoai/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── evoai.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── evoai.dto.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── evoai.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── evoai.service.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── evoai.schema.ts │ │ │ │ ├── evolutionBot/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── evolutionBot.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── evolutionBot.dto.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── evolutionBot.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── evolutionBot.service.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── evolutionBot.schema.ts │ │ │ │ ├── flowise/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── flowise.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── flowise.dto.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── flowise.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── flowise.service.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── flowise.schema.ts │ │ │ │ ├── n8n/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── n8n.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── n8n.dto.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── n8n.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── n8n.service.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── n8n.schema.ts │ │ │ │ ├── openai/ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── openai.controller.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── openai.dto.ts │ │ │ │ │ ├── routes/ │ │ │ │ │ │ └── openai.router.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── openai.service.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── openai.schema.ts │ │ │ │ └── typebot/ │ │ │ │ ├── controllers/ │ │ │ │ │ └── typebot.controller.ts │ │ │ │ ├── dto/ │ │ │ │ │ └── typebot.dto.ts │ │ │ │ ├── routes/ │ │ │ │ │ └── typebot.router.ts │ │ │ │ ├── services/ │ │ │ │ │ └── typebot.service.ts │ │ │ │ └── validate/ │ │ │ │ └── typebot.schema.ts │ │ │ ├── event/ │ │ │ │ ├── event.controller.ts │ │ │ │ ├── event.dto.ts │ │ │ │ ├── event.manager.ts │ │ │ │ ├── event.router.ts │ │ │ │ ├── event.schema.ts │ │ │ │ ├── kafka/ │ │ │ │ │ ├── kafka.controller.ts │ │ │ │ │ ├── kafka.router.ts │ │ │ │ │ └── kafka.schema.ts │ │ │ │ ├── nats/ │ │ │ │ │ ├── nats.controller.ts │ │ │ │ │ └── nats.router.ts │ │ │ │ ├── pusher/ │ │ │ │ │ ├── pusher.controller.ts │ │ │ │ │ ├── pusher.router.ts │ │ │ │ │ └── pusher.schema.ts │ │ │ │ ├── rabbitmq/ │ │ │ │ │ ├── rabbitmq.controller.ts │ │ │ │ │ └── rabbitmq.router.ts │ │ │ │ ├── sqs/ │ │ │ │ │ ├── sqs.controller.ts │ │ │ │ │ └── sqs.router.ts │ │ │ │ ├── webhook/ │ │ │ │ │ ├── webhook.controller.ts │ │ │ │ │ ├── webhook.router.ts │ │ │ │ │ └── webhook.schema.ts │ │ │ │ └── websocket/ │ │ │ │ ├── websocket.controller.ts │ │ │ │ └── websocket.router.ts │ │ │ ├── integration.dto.ts │ │ │ └── storage/ │ │ │ ├── s3/ │ │ │ │ ├── controllers/ │ │ │ │ │ └── s3.controller.ts │ │ │ │ ├── dto/ │ │ │ │ │ └── media.dto.ts │ │ │ │ ├── libs/ │ │ │ │ │ └── minio.server.ts │ │ │ │ ├── routes/ │ │ │ │ │ └── s3.router.ts │ │ │ │ ├── services/ │ │ │ │ │ └── s3.service.ts │ │ │ │ └── validate/ │ │ │ │ └── s3.schema.ts │ │ │ └── storage.router.ts │ │ ├── provider/ │ │ │ └── sessions.ts │ │ ├── repository/ │ │ │ └── repository.service.ts │ │ ├── routes/ │ │ │ ├── business.router.ts │ │ │ ├── call.router.ts │ │ │ ├── chat.router.ts │ │ │ ├── group.router.ts │ │ │ ├── index.router.ts │ │ │ ├── instance.router.ts │ │ │ ├── label.router.ts │ │ │ ├── proxy.router.ts │ │ │ ├── sendMessage.router.ts │ │ │ ├── settings.router.ts │ │ │ ├── template.router.ts │ │ │ └── view.router.ts │ │ ├── server.module.ts │ │ ├── services/ │ │ │ ├── auth.service.ts │ │ │ ├── cache.service.ts │ │ │ ├── channel.service.ts │ │ │ ├── monitor.service.ts │ │ │ ├── proxy.service.ts │ │ │ ├── settings.service.ts │ │ │ └── template.service.ts │ │ └── types/ │ │ └── wa.types.ts │ ├── cache/ │ │ ├── cacheengine.ts │ │ ├── localcache.ts │ │ ├── rediscache.client.ts │ │ └── rediscache.ts │ ├── config/ │ │ ├── env.config.ts │ │ ├── error.config.ts │ │ ├── event.config.ts │ │ ├── logger.config.ts │ │ └── path.config.ts │ ├── exceptions/ │ │ ├── 400.exception.ts │ │ ├── 401.exception.ts │ │ ├── 403.exception.ts │ │ ├── 404.exception.ts │ │ ├── 500.exception.ts │ │ └── index.ts │ ├── main.ts │ ├── railway.json │ ├── utils/ │ │ ├── advancedOperatorsSearch.ts │ │ ├── createJid.ts │ │ ├── errorResponse.ts │ │ ├── fetchLatestWaWebVersion.ts │ │ ├── findBotByTrigger.ts │ │ ├── getConversationMessage.ts │ │ ├── i18n.ts │ │ ├── instrumentSentry.ts │ │ ├── makeProxyAgent.ts │ │ ├── onWhatsappCache.ts │ │ ├── renderStatus.ts │ │ ├── sendTelemetry.ts │ │ ├── server-up.ts │ │ ├── translations/ │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ └── pt-BR.json │ │ ├── use-multi-file-auth-state-prisma.ts │ │ ├── use-multi-file-auth-state-provider-files.ts │ │ └── use-multi-file-auth-state-redis-db.ts │ └── validate/ │ ├── business.schema.ts │ ├── chat.schema.ts │ ├── group.schema.ts │ ├── instance.schema.ts │ ├── label.schema.ts │ ├── message.schema.ts │ ├── proxy.schema.ts │ ├── settings.schema.ts │ ├── template.schema.ts │ ├── templateDelete.schema.ts │ ├── templateEdit.schema.ts │ └── validate.schema.ts ├── tsconfig.json └── tsup.config.ts