iatoolkit 0.66.8__tar.gz → 0.76.0__tar.gz

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 (142) hide show
  1. iatoolkit-0.76.0/LICENSE +21 -0
  2. iatoolkit-0.76.0/PKG-INFO +196 -0
  3. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/pyproject.toml +1 -1
  4. iatoolkit-0.76.0/readme.md +114 -0
  5. iatoolkit-0.76.0/requirements.txt +71 -0
  6. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/__init__.py +2 -6
  7. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/base_company.py +3 -31
  8. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/cli_commands.py +5 -7
  9. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/exceptions.py +1 -0
  10. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/routes.py +7 -3
  11. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/util.py +1 -1
  12. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/company_registry.py +1 -2
  13. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/iatoolkit.py +23 -26
  14. iatoolkit-0.66.8/src/iatoolkit/infra/mail_app.py → iatoolkit-0.76.0/src/iatoolkit/infra/brevo_mail_app.py +15 -37
  15. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_client.py +10 -14
  16. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_proxy.py +38 -10
  17. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/locales/en.yaml +4 -3
  18. iatoolkit-0.76.0/src/iatoolkit/locales/es.yaml +165 -0
  19. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/database_manager.py +5 -0
  20. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/models.py +18 -22
  21. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/profile_repo.py +5 -14
  22. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/vs_repo.py +32 -21
  23. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/auth_service.py +1 -1
  24. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/branding_service.py +11 -6
  25. iatoolkit-0.76.0/src/iatoolkit/services/company_context_service.py +155 -0
  26. iatoolkit-0.76.0/src/iatoolkit/services/configuration_service.py +269 -0
  27. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/dispatcher_service.py +76 -72
  28. iatoolkit-0.76.0/src/iatoolkit/services/embedding_service.py +144 -0
  29. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/excel_service.py +1 -1
  30. iatoolkit-0.76.0/src/iatoolkit/services/history_manager_service.py +189 -0
  31. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/jwt_service.py +1 -1
  32. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/language_service.py +10 -6
  33. iatoolkit-0.76.0/src/iatoolkit/services/load_documents_service.py +174 -0
  34. iatoolkit-0.76.0/src/iatoolkit/services/mail_service.py +213 -0
  35. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/profile_service.py +33 -11
  36. iatoolkit-0.76.0/src/iatoolkit/services/query_service.py +448 -0
  37. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/search_service.py +11 -4
  38. iatoolkit-0.76.0/src/iatoolkit/services/sql_service.py +92 -0
  39. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/user_feedback_service.py +18 -6
  40. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/user_session_context_service.py +18 -0
  41. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_main.js +17 -4
  42. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_onboarding_button.js +6 -0
  43. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +1 -1
  44. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/onboarding.css +7 -0
  45. iatoolkit-0.76.0/src/iatoolkit/system_prompts/__init__.py +0 -0
  46. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/query_main.prompt +3 -11
  47. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/change_password.html +1 -1
  48. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/chat.html +1 -0
  49. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/chat_modals.html +1 -0
  50. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/error.html +1 -1
  51. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/login_simulation.html +1 -1
  52. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/onboarding_shell.html +4 -1
  53. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/base_login_view.py +7 -8
  54. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/change_password_view.py +3 -4
  55. iatoolkit-0.76.0/src/iatoolkit/views/embedding_api_view.py +65 -0
  56. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/external_login_view.py +4 -4
  57. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/forgot_password_view.py +6 -6
  58. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/help_content_api_view.py +8 -8
  59. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/history_api_view.py +3 -3
  60. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/home_view.py +2 -2
  61. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/init_context_api_view.py +17 -16
  62. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/llmquery_api_view.py +4 -2
  63. iatoolkit-0.66.8/src/iatoolkit/views/file_store_api_view.py → iatoolkit-0.76.0/src/iatoolkit/views/load_document_api_view.py +2 -2
  64. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/login_simulation_view.py +4 -1
  65. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/login_view.py +9 -9
  66. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/signup_view.py +3 -5
  67. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/verify_user_view.py +2 -4
  68. iatoolkit-0.76.0/src/iatoolkit.egg-info/PKG-INFO +196 -0
  69. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/SOURCES.txt +9 -5
  70. iatoolkit-0.76.0/src/iatoolkit.egg-info/requires.txt +71 -0
  71. iatoolkit-0.66.8/PKG-INFO +0 -258
  72. iatoolkit-0.66.8/readme.md +0 -49
  73. iatoolkit-0.66.8/requirements.txt +0 -200
  74. iatoolkit-0.66.8/src/iatoolkit/locales/es.yaml +0 -163
  75. iatoolkit-0.66.8/src/iatoolkit/services/help_content_service.py +0 -30
  76. iatoolkit-0.66.8/src/iatoolkit/services/history_service.py +0 -38
  77. iatoolkit-0.66.8/src/iatoolkit/services/load_documents_service.py +0 -187
  78. iatoolkit-0.66.8/src/iatoolkit/services/mail_service.py +0 -67
  79. iatoolkit-0.66.8/src/iatoolkit/services/onboarding_service.py +0 -43
  80. iatoolkit-0.66.8/src/iatoolkit/services/query_service.py +0 -373
  81. iatoolkit-0.66.8/src/iatoolkit/services/sql_service.py +0 -64
  82. iatoolkit-0.66.8/src/iatoolkit.egg-info/PKG-INFO +0 -258
  83. iatoolkit-0.66.8/src/iatoolkit.egg-info/requires.txt +0 -200
  84. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/setup.cfg +0 -0
  85. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/__init__.py +0 -0
  86. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/session_manager.py +0 -0
  87. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/__init__.py +0 -0
  88. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/call_service.py +0 -0
  89. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  90. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  91. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  92. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  93. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  94. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  95. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  96. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  97. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  98. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_response.py +0 -0
  99. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
  100. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  101. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/__init__.py +0 -0
  102. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  103. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  104. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  105. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/__init__.py +0 -0
  106. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/benchmark_service.py +0 -0
  107. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/document_service.py +0 -0
  108. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  109. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/i18n_service.py +0 -0
  110. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  111. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/tasks_service.py +0 -0
  112. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  113. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  114. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  115. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  116. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  117. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  118. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  119. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  120. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  121. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
  122. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
  123. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  124. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  125. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  126. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/_company_header.html +0 -0
  127. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/_login_widget.html +0 -0
  128. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/about.html +0 -0
  129. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/base.html +0 -0
  130. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  131. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/index.html +0 -0
  132. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/signup.html +0 -0
  133. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/__init__.py +0 -0
  134. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/index_view.py +0 -0
  135. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/logout_api_view.py +0 -0
  136. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/profile_api_view.py +0 -0
  137. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
  138. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/tasks_api_view.py +0 -0
  139. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
  140. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  141. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  142. {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Fernando Libedinsky
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,196 @@
1
+ Metadata-Version: 2.4
2
+ Name: iatoolkit
3
+ Version: 0.76.0
4
+ Summary: IAToolkit
5
+ Author: Fernando Libedinsky
6
+ License-Expression: MIT
7
+ Requires-Python: >=3.12
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: bcrypt==4.2.1
11
+ Requires-Dist: boto3==1.36.22
12
+ Requires-Dist: botocore==1.36.22
13
+ Requires-Dist: build==1.2.2.post1
14
+ Requires-Dist: click==8.1.8
15
+ Requires-Dist: cryptography==44.0.3
16
+ Requires-Dist: Flask==3.1.0
17
+ Requires-Dist: Flask-Bcrypt==1.0.1
18
+ Requires-Dist: flask-cors==6.0.0
19
+ Requires-Dist: Flask-Injector==0.15.0
20
+ Requires-Dist: Flask-Session==0.8.0
21
+ Requires-Dist: flatbuffers==24.3.25
22
+ Requires-Dist: google-ai-generativelanguage==0.6.15
23
+ Requires-Dist: google-api-core==2.24.1
24
+ Requires-Dist: google-api-python-client==2.161.0
25
+ Requires-Dist: google-auth==2.37.0
26
+ Requires-Dist: google-auth-httplib2==0.2.0
27
+ Requires-Dist: google-auth-oauthlib==1.2.1
28
+ Requires-Dist: google-cloud-core==2.4.1
29
+ Requires-Dist: google-cloud-storage==3.0.0
30
+ Requires-Dist: google-crc32c==1.6.0
31
+ Requires-Dist: google-generativeai==0.8.5
32
+ Requires-Dist: google-resumable-media==2.7.2
33
+ Requires-Dist: googleapis-common-protos==1.66.0
34
+ Requires-Dist: gunicorn==23.0.0
35
+ Requires-Dist: h11==0.14.0
36
+ Requires-Dist: httpcore==1.0.7
37
+ Requires-Dist: httplib2==0.22.0
38
+ Requires-Dist: httptools==0.6.4
39
+ Requires-Dist: httpx==0.28.0
40
+ Requires-Dist: httpx-sse==0.4.0
41
+ Requires-Dist: huggingface-hub==0.31.4
42
+ Requires-Dist: humanfriendly==10.0
43
+ Requires-Dist: idna==3.10
44
+ Requires-Dist: injector==0.22.0
45
+ Requires-Dist: Jinja2==3.1.5
46
+ Requires-Dist: langchain==0.3.19
47
+ Requires-Dist: langchain-core==0.3.35
48
+ Requires-Dist: langchain-text-splitters==0.3.6
49
+ Requires-Dist: markdown2==2.5.3
50
+ Requires-Dist: openai==1.79.0
51
+ Requires-Dist: openpyxl==3.1.5
52
+ Requires-Dist: pandas==2.3.1
53
+ Requires-Dist: pgvector==0.3.6
54
+ Requires-Dist: pillow==11.0.0
55
+ Requires-Dist: psutil==7.0.0
56
+ Requires-Dist: psycopg2-binary==2.9.10
57
+ Requires-Dist: PyJWT==2.10.1
58
+ Requires-Dist: PyMuPDF==1.25.0
59
+ Requires-Dist: python-dotenv==1.0.1
60
+ Requires-Dist: pytest==8.3.4
61
+ Requires-Dist: pytest-cov==5.0.0
62
+ Requires-Dist: pytest-mock==3.14.0
63
+ Requires-Dist: python-dateutil==2.9.0.post0
64
+ Requires-Dist: python-docx==1.1.2
65
+ Requires-Dist: pytesseract==0.3.13
66
+ Requires-Dist: pytz==2025.2
67
+ Requires-Dist: PyYAML==6.0.2
68
+ Requires-Dist: redis==5.2.1
69
+ Requires-Dist: regex==2024.11.6
70
+ Requires-Dist: requests==2.32.3
71
+ Requires-Dist: requests-oauthlib==2.0.0
72
+ Requires-Dist: requests-toolbelt==1.0.0
73
+ Requires-Dist: s3transfer==0.11.2
74
+ Requires-Dist: sib-api-v3-sdk==7.6.0
75
+ Requires-Dist: SQLAlchemy==2.0.36
76
+ Requires-Dist: tiktoken==0.8.0
77
+ Requires-Dist: tokenizers==0.21.0
78
+ Requires-Dist: websocket-client==1.8.0
79
+ Requires-Dist: websockets==14.1
80
+ Requires-Dist: Werkzeug==3.1.3
81
+ Dynamic: license-file
82
+
83
+ <div align="center">
84
+ <h1>IAToolkit</h1>
85
+ <p><strong>The Open-Source Framework for Building AI Assistants on Your Private Data</strong></p>
86
+ <p>
87
+ <a href="https://www.iatoolkit.com">Website</a> |
88
+ <a href="./docs/index.md">Full Documentation</a> |
89
+ <a href="./docs/quickstart.md">Quickstart Guide</a>
90
+ </p>
91
+ </div>
92
+
93
+ ![IAToolkit Demo](./docs/assets/iatoolkit-demo.gif)
94
+
95
+ ---
96
+
97
+ ## ✨ Why IAToolkit?
98
+
99
+ IAToolkit is more than a framework — it's a complete foundation for building **enterprise-grade AI assistants**
100
+ capable of understanding your proprietary data, automating workflows, and integrating seamlessly with
101
+ your existing systems.
102
+
103
+ Whether you’re building a production chatbot for your company or learning how real AI applications are architected,
104
+ IAToolkit gives you everything you need to build secure, production-grade assistants — from data access,
105
+ multi-tenant architecture, and tool execution to prompt orchestration, semantic search,
106
+ and full UI integration — all powered by a clean, extensible Python API.
107
+
108
+ ---
109
+
110
+ ### 🔌 Connect to Anything
111
+ Build AI assistants that truly understand your business.
112
+
113
+ - Connect to **SQL databases** (PostgreSQL, MySQL, SQLite)
114
+ - Query structured data using natural language
115
+ - Perform **semantic search** on PDFs, DOCX, TXT, XLSX
116
+ - Works as a full RAG engine out-of-the-box
117
+
118
+ ---
119
+
120
+ ### 🏢 Multi-Tenant by Design
121
+ Ideal for SaaS, agencies, consultancies, or large enterprises.
122
+
123
+ - Isolated **Company Modules**
124
+ - Each company defines its own:
125
+ - data sources
126
+ - prompts
127
+ - custom tools
128
+ - branding + UI theme
129
+ - Clean separation for multi-client deployments
130
+ - Perfect for scaling from 1 to 100 customers
131
+ - Configure everything using simple YAML
132
+
133
+ ---
134
+
135
+ ### 🧩 Extensible & Provider-Agnostic
136
+ Customize every layer and keep full control.
137
+
138
+ - Add **custom tools** the LLM can call (SQL, API, Python functions)
139
+ - Swap between **OpenAI (GPT)**, **Google Gemini**, or future models
140
+ - Built on dependency injection for maximum modularity
141
+ - Extend prompts, dispatchers, services, and LLM clients effortlessly
142
+
143
+ ---
144
+
145
+ ### 🛡️ Built for Production
146
+ Designed for real-world systems — reliable, maintainable, and scalable.
147
+
148
+ - Integrated authentication and session handling
149
+ - Secure secret management via environment variables
150
+ - Detailed logging of prompts, tool calls, and token usage
151
+ - Structured architecture with **90%+ automated test coverage**
152
+ - Clean separation of UI, business logic, and LLM orchestration
153
+ - Runs anywhere: local machine, docker, cloud, serverless
154
+
155
+ ---
156
+
157
+ ### 🎓 Learn How Real AI Applications Are Built
158
+ IAToolkit is also an excellent learning resource:
159
+
160
+ - Understand how to orchestrate multiple LLM calls
161
+ - Learn how tools, SQL, vector search and prompts interact
162
+ - Explore a complete architecture for real AI products
163
+ - Use the Sample Company demo to practice building AI assistants
164
+ - Perfect for developers, students, and teams exploring enterprise AI
165
+
166
+ ---
167
+
168
+ ## 🚀 Getting Started in 3 Minutes
169
+
170
+ Get your first AI assistant running locally by following our "Hello World" example.
171
+ Our detailed guide will walk you through setting up your virtual environment, configuring your `.env` file,
172
+ and launching the application.
173
+
174
+ ➡️ **[Start the Quickstart Guide](./docs/quickstart.md)**
175
+
176
+ ## 📚 Documentation
177
+
178
+ Our documentation is designed for users of all levels, from initial setup to advanced development.
179
+
180
+ | Guide | Description |
181
+ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
182
+ | 🚀 **[Quickstart Guide](./docs/quickstart.md)** | The fastest way to install, configure, and run IAToolkit for the first time. |
183
+ | ⚙️ **[Companies & Components](./docs/companies_and_components.md)** | A deep dive into the `company.yaml` file, the core of all configuration. |
184
+ | 💻 **[Programming Guide](./docs/programming_guide.md)** | Understand the internal architecture, services, and design patterns to extend the framework. |
185
+ | ☁️ **[Deployment Guide](./docs/deployment_guide.md)** | Learn how to deploy your IAToolkit application to a production environment. |
186
+ | 🗃️ **[Database Guide](./docs/database_guide.md)** | An overview of the core database schema used by the IAToolkit framework itself. |
187
+
188
+ ➡️ **[Explore all documentation](./docs/index.md)**
189
+
190
+ ## 🤝 Contributing
191
+
192
+ We welcome contributions of all kinds! Whether it's a new feature, a bug fix, or an improvement to the documentation, your help is appreciated. Please read our **[Contributing Guide](./contributing.md)** to get started.
193
+
194
+ ## 📄 License
195
+
196
+ IAToolkit is open-source software licensed under the **[MIT License](./LICENSE)**.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- version = "0.66.8"
7
+ version = "0.76.0"
8
8
  requires-python = ">=3.12"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
@@ -0,0 +1,114 @@
1
+ <div align="center">
2
+ <h1>IAToolkit</h1>
3
+ <p><strong>The Open-Source Framework for Building AI Assistants on Your Private Data</strong></p>
4
+ <p>
5
+ <a href="https://www.iatoolkit.com">Website</a> |
6
+ <a href="./docs/index.md">Full Documentation</a> |
7
+ <a href="./docs/quickstart.md">Quickstart Guide</a>
8
+ </p>
9
+ </div>
10
+
11
+ ![IAToolkit Demo](./docs/assets/iatoolkit-demo.gif)
12
+
13
+ ---
14
+
15
+ ## ✨ Why IAToolkit?
16
+
17
+ IAToolkit is more than a framework — it's a complete foundation for building **enterprise-grade AI assistants**
18
+ capable of understanding your proprietary data, automating workflows, and integrating seamlessly with
19
+ your existing systems.
20
+
21
+ Whether you’re building a production chatbot for your company or learning how real AI applications are architected,
22
+ IAToolkit gives you everything you need to build secure, production-grade assistants — from data access,
23
+ multi-tenant architecture, and tool execution to prompt orchestration, semantic search,
24
+ and full UI integration — all powered by a clean, extensible Python API.
25
+
26
+ ---
27
+
28
+ ### 🔌 Connect to Anything
29
+ Build AI assistants that truly understand your business.
30
+
31
+ - Connect to **SQL databases** (PostgreSQL, MySQL, SQLite)
32
+ - Query structured data using natural language
33
+ - Perform **semantic search** on PDFs, DOCX, TXT, XLSX
34
+ - Works as a full RAG engine out-of-the-box
35
+
36
+ ---
37
+
38
+ ### 🏢 Multi-Tenant by Design
39
+ Ideal for SaaS, agencies, consultancies, or large enterprises.
40
+
41
+ - Isolated **Company Modules**
42
+ - Each company defines its own:
43
+ - data sources
44
+ - prompts
45
+ - custom tools
46
+ - branding + UI theme
47
+ - Clean separation for multi-client deployments
48
+ - Perfect for scaling from 1 to 100 customers
49
+ - Configure everything using simple YAML
50
+
51
+ ---
52
+
53
+ ### 🧩 Extensible & Provider-Agnostic
54
+ Customize every layer and keep full control.
55
+
56
+ - Add **custom tools** the LLM can call (SQL, API, Python functions)
57
+ - Swap between **OpenAI (GPT)**, **Google Gemini**, or future models
58
+ - Built on dependency injection for maximum modularity
59
+ - Extend prompts, dispatchers, services, and LLM clients effortlessly
60
+
61
+ ---
62
+
63
+ ### 🛡️ Built for Production
64
+ Designed for real-world systems — reliable, maintainable, and scalable.
65
+
66
+ - Integrated authentication and session handling
67
+ - Secure secret management via environment variables
68
+ - Detailed logging of prompts, tool calls, and token usage
69
+ - Structured architecture with **90%+ automated test coverage**
70
+ - Clean separation of UI, business logic, and LLM orchestration
71
+ - Runs anywhere: local machine, docker, cloud, serverless
72
+
73
+ ---
74
+
75
+ ### 🎓 Learn How Real AI Applications Are Built
76
+ IAToolkit is also an excellent learning resource:
77
+
78
+ - Understand how to orchestrate multiple LLM calls
79
+ - Learn how tools, SQL, vector search and prompts interact
80
+ - Explore a complete architecture for real AI products
81
+ - Use the Sample Company demo to practice building AI assistants
82
+ - Perfect for developers, students, and teams exploring enterprise AI
83
+
84
+ ---
85
+
86
+ ## 🚀 Getting Started in 3 Minutes
87
+
88
+ Get your first AI assistant running locally by following our "Hello World" example.
89
+ Our detailed guide will walk you through setting up your virtual environment, configuring your `.env` file,
90
+ and launching the application.
91
+
92
+ ➡️ **[Start the Quickstart Guide](./docs/quickstart.md)**
93
+
94
+ ## 📚 Documentation
95
+
96
+ Our documentation is designed for users of all levels, from initial setup to advanced development.
97
+
98
+ | Guide | Description |
99
+ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
100
+ | 🚀 **[Quickstart Guide](./docs/quickstart.md)** | The fastest way to install, configure, and run IAToolkit for the first time. |
101
+ | ⚙️ **[Companies & Components](./docs/companies_and_components.md)** | A deep dive into the `company.yaml` file, the core of all configuration. |
102
+ | 💻 **[Programming Guide](./docs/programming_guide.md)** | Understand the internal architecture, services, and design patterns to extend the framework. |
103
+ | ☁️ **[Deployment Guide](./docs/deployment_guide.md)** | Learn how to deploy your IAToolkit application to a production environment. |
104
+ | 🗃️ **[Database Guide](./docs/database_guide.md)** | An overview of the core database schema used by the IAToolkit framework itself. |
105
+
106
+ ➡️ **[Explore all documentation](./docs/index.md)**
107
+
108
+ ## 🤝 Contributing
109
+
110
+ We welcome contributions of all kinds! Whether it's a new feature, a bug fix, or an improvement to the documentation, your help is appreciated. Please read our **[Contributing Guide](./contributing.md)** to get started.
111
+
112
+ ## 📄 License
113
+
114
+ IAToolkit is open-source software licensed under the **[MIT License](./LICENSE)**.
@@ -0,0 +1,71 @@
1
+ bcrypt==4.2.1
2
+ boto3==1.36.22
3
+ botocore==1.36.22
4
+ build==1.2.2.post1
5
+ click==8.1.8
6
+ cryptography==44.0.3
7
+ Flask==3.1.0
8
+ Flask-Bcrypt==1.0.1
9
+ flask-cors==6.0.0
10
+ Flask-Injector==0.15.0
11
+ Flask-Session==0.8.0
12
+ flatbuffers==24.3.25
13
+ google-ai-generativelanguage==0.6.15
14
+ google-api-core==2.24.1
15
+ google-api-python-client==2.161.0
16
+ google-auth==2.37.0
17
+ google-auth-httplib2==0.2.0
18
+ google-auth-oauthlib==1.2.1
19
+ google-cloud-core==2.4.1
20
+ google-cloud-storage==3.0.0
21
+ google-crc32c==1.6.0
22
+ google-generativeai==0.8.5
23
+ google-resumable-media==2.7.2
24
+ googleapis-common-protos==1.66.0
25
+ gunicorn==23.0.0
26
+ h11==0.14.0
27
+ httpcore==1.0.7
28
+ httplib2==0.22.0
29
+ httptools==0.6.4
30
+ httpx==0.28.0
31
+ httpx-sse==0.4.0
32
+ huggingface-hub==0.31.4
33
+ humanfriendly==10.0
34
+ idna==3.10
35
+ injector==0.22.0
36
+ Jinja2==3.1.5
37
+ langchain==0.3.19
38
+ langchain-core==0.3.35
39
+ langchain-text-splitters==0.3.6
40
+ markdown2==2.5.3
41
+ openai==1.79.0
42
+ openpyxl==3.1.5
43
+ pandas==2.3.1
44
+ pgvector==0.3.6
45
+ pillow==11.0.0
46
+ psutil==7.0.0
47
+ psycopg2-binary==2.9.10
48
+ PyJWT==2.10.1
49
+ PyMuPDF==1.25.0
50
+ python-dotenv==1.0.1
51
+ pytest==8.3.4
52
+ pytest-cov==5.0.0
53
+ pytest-mock==3.14.0
54
+ python-dateutil==2.9.0.post0
55
+ python-docx==1.1.2
56
+ pytesseract==0.3.13
57
+ pytz==2025.2
58
+ PyYAML==6.0.2
59
+ redis==5.2.1
60
+ regex==2024.11.6
61
+ requests==2.32.3
62
+ requests-oauthlib==2.0.0
63
+ requests-toolbelt==1.0.0
64
+ s3transfer==0.11.2
65
+ sib-api-v3-sdk==7.6.0
66
+ SQLAlchemy==2.0.36
67
+ tiktoken==0.8.0
68
+ tokenizers==0.21.0
69
+ websocket-client==1.8.0
70
+ websockets==14.1
71
+ Werkzeug==3.1.3
@@ -5,20 +5,18 @@ IAToolkit Package
5
5
  # Expose main classes and functions at the top level of the package
6
6
 
7
7
  # main IAToolkit class
8
- from .iatoolkit import IAToolkit, current_iatoolkit, create_app
8
+ from .iatoolkit import IAToolkit, create_app, current_iatoolkit
9
9
 
10
10
  # for registering the client companies
11
11
  from .company_registry import register_company
12
12
  from .base_company import BaseCompany
13
- from iatoolkit.repositories.database_manager import DatabaseManager
14
13
 
15
14
  # --- Services ---
16
15
  from iatoolkit.services.query_service import QueryService
17
- from iatoolkit.services.sql_service import SqlService
18
16
  from iatoolkit.services.document_service import DocumentService
19
17
  from iatoolkit.services.search_service import SearchService
18
+ from iatoolkit.services.sql_service import SqlService
20
19
  from iatoolkit.services.load_documents_service import LoadDocumentsService
21
- from iatoolkit.services.excel_service import ExcelService
22
20
  from iatoolkit.infra.call_service import CallServiceClient
23
21
 
24
22
  __all__ = [
@@ -27,10 +25,8 @@ __all__ = [
27
25
  'current_iatoolkit',
28
26
  'register_company',
29
27
  'BaseCompany',
30
- 'DatabaseManager',
31
28
  'QueryService',
32
29
  'SqlService',
33
- 'ExcelService',
34
30
  'DocumentService',
35
31
  'SearchService',
36
32
  'LoadDocumentsService',
@@ -7,10 +7,9 @@
7
7
  from abc import ABC, abstractmethod
8
8
  from iatoolkit.repositories.profile_repo import ProfileRepo
9
9
  from iatoolkit.repositories.llm_query_repo import LLMQueryRepo
10
-
11
10
  from iatoolkit.services.prompt_manager_service import PromptService
12
11
  from iatoolkit.repositories.models import Company, Function, PromptCategory
13
- from iatoolkit import IAToolkit
12
+ from .iatoolkit import IAToolkit
14
13
 
15
14
 
16
15
  class BaseCompany(ABC):
@@ -21,23 +20,16 @@ class BaseCompany(ABC):
21
20
  self.llm_query_repo: LLMQueryRepo = injector.get(LLMQueryRepo)
22
21
  self.prompt_service: PromptService = injector.get(PromptService)
23
22
  self.company: Company | None = None
24
-
25
- def _load_company_by_short_name(self, short_name: str) -> Company:
26
- self.company = self.profile_repo.get_company_by_short_name(short_name)
27
- return self.company
23
+ self.company_short_name: str
28
24
 
29
25
  def _create_company(self,
30
26
  short_name: str,
31
27
  name: str,
32
28
  parameters: dict | None = None,
33
- branding: dict | None = None,
34
- onboarding_cards: dict | None = None,
35
29
  ) -> Company:
36
30
  company_obj = Company(short_name=short_name,
37
31
  name=name,
38
- parameters=parameters,
39
- branding=branding,
40
- onboarding_cards=onboarding_cards)
32
+ parameters=parameters)
41
33
  self.company = self.profile_repo.create_company(company_obj)
42
34
  return self.company
43
35
 
@@ -77,17 +69,6 @@ class BaseCompany(ABC):
77
69
  **kwargs
78
70
  )
79
71
 
80
-
81
- @abstractmethod
82
- # initialize all the database tables needed
83
- def register_company(self):
84
- raise NotImplementedError("La subclase debe implementar el método create_company()")
85
-
86
- @abstractmethod
87
- # get context specific for this company
88
- def get_company_context(self, **kwargs) -> str:
89
- raise NotImplementedError("La subclase debe implementar el método get_company_context()")
90
-
91
72
  @abstractmethod
92
73
  # get context specific for this company
93
74
  def get_user_info(self, user_identifier: str) -> dict:
@@ -99,15 +80,6 @@ class BaseCompany(ABC):
99
80
  raise NotImplementedError("La subclase debe implementar el método handle_request()")
100
81
 
101
82
  @abstractmethod
102
- # get context specific for the query
103
- def start_execution(self):
104
- raise NotImplementedError("La subclase debe implementar el método start_execution()")
105
-
106
- @abstractmethod
107
- # get context specific for the query
108
- def get_metadata_from_filename(self, filename: str) -> dict:
109
- raise NotImplementedError("La subclase debe implementar el método get_query_context()")
110
-
111
83
  def register_cli_commands(self, app):
112
84
  """
113
85
  optional method for a company definition of it's cli commands
@@ -5,7 +5,7 @@
5
5
 
6
6
  import click
7
7
  import logging
8
- from iatoolkit import IAToolkit
8
+ from .iatoolkit import IAToolkit
9
9
  from iatoolkit.services.profile_service import ProfileService
10
10
 
11
11
  def register_core_commands(app):
@@ -17,26 +17,24 @@ def register_core_commands(app):
17
17
  """⚙️ Genera una nueva API key para una compañía ya registrada."""
18
18
  try:
19
19
  profile_service = IAToolkit.get_instance().get_injector().get(ProfileService)
20
- click.echo(f"🔑 Generando API key para '{company_short_name}'...")
20
+ click.echo(f"🔑 Generating API-KEY for company: '{company_short_name}'...")
21
21
  result = profile_service.new_api_key(company_short_name)
22
22
 
23
23
  if 'error' in result:
24
24
  click.echo(f"❌ Error: {result['error']}")
25
- click.echo("👉 Asegúrate de que el nombre de la compañía es correcto y está registrada.")
25
+ click.echo("👉 Make sure the company is registered and valid.")
26
26
  else:
27
- click.echo("✅ ¡Configuración lista! Agrega esta variable a tu entorno:")
27
+ click.echo("✅ ¡Api-key is ready! add this variable to your environment:")
28
28
  click.echo(f"IATOOLKIT_API_KEY='{result['api-key']}'")
29
29
  except Exception as e:
30
30
  logging.exception(e)
31
- click.echo(f"❌ Ocurrió un error inesperado durante la configuración: {e}")
31
+ click.echo(f"❌ unexpectd error during the configuration: {e}")
32
32
 
33
33
  @app.cli.command("encrypt-key")
34
34
  @click.argument("key")
35
35
  def encrypt_llm_api_key(key: str):
36
36
  from iatoolkit.common.util import Utility
37
37
 
38
-
39
-
40
38
  util = IAToolkit.get_instance().get_injector().get(Utility)
41
39
  try:
42
40
  encrypt_key = util.encrypt_key(key)
@@ -37,6 +37,7 @@ class IAToolkitException(Exception):
37
37
  LOAD_DOCUMENT_ERROR = 25
38
38
  INVALID_USER = 26
39
39
  VECTOR_STORE_ERROR = 27
40
+ EMBEDDING_ERROR = 28
40
41
 
41
42
 
42
43
 
@@ -20,13 +20,13 @@ def register_views(injector, app):
20
20
  from iatoolkit.views.verify_user_view import VerifyAccountView
21
21
  from iatoolkit.views.forgot_password_view import ForgotPasswordView
22
22
  from iatoolkit.views.change_password_view import ChangePasswordView
23
- from iatoolkit.views.file_store_api_view import FileStoreApiView
23
+ from iatoolkit.views.load_document_api_view import LoadDocumentApiView
24
24
  from iatoolkit.views.user_feedback_api_view import UserFeedbackApiView
25
25
  from iatoolkit.views.prompt_api_view import PromptApiView
26
26
  from iatoolkit.views.history_api_view import HistoryApiView
27
27
  from iatoolkit.views.help_content_api_view import HelpContentApiView
28
28
  from iatoolkit.views.profile_api_view import UserLanguageApiView # <-- Importa la nueva vista
29
-
29
+ from iatoolkit.views.embedding_api_view import EmbeddingApiView
30
30
  from iatoolkit.views.login_view import LoginView, FinalizeContextView
31
31
  from iatoolkit.views.external_login_view import ExternalLoginView, RedeemTokenApiView
32
32
  from iatoolkit.views.logout_api_view import LogoutApiView
@@ -97,7 +97,11 @@ def register_views(injector, app):
97
97
  app.add_url_rule('/tasks/review/<int:task_id>', view_func=TaskReviewApiView.as_view('tasks-review'))
98
98
 
99
99
  # this endpoint is for upload documents into the vector store (api-key)
100
- app.add_url_rule('/api/load', view_func=FileStoreApiView.as_view('load_api'))
100
+ app.add_url_rule('/api/load-document', view_func=LoadDocumentApiView.as_view('load-document'), methods=['POST'])
101
+
102
+ # this endpoint is for generating embeddings for a given text
103
+ app.add_url_rule('/<company_short_name>/api/embedding',
104
+ view_func=EmbeddingApiView.as_view('embedding_api'))
101
105
 
102
106
 
103
107
  @app.route('/download/<path:filename>')
@@ -343,6 +343,6 @@ class Utility:
343
343
 
344
344
  def is_gemini_model(self, model: str) -> bool:
345
345
  gemini_models = [
346
- 'gemini', 'gemini-2.5-pro'
346
+ 'gemini', 'gemini-2.5-pro', 'gemini-3'
347
347
  ]
348
348
  return any(gemini_model in model.lower() for gemini_model in gemini_models)
@@ -31,10 +31,9 @@ class CompanyRegistry:
31
31
 
32
32
  # save the created instance in the registry
33
33
  self._company_instances[company_key] = company_instance
34
- logging.info(f"company '{company_key}' instantiated")
35
34
 
36
35
  except Exception as e:
37
- logging.error(f"Error instanciando empresa {company_key}: {e}")
36
+ logging.error(f"Error while creating company instance for {company_key}: {e}")
38
37
  logging.exception(e)
39
38
  raise
40
39