atendentepro 0.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. atendentepro/README.md +890 -0
  2. atendentepro/__init__.py +215 -0
  3. atendentepro/agents/__init__.py +45 -0
  4. atendentepro/agents/answer.py +62 -0
  5. atendentepro/agents/confirmation.py +69 -0
  6. atendentepro/agents/flow.py +64 -0
  7. atendentepro/agents/interview.py +68 -0
  8. atendentepro/agents/knowledge.py +296 -0
  9. atendentepro/agents/onboarding.py +65 -0
  10. atendentepro/agents/triage.py +57 -0
  11. atendentepro/agents/usage.py +56 -0
  12. atendentepro/config/__init__.py +19 -0
  13. atendentepro/config/settings.py +134 -0
  14. atendentepro/guardrails/__init__.py +21 -0
  15. atendentepro/guardrails/manager.py +419 -0
  16. atendentepro/license.py +502 -0
  17. atendentepro/models/__init__.py +21 -0
  18. atendentepro/models/context.py +21 -0
  19. atendentepro/models/outputs.py +118 -0
  20. atendentepro/network.py +325 -0
  21. atendentepro/prompts/__init__.py +35 -0
  22. atendentepro/prompts/answer.py +114 -0
  23. atendentepro/prompts/confirmation.py +124 -0
  24. atendentepro/prompts/flow.py +112 -0
  25. atendentepro/prompts/interview.py +123 -0
  26. atendentepro/prompts/knowledge.py +135 -0
  27. atendentepro/prompts/onboarding.py +146 -0
  28. atendentepro/prompts/triage.py +42 -0
  29. atendentepro/templates/__init__.py +51 -0
  30. atendentepro/templates/manager.py +530 -0
  31. atendentepro/utils/__init__.py +19 -0
  32. atendentepro/utils/openai_client.py +154 -0
  33. atendentepro/utils/tracing.py +71 -0
  34. atendentepro-0.3.0.dist-info/METADATA +306 -0
  35. atendentepro-0.3.0.dist-info/RECORD +39 -0
  36. atendentepro-0.3.0.dist-info/WHEEL +5 -0
  37. atendentepro-0.3.0.dist-info/entry_points.txt +2 -0
  38. atendentepro-0.3.0.dist-info/licenses/LICENSE +25 -0
  39. atendentepro-0.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,71 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Tracing configuration for AtendentePro.
4
+
5
+ Provides optional Application Insights integration for telemetry.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import logging
11
+ from typing import Optional
12
+
13
+ from atendentepro.config import get_config
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ def configure_tracing(connection_string: Optional[str] = None) -> bool:
19
+ """
20
+ Configure Application Insights tracing if connection string is available.
21
+
22
+ Args:
23
+ connection_string: Optional connection string. If not provided,
24
+ uses the value from configuration.
25
+
26
+ Returns:
27
+ True if tracing was configured, False otherwise.
28
+ """
29
+ config = get_config()
30
+ conn_str = connection_string or config.application_insights_connection_string
31
+
32
+ if not conn_str:
33
+ logger.debug("No Application Insights connection string provided. Tracing disabled.")
34
+ return False
35
+
36
+ try:
37
+ # Try to configure Application Insights
38
+ from opentelemetry import trace
39
+ from opentelemetry.sdk.trace import TracerProvider
40
+ from opentelemetry.sdk.trace.export import BatchSpanProcessor
41
+
42
+ # Check if azure monitor is available
43
+ try:
44
+ from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
45
+
46
+ exporter = AzureMonitorTraceExporter(connection_string=conn_str)
47
+ provider = TracerProvider()
48
+ processor = BatchSpanProcessor(exporter)
49
+ provider.add_span_processor(processor)
50
+ trace.set_tracer_provider(provider)
51
+
52
+ logger.info("Application Insights tracing configured successfully.")
53
+ return True
54
+
55
+ except ImportError:
56
+ logger.warning(
57
+ "Azure Monitor exporter not available. "
58
+ "Install 'azure-monitor-opentelemetry-exporter' for Application Insights support."
59
+ )
60
+ return False
61
+
62
+ except ImportError:
63
+ logger.warning(
64
+ "OpenTelemetry not available. "
65
+ "Install 'opentelemetry-sdk' for tracing support."
66
+ )
67
+ return False
68
+ except Exception as e:
69
+ logger.error(f"Failed to configure tracing: {e}")
70
+ return False
71
+
@@ -0,0 +1,306 @@
1
+ Metadata-Version: 2.4
2
+ Name: atendentepro
3
+ Version: 0.3.0
4
+ Summary: Sistema de Atendimento Inteligente com Múltiplos Agentes IA - Biblioteca independente e modular baseada no OpenAI Agents SDK
5
+ Author-email: BeMonkAI <contato@bemonkai.com>
6
+ Maintainer-email: BeMonkAI <contato@bemonkai.com>
7
+ License: Proprietary
8
+ Project-URL: Homepage, https://github.com/BeMonkAI/atendentepro
9
+ Project-URL: Documentation, https://github.com/BeMonkAI/atendentepro#readme
10
+ Project-URL: Repository, https://github.com/BeMonkAI/atendentepro
11
+ Project-URL: Issues, https://github.com/BeMonkAI/atendentepro/issues
12
+ Project-URL: Changelog, https://github.com/BeMonkAI/atendentepro/blob/main/CHANGELOG.md
13
+ Keywords: ai,agents,customer-service,chatbot,openai,multi-agent,atendimento,openai-agents,conversational-ai,rag
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: Other/Proprietary License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Classifier: Topic :: Communications :: Chat
24
+ Classifier: Operating System :: OS Independent
25
+ Requires-Python: >=3.9
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: openai-agents>=0.3.3
29
+ Requires-Dist: openai>=1.107.1
30
+ Requires-Dist: pydantic>=2.0.0
31
+ Requires-Dist: PyYAML>=6.0
32
+ Requires-Dist: python-dotenv>=1.0.0
33
+ Requires-Dist: httpx>=0.27.0
34
+ Requires-Dist: numpy>=1.24.0
35
+ Requires-Dist: scikit-learn>=1.3.0
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
38
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
39
+ Requires-Dist: black>=23.0.0; extra == "dev"
40
+ Requires-Dist: isort>=5.12.0; extra == "dev"
41
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
42
+ Provides-Extra: docs
43
+ Requires-Dist: mkdocs>=1.5.0; extra == "docs"
44
+ Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
45
+ Provides-Extra: rag
46
+ Requires-Dist: PyPDF2>=3.0.0; extra == "rag"
47
+ Requires-Dist: python-docx>=0.8.11; extra == "rag"
48
+ Requires-Dist: python-pptx>=0.6.21; extra == "rag"
49
+ Requires-Dist: PyMuPDF>=1.23.0; extra == "rag"
50
+ Provides-Extra: tracing
51
+ Requires-Dist: opentelemetry-sdk>=1.20.0; extra == "tracing"
52
+ Requires-Dist: azure-monitor-opentelemetry-exporter>=1.0.0; extra == "tracing"
53
+ Provides-Extra: all
54
+ Requires-Dist: atendentepro[dev,docs,rag,tracing]; extra == "all"
55
+ Dynamic: license-file
56
+
57
+ # AtendentePro 🤖
58
+
59
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
60
+ [![License: Proprietary](https://img.shields.io/badge/License-Proprietary-red.svg)](LICENSE)
61
+ [![Version](https://img.shields.io/badge/version-0.3.0-green.svg)](CHANGELOG.md)
62
+
63
+ **Sistema de Atendimento Inteligente com Múltiplos Agentes IA**
64
+
65
+ Uma biblioteca Python modular e independente para criar sistemas de atendimento automatizado usando múltiplos agentes de IA especializados baseados no [OpenAI Agents SDK](https://github.com/openai/openai-agents-python).
66
+
67
+ ---
68
+
69
+ ## 📋 Índice
70
+
71
+ - [Instalação](#-instalação)
72
+ - [Ativação (Licença)](#-ativação-licença)
73
+ - [Início Rápido](#-início-rápido)
74
+ - [Arquitetura](#-arquitetura)
75
+ - [Agentes](#-agentes)
76
+ - [Templates](#-templates)
77
+ - [Documentação](#-documentação)
78
+ - [Suporte](#-suporte)
79
+
80
+ ---
81
+
82
+ ## 📦 Instalação
83
+
84
+ ### Via pip (Privado)
85
+
86
+ ```bash
87
+ # Instalar do repositório privado
88
+ pip install atendentepro --extra-index-url https://pypi.bemonkai.com/simple/
89
+
90
+ # Ou via GitHub
91
+ pip install git+https://github.com/BeMonkAI/atendentepro.git
92
+ ```
93
+
94
+ ### Desenvolvimento Local
95
+
96
+ ```bash
97
+ # Clonar repositório
98
+ git clone https://github.com/BeMonkAI/atendentepro.git
99
+ cd atendentepro
100
+
101
+ # Criar ambiente virtual
102
+ python -m venv venv
103
+ source venv/bin/activate # Linux/Mac
104
+ # ou: venv\Scripts\activate # Windows
105
+
106
+ # Instalar em modo editable
107
+ pip install -e .
108
+
109
+ # Com dependências de desenvolvimento
110
+ pip install -e ".[dev]"
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 🔑 Ativação (Licença)
116
+
117
+ A biblioteca **requer um token de licença** para funcionar.
118
+
119
+ ### Opção 1: Variável de Ambiente (Recomendado)
120
+
121
+ ```bash
122
+ export ATENDENTEPRO_LICENSE_KEY="ATP_seu-token-aqui"
123
+ ```
124
+
125
+ ### Opção 2: Via Código
126
+
127
+ ```python
128
+ from atendentepro import activate
129
+
130
+ activate("ATP_seu-token-aqui")
131
+ ```
132
+
133
+ ### Opção 3: Arquivo .env
134
+
135
+ ```env
136
+ ATENDENTEPRO_LICENSE_KEY=ATP_seu-token-aqui
137
+ OPENAI_API_KEY=sk-sua-chave-openai
138
+ ```
139
+
140
+ ### Obter um Token
141
+
142
+ Entre em contato para obter seu token:
143
+ - 📧 **Email:** contato@bemonkai.com
144
+ - 🌐 **Site:** https://bemonkai.com
145
+
146
+ ---
147
+
148
+ ## ⚡ Início Rápido
149
+
150
+ ```python
151
+ import asyncio
152
+ from pathlib import Path
153
+ from atendentepro import activate, create_standard_network
154
+ from agents import Runner
155
+
156
+ # 1. Ativar (ou use variável de ambiente)
157
+ activate("ATP_seu-token")
158
+
159
+ async def main():
160
+ # 2. Criar rede de agentes
161
+ network = create_standard_network(
162
+ templates_root=Path("./client_templates"),
163
+ client="standard"
164
+ )
165
+
166
+ # 3. Executar conversa
167
+ result = await Runner.run(
168
+ network.triage,
169
+ [{"role": "user", "content": "Olá, preciso de ajuda"}]
170
+ )
171
+
172
+ print(result.final_output)
173
+
174
+ asyncio.run(main())
175
+ ```
176
+
177
+ ---
178
+
179
+ ## 🏗️ Arquitetura
180
+
181
+ ```
182
+ ┌─────────────────────────────────────────────────────────────────┐
183
+ │ ATENDENTEPRO │
184
+ ├─────────────────────────────────────────────────────────────────┤
185
+ │ │
186
+ │ 👤 Usuário │
187
+ │ │ │
188
+ │ ▼ │
189
+ │ ┌─────────────┐ │
190
+ │ │ Triage │──► Classifica intenção │
191
+ │ └─────────────┘ │
192
+ │ │ │
193
+ │ ├──────────┬──────────┬──────────┬──────────┐ │
194
+ │ ▼ ▼ ▼ ▼ ▼ │
195
+ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
196
+ │ │ Flow │ │Knowledge│ │Confirm │ │ Usage │ │Onboard │ │
197
+ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
198
+ │ │ │
199
+ │ ▼ │
200
+ │ ┌─────────────┐ │
201
+ │ │ Interview │──► Coleta informações │
202
+ │ └─────────────┘ │
203
+ │ │ │
204
+ │ ▼ │
205
+ │ ┌─────────────┐ │
206
+ │ │ Answer │──► Resposta final │
207
+ │ └─────────────┘ │
208
+ │ │
209
+ └─────────────────────────────────────────────────────────────────┘
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 🤖 Agentes
215
+
216
+ | Agente | Descrição |
217
+ |--------|-----------|
218
+ | **Triage** | Classifica intenção e direciona para agente especializado |
219
+ | **Flow** | Apresenta opções/menu ao usuário |
220
+ | **Interview** | Coleta informações através de perguntas |
221
+ | **Answer** | Sintetiza resposta final |
222
+ | **Knowledge** | Consulta RAG e dados estruturados |
223
+ | **Confirmation** | Valida com respostas sim/não |
224
+ | **Usage** | Responde dúvidas sobre o sistema |
225
+ | **Onboarding** | Cadastro de novos usuários |
226
+
227
+ ---
228
+
229
+ ## 📁 Templates
230
+
231
+ Templates são configurações YAML que personalizam o comportamento dos agentes:
232
+
233
+ ```
234
+ client_templates/
235
+ ├── standard/ # Template base
236
+ │ ├── triage_config.yaml
237
+ │ ├── flow_config.yaml
238
+ │ ├── interview_config.yaml
239
+ │ └── ...
240
+ └── meu_cliente/ # Template customizado
241
+ ├── triage_config.yaml
242
+ ├── tools.py # Tools customizadas
243
+ └── network.py # Rede específica
244
+ ```
245
+
246
+ Veja a [documentação completa](atendentepro/README.md) para criar templates.
247
+
248
+ ---
249
+
250
+ ## 📚 Documentação
251
+
252
+ - [📖 Documentação da Biblioteca](atendentepro/README.md)
253
+ - [📊 Fluxogramas](docs/fluxogramas/)
254
+ - [💡 Exemplos](examples/)
255
+ - [📝 Changelog](CHANGELOG.md)
256
+
257
+ ---
258
+
259
+ ## 🔧 Dependências
260
+
261
+ - Python 3.9+
262
+ - openai-agents >= 0.3.3
263
+ - openai >= 1.107.1
264
+ - pydantic >= 2.0.0
265
+ - PyYAML >= 6.0
266
+ - python-dotenv >= 1.0.0
267
+
268
+ ---
269
+
270
+ ## 🛠️ Desenvolvimento
271
+
272
+ ```bash
273
+ # Instalar dependências de desenvolvimento
274
+ pip install -e ".[dev]"
275
+
276
+ # Rodar testes
277
+ pytest
278
+
279
+ # Formatar código
280
+ black atendentepro
281
+ isort atendentepro
282
+
283
+ # Type checking
284
+ mypy atendentepro
285
+ ```
286
+
287
+ ---
288
+
289
+ ## 📄 Licença
290
+
291
+ Este software é **proprietário** e requer uma licença válida para uso.
292
+
293
+ Veja o arquivo [LICENSE](LICENSE) para mais detalhes.
294
+
295
+ ---
296
+
297
+ ## 🤝 Suporte
298
+
299
+ - 📧 **Email:** contato@bemonkai.com
300
+ - 🌐 **Site:** https://bemonkai.com
301
+ - 🐛 **Issues:** https://github.com/BeMonkAI/atendentepro/issues
302
+
303
+ ---
304
+
305
+ **Made with ❤️ by BeMonkAI**
306
+
@@ -0,0 +1,39 @@
1
+ atendentepro/README.md,sha256=2JWtLfG01zu8IO7Zo0AZOLSJoxNcWlrzgv4CYQML4I8,24619
2
+ atendentepro/__init__.py,sha256=m8djGtMGG-EAm43h6J0NxGC7xqObG4_90RyT5vCDMks,4794
3
+ atendentepro/license.py,sha256=AGi2ePm28kUak0ekzZ-0Fulg2Q2IOrmVEOS69zDLT58,17567
4
+ atendentepro/network.py,sha256=YgSw6LYvSmFUPztHOK7MR5LrMlyBtBCWobizTNOhCr0,10266
5
+ atendentepro/agents/__init__.py,sha256=_05UyG04mTlwgZ56ymGI6lavIFQq_qyKWSsK4H1v4uY,1236
6
+ atendentepro/agents/answer.py,sha256=4uiuih8cSBUNqPWwN4TfCilnBOfAYhOtpj8bCZQ0Lpk,2023
7
+ atendentepro/agents/confirmation.py,sha256=5Zg4z9A90CydYiEk8CEAKnnza71algFKF-N1WLwGDQI,2311
8
+ atendentepro/agents/flow.py,sha256=qWuPcjfm2peWjpHFUiq0P1blRk500LUUucb2Z9kT95Q,2056
9
+ atendentepro/agents/interview.py,sha256=Tegfh3ZTr7__b_a0elyfn57u56yuS2pN_RB-8vOt-Os,2133
10
+ atendentepro/agents/knowledge.py,sha256=M8XOJ_yxYRyuCaBxn-xFCCWE-MTx5bjyUi4-E2tSPL8,10080
11
+ atendentepro/agents/onboarding.py,sha256=bDdwEE33Hcnv8UW3qsHhLcloaEL5xfh3BBeoWTgb8s0,2098
12
+ atendentepro/agents/triage.py,sha256=VUHOwbQq0jt8pDfNy0FWznicqXDgMfXW0JwAsuGcAzg,1733
13
+ atendentepro/agents/usage.py,sha256=hmckYQ4kOfYqu15xsxg_r2VoRozCwtw-RxxteUtbsI0,1594
14
+ atendentepro/config/__init__.py,sha256=LQZbEz9AVGnO8xCG_rI9GmyFQun5HQqo8hJkkm-d_e4,338
15
+ atendentepro/config/settings.py,sha256=Z1texEtO76Rrt-wPyEXM3FyujDE75r8HbEEJClzFOvk,4762
16
+ atendentepro/guardrails/__init__.py,sha256=lCSI4RbQeIOya8k1wIADoxz9gYySDtUtOv-JiXisvyQ,454
17
+ atendentepro/guardrails/manager.py,sha256=KeyQkIfyPYuHIbuCPP-N4y2R3AJ6n2thkEO_avDgY7M,14053
18
+ atendentepro/models/__init__.py,sha256=eUMq0Lw21PGItGliKHxFDeETIqOVqEwkXVOjgJPM5I0,390
19
+ atendentepro/models/context.py,sha256=1WsoHEtXodgfd5JyZDZctV_2uabNq_XAKv0HKmWb-G8,543
20
+ atendentepro/models/outputs.py,sha256=B573co699DhK0TSpqOHUykUOnBVa2Ool4rnNEO-xmUA,3270
21
+ atendentepro/prompts/__init__.py,sha256=hoO_mqZ6XwdfnUUOUSYJ8LaHR6pQArh7IhNtHZRq5UQ,1026
22
+ atendentepro/prompts/answer.py,sha256=nFaSDXWKLchk2kxN3ID6OfhOZBh7qLYD7y6bFlDYer8,4099
23
+ atendentepro/prompts/confirmation.py,sha256=zt1Ekl8ZVrAAKZ9xZHa3R343JG9VzuZVJYt1jZCg2jg,4141
24
+ atendentepro/prompts/flow.py,sha256=BCuaiaZLZBrS3X4Lxo80JS8a94w-mmxlXwqE1259R_c,4078
25
+ atendentepro/prompts/interview.py,sha256=9zVGA8zSmm6pBx2i1LPGNJIPuLlz7PZKRJE_PC6J7UI,3988
26
+ atendentepro/prompts/knowledge.py,sha256=B3BOyAvzQlwAkR51gc-B6XbQLtwIZlwGP1ofhZ4cFbk,4644
27
+ atendentepro/prompts/onboarding.py,sha256=78fSIh2ifsGeoav8DV41_jnyU157c0dtggJujcDvW4U,6093
28
+ atendentepro/prompts/triage.py,sha256=bSdEVheGy03r5P6MQuv7NwhN2_wrt0mK80F9f_LskRU,1283
29
+ atendentepro/templates/__init__.py,sha256=kSXiDXVIZKKsSn2GuHBcHsnXqVRcNWyBzRlKl9HYoCI,1137
30
+ atendentepro/templates/manager.py,sha256=KdE4khWDMD2S607TDTMkvJ8lZzQ9D_TD_lBaXYSTBzI,17932
31
+ atendentepro/utils/__init__.py,sha256=6EgS4DrW4fG17JdaHNKWMpzicigfFLVJO2VxPV73k9c,334
32
+ atendentepro/utils/openai_client.py,sha256=R0ns7SU36vTgploq14-QJMTke1pPxcAXlENDeoHU0L4,4552
33
+ atendentepro/utils/tracing.py,sha256=HQ3l4IiNcesCJ6l5qcERWyeBQav0G1ea-H8Rei6eQpE,2319
34
+ atendentepro-0.3.0.dist-info/licenses/LICENSE,sha256=flIcFQ143WYRO80xQ0AaAlRdBbAJ6Y8zeLTdfYU5XsQ,976
35
+ atendentepro-0.3.0.dist-info/METADATA,sha256=GUfKlkhORpcpDbgQT9J3ejsfvN59xkArOf2FiEnLccA,10258
36
+ atendentepro-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
+ atendentepro-0.3.0.dist-info/entry_points.txt,sha256=OP0upzqJF3MLS6VX-M-5BfUwx5YLJO2sJ3YBAp4e6yI,89
38
+ atendentepro-0.3.0.dist-info/top_level.txt,sha256=BFasD4SMmgDUmWKlTIZ1PeuukoRBhyiMIz8umKWVCcs,13
39
+ atendentepro-0.3.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ atendentepro-generate-token = atendentepro.license:_cli_generate_token
@@ -0,0 +1,25 @@
1
+ AtendentePro Proprietary License
2
+
3
+ Copyright (c) 2024-2025 BeMonkAI
4
+
5
+ All rights reserved.
6
+
7
+ NOTICE: This software is proprietary and confidential. Unauthorized copying,
8
+ modification, distribution, or use of this software, via any medium, is
9
+ strictly prohibited without the express written permission of BeMonkAI.
10
+
11
+ This software requires a valid license key for use. License keys can be
12
+ obtained by contacting: contato@bemonkai.com
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
21
+
22
+ For licensing inquiries:
23
+ Email: contato@bemonkai.com
24
+ Website: https://bemonkai.com
25
+
@@ -0,0 +1 @@
1
+ atendentepro