iatoolkit 0.76.0__tar.gz → 0.108.1__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 (162) hide show
  1. iatoolkit-0.108.1/LICENSE_COMMUNITY.md +15 -0
  2. iatoolkit-0.108.1/PKG-INFO +268 -0
  3. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/pyproject.toml +2 -4
  4. iatoolkit-0.108.1/readme.md +184 -0
  5. iatoolkit-0.76.0/src/iatoolkit.egg-info/requires.txt → iatoolkit-0.108.1/requirements.txt +2 -1
  6. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/__init__.py +17 -5
  7. iatoolkit-0.108.1/src/iatoolkit/base_company.py +21 -0
  8. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/cli_commands.py +5 -15
  9. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/exceptions.py +1 -0
  10. iatoolkit-0.108.1/src/iatoolkit/common/interfaces/asset_storage.py +34 -0
  11. iatoolkit-0.108.1/src/iatoolkit/common/interfaces/database_provider.py +38 -0
  12. iatoolkit-0.108.1/src/iatoolkit/common/model_registry.py +159 -0
  13. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/routes.py +24 -31
  14. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/util.py +17 -12
  15. iatoolkit-0.108.1/src/iatoolkit/company_registry.py +116 -0
  16. iatoolkit-0.76.0/src/iatoolkit/iatoolkit.py → iatoolkit-0.108.1/src/iatoolkit/core.py +89 -58
  17. iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  18. iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +278 -0
  19. {iatoolkit-0.76.0/src/iatoolkit/infra → iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers}/gemini_adapter.py +11 -17
  20. {iatoolkit-0.76.0/src/iatoolkit/infra → iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers}/openai_adapter.py +41 -7
  21. iatoolkit-0.108.1/src/iatoolkit/infra/llm_proxy.py +268 -0
  22. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/llm_response.py +5 -0
  23. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/locales/en.yaml +61 -3
  24. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/locales/es.yaml +65 -2
  25. iatoolkit-0.108.1/src/iatoolkit/repositories/database_manager.py +185 -0
  26. iatoolkit-0.108.1/src/iatoolkit/repositories/filesystem_asset_repository.py +36 -0
  27. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/llm_query_repo.py +36 -22
  28. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/models.py +29 -82
  29. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/profile_repo.py +60 -3
  30. iatoolkit-0.108.1/src/iatoolkit/services/company_context_service.py +212 -0
  31. iatoolkit-0.108.1/src/iatoolkit/services/configuration_service.py +382 -0
  32. iatoolkit-0.108.1/src/iatoolkit/services/dispatcher_service.py +134 -0
  33. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/document_service.py +10 -1
  34. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/embedding_service.py +8 -4
  35. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/excel_service.py +49 -1
  36. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/history_manager_service.py +43 -24
  37. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/language_service.py +7 -1
  38. iatoolkit-0.108.1/src/iatoolkit/services/license_service.py +82 -0
  39. iatoolkit-0.76.0/src/iatoolkit/infra/llm_client.py → iatoolkit-0.108.1/src/iatoolkit/services/llm_client_service.py +40 -27
  40. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/profile_service.py +39 -25
  41. iatoolkit-0.76.0/src/iatoolkit/services/prompt_manager_service.py → iatoolkit-0.108.1/src/iatoolkit/services/prompt_service.py +136 -25
  42. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/query_service.py +63 -44
  43. iatoolkit-0.108.1/src/iatoolkit/services/sql_service.py +174 -0
  44. iatoolkit-0.108.1/src/iatoolkit/services/tool_service.py +246 -0
  45. iatoolkit-0.108.1/src/iatoolkit/services/user_session_context_service.py +213 -0
  46. iatoolkit-0.108.1/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  47. iatoolkit-0.108.1/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  48. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_feedback_button.js +1 -1
  49. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_help_content.js +4 -4
  50. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_main.js +44 -5
  51. iatoolkit-0.108.1/src/iatoolkit/static/js/chat_model_selector.js +227 -0
  52. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_onboarding_button.js +1 -1
  53. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_reload_button.js +4 -1
  54. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/chat_iatoolkit.css +58 -2
  55. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/chat_public.css +28 -0
  56. iatoolkit-0.108.1/src/iatoolkit/static/styles/documents.css +598 -0
  57. iatoolkit-0.108.1/src/iatoolkit/static/styles/landing_page.css +398 -0
  58. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/llm_output.css +34 -1
  59. iatoolkit-0.108.1/src/iatoolkit/system_prompts/__init__.py +0 -0
  60. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/system_prompts/query_main.prompt +27 -2
  61. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/system_prompts/sql_rules.prompt +47 -12
  62. iatoolkit-0.108.1/src/iatoolkit/templates/_company_header.html +45 -0
  63. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/_login_widget.html +3 -3
  64. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/base.html +13 -0
  65. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/chat.html +45 -3
  66. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/forgot_password.html +3 -2
  67. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/onboarding_shell.html +1 -2
  68. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/signup.html +3 -0
  69. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/base_login_view.py +8 -3
  70. iatoolkit-0.108.1/src/iatoolkit/views/chat_view.py +76 -0
  71. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/forgot_password_view.py +5 -2
  72. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/home_view.py +4 -2
  73. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/init_context_api_view.py +1 -1
  74. iatoolkit-0.108.1/src/iatoolkit/views/load_company_configuration_api_view.py +49 -0
  75. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/login_view.py +25 -8
  76. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/logout_api_view.py +10 -2
  77. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/prompt_api_view.py +1 -1
  78. iatoolkit-0.108.1/src/iatoolkit/views/root_redirect_view.py +22 -0
  79. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/signup_view.py +11 -3
  80. iatoolkit-0.108.1/src/iatoolkit/views/static_page_view.py +27 -0
  81. iatoolkit-0.108.1/src/iatoolkit/views/users_api_view.py +33 -0
  82. iatoolkit-0.108.1/src/iatoolkit.egg-info/PKG-INFO +268 -0
  83. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit.egg-info/SOURCES.txt +24 -15
  84. iatoolkit-0.76.0/requirements.txt → iatoolkit-0.108.1/src/iatoolkit.egg-info/requires.txt +3 -2
  85. iatoolkit-0.76.0/PKG-INFO +0 -196
  86. iatoolkit-0.76.0/readme.md +0 -114
  87. iatoolkit-0.76.0/src/iatoolkit/base_company.py +0 -91
  88. iatoolkit-0.76.0/src/iatoolkit/company_registry.py +0 -75
  89. iatoolkit-0.76.0/src/iatoolkit/infra/llm_proxy.py +0 -167
  90. iatoolkit-0.76.0/src/iatoolkit/repositories/database_manager.py +0 -115
  91. iatoolkit-0.76.0/src/iatoolkit/repositories/tasks_repo.py +0 -52
  92. iatoolkit-0.76.0/src/iatoolkit/services/company_context_service.py +0 -155
  93. iatoolkit-0.76.0/src/iatoolkit/services/configuration_service.py +0 -269
  94. iatoolkit-0.76.0/src/iatoolkit/services/dispatcher_service.py +0 -308
  95. iatoolkit-0.76.0/src/iatoolkit/services/sql_service.py +0 -92
  96. iatoolkit-0.76.0/src/iatoolkit/services/tasks_service.py +0 -188
  97. iatoolkit-0.76.0/src/iatoolkit/services/user_session_context_service.py +0 -161
  98. iatoolkit-0.76.0/src/iatoolkit/static/styles/landing_page.css +0 -182
  99. iatoolkit-0.76.0/src/iatoolkit/templates/_company_header.html +0 -20
  100. iatoolkit-0.76.0/src/iatoolkit/templates/about.html +0 -13
  101. iatoolkit-0.76.0/src/iatoolkit/templates/index.html +0 -145
  102. iatoolkit-0.76.0/src/iatoolkit/templates/login_simulation.html +0 -45
  103. iatoolkit-0.76.0/src/iatoolkit/views/external_login_view.py +0 -73
  104. iatoolkit-0.76.0/src/iatoolkit/views/index_view.py +0 -14
  105. iatoolkit-0.76.0/src/iatoolkit/views/login_simulation_view.py +0 -96
  106. iatoolkit-0.76.0/src/iatoolkit/views/tasks_api_view.py +0 -72
  107. iatoolkit-0.76.0/src/iatoolkit/views/tasks_review_api_view.py +0 -55
  108. iatoolkit-0.76.0/src/iatoolkit.egg-info/PKG-INFO +0 -196
  109. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/LICENSE +0 -0
  110. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/setup.cfg +0 -0
  111. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/__init__.py +0 -0
  112. {iatoolkit-0.76.0/src/iatoolkit/system_prompts → iatoolkit-0.108.1/src/iatoolkit/common/interfaces}/__init__.py +0 -0
  113. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/session_manager.py +0 -0
  114. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/__init__.py +0 -0
  115. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  116. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/call_service.py +0 -0
  117. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  118. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  119. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  120. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  121. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  122. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  123. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  124. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/google_chat_app.py +0 -0
  125. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  126. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/__init__.py +0 -0
  127. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/document_repo.py +0 -0
  128. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/vs_repo.py +0 -0
  129. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/__init__.py +0 -0
  130. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/auth_service.py +0 -0
  131. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/benchmark_service.py +0 -0
  132. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/branding_service.py +0 -0
  133. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/file_processor_service.py +0 -0
  134. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/i18n_service.py +0 -0
  135. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/jwt_service.py +0 -0
  136. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/load_documents_service.py +0 -0
  137. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/mail_service.py +0 -0
  138. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/search_service.py +0 -0
  139. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/user_feedback_service.py +0 -0
  140. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  141. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  142. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  143. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  144. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  145. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  146. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/onboarding.css +0 -0
  147. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  148. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/change_password.html +0 -0
  149. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/chat_modals.html +0 -0
  150. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/error.html +0 -0
  151. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/__init__.py +0 -0
  152. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/change_password_view.py +0 -0
  153. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/embedding_api_view.py +0 -0
  154. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/help_content_api_view.py +0 -0
  155. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/history_api_view.py +0 -0
  156. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  157. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/load_document_api_view.py +0 -0
  158. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/profile_api_view.py +0 -0
  159. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  160. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/verify_user_view.py +0 -0
  161. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  162. {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -0,0 +1,15 @@
1
+ # IAToolkit Community Edition License
2
+
3
+ The IAToolkit Community Edition is licensed under the MIT License.
4
+
5
+ This edition includes the full open-source IAToolkit Core, with the following usage scope:
6
+
7
+ - Support for **one (1) Company**
8
+ - Unlimited Tools within that Company
9
+ - SQL integration
10
+ - Basic RAG (standard retrieval & embeddings)
11
+ - All Components of the open-source Intelligence Layer and Interfaces
12
+
13
+ No additional technical limits apply beyond the single-Company constraint.
14
+
15
+ This edition is designed for learning, prototyping, and single-business deployments.
@@ -0,0 +1,268 @@
1
+ Metadata-Version: 2.4
2
+ Name: iatoolkit
3
+ Version: 0.108.1
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
+ License-File: LICENSE_COMMUNITY.md
11
+ Requires-Dist: bcrypt==4.2.1
12
+ Requires-Dist: boto3==1.36.22
13
+ Requires-Dist: botocore==1.36.22
14
+ Requires-Dist: build==1.2.2.post1
15
+ Requires-Dist: click==8.1.8
16
+ Requires-Dist: cryptography==44.0.3
17
+ Requires-Dist: Flask==3.1.0
18
+ Requires-Dist: Flask-Bcrypt==1.0.1
19
+ Requires-Dist: flask-cors==6.0.0
20
+ Requires-Dist: Flask-Injector==0.15.0
21
+ Requires-Dist: Flask-Session==0.8.0
22
+ Requires-Dist: flatbuffers==24.3.25
23
+ Requires-Dist: google-ai-generativelanguage==0.6.15
24
+ Requires-Dist: google-api-core==2.24.1
25
+ Requires-Dist: google-api-python-client==2.161.0
26
+ Requires-Dist: google-auth==2.37.0
27
+ Requires-Dist: google-auth-httplib2==0.2.0
28
+ Requires-Dist: google-auth-oauthlib==1.2.1
29
+ Requires-Dist: google-cloud-core==2.4.1
30
+ Requires-Dist: google-cloud-storage==3.0.0
31
+ Requires-Dist: google-crc32c==1.6.0
32
+ Requires-Dist: google-generativeai==0.8.5
33
+ Requires-Dist: google-resumable-media==2.7.2
34
+ Requires-Dist: googleapis-common-protos==1.66.0
35
+ Requires-Dist: gunicorn==23.0.0
36
+ Requires-Dist: h11==0.14.0
37
+ Requires-Dist: httpcore==1.0.7
38
+ Requires-Dist: httplib2==0.22.0
39
+ Requires-Dist: httptools==0.6.4
40
+ Requires-Dist: httpx==0.28.0
41
+ Requires-Dist: httpx-sse==0.4.0
42
+ Requires-Dist: huggingface-hub==0.31.4
43
+ Requires-Dist: humanfriendly==10.0
44
+ Requires-Dist: idna==3.10
45
+ Requires-Dist: injector==0.22.0
46
+ Requires-Dist: Jinja2==3.1.5
47
+ Requires-Dist: langchain==0.3.19
48
+ Requires-Dist: langchain-core==0.3.35
49
+ Requires-Dist: langchain-text-splitters==0.3.6
50
+ Requires-Dist: markdown2==2.5.3
51
+ Requires-Dist: openai==2.8.1
52
+ Requires-Dist: openpyxl==3.1.5
53
+ Requires-Dist: pandas==2.3.1
54
+ Requires-Dist: pgvector==0.3.6
55
+ Requires-Dist: pillow==11.0.0
56
+ Requires-Dist: psutil==7.0.0
57
+ Requires-Dist: psycopg2-binary==2.9.10
58
+ Requires-Dist: PyJWT==2.10.1
59
+ Requires-Dist: PyMuPDF==1.25.0
60
+ Requires-Dist: python-dotenv==1.0.1
61
+ Requires-Dist: pytest==8.3.4
62
+ Requires-Dist: pytest-cov==5.0.0
63
+ Requires-Dist: pytest-mock==3.14.0
64
+ Requires-Dist: python-dateutil==2.9.0.post0
65
+ Requires-Dist: python-docx==1.1.2
66
+ Requires-Dist: pytesseract==0.3.13
67
+ Requires-Dist: pytz==2025.2
68
+ Requires-Dist: PyYAML==6.0.2
69
+ Requires-Dist: redis==5.2.1
70
+ Requires-Dist: regex==2024.11.6
71
+ Requires-Dist: requests==2.32.3
72
+ Requires-Dist: requests-oauthlib==2.0.0
73
+ Requires-Dist: requests-toolbelt==1.0.0
74
+ Requires-Dist: s3transfer==0.11.2
75
+ Requires-Dist: sib-api-v3-sdk==7.6.0
76
+ Requires-Dist: SQLAlchemy==2.0.36
77
+ Requires-Dist: tiktoken==0.8.0
78
+ Requires-Dist: tokenizers==0.21.0
79
+ Requires-Dist: websocket-client==1.8.0
80
+ Requires-Dist: websockets==14.1
81
+ Requires-Dist: Werkzeug==3.1.3
82
+ Requires-Dist: pyjwt[crypto]>=2.8.0
83
+ Dynamic: license-file
84
+
85
+ # 🧠 IAToolkit — Open-Source Framework for Real-World AI Assistants
86
+
87
+ Build private, production-grade AI assistants that run entirely inside your environment and speak the language of your business.
88
+
89
+ IAToolkit is not a demo wrapper or a prompt playground — it is a **full architecture** for implementing intelligent systems that combine LLMs, SQL data, internal documents, tools, workflows, and multi-tenant business logic.
90
+
91
+ ---
92
+
93
+ ## 🚀 Why IAToolkit?
94
+
95
+ Modern AI development is fragmented: LangChain handles chains, LlamaIndex handles documents,
96
+ your backend handles SQL, your frontend handles chats, and your devs glue everything together.
97
+
98
+ **IAToolkit brings all of this into one unified, production-ready framework.**
99
+
100
+ It focuses on:
101
+
102
+ - **real-world data** (SQL + documents)
103
+ - **real workflows** (LLM tools + python services)
104
+ - **real multi-tenant architecture** (1 company → many companies)
105
+ - **real constraints** (security, reproducibility, governance)
106
+ - **real deployment** (your servers, your infrastructure)
107
+
108
+ IAToolkit lets you build the assistant that *your* organization needs — not a generic chatbot.
109
+
110
+ ---
111
+
112
+ ## 🧩 Architecture in a Nutshell
113
+
114
+ IAToolkit is a structured, layered framework:
115
+
116
+ Interfaces (Web & API)
117
+
118
+ Intelligence Layer (prompts, tools, SQL orchestration, RAG)
119
+
120
+ Execution Layer (services, workflows, validation)
121
+
122
+ Data Access (SQLAlchemy, connectors)
123
+
124
+ Company Modules (company.yaml + custom tools)
125
+
126
+ ### ✔ Interfaces
127
+ Chat UI, REST API, auth, sessions, JSON/HTML responses.
128
+
129
+ ### ✔ Intelligence Layer
130
+ Core logic: prompt rendering, SQL orchestration, RAG, LLM tool dispatching.
131
+
132
+ ### ✔ Execution Layer
133
+ Python services that implement real workflows: querying data, generating reports, retrieving documents, executing business logic.
134
+
135
+ ### ✔ Data Access
136
+ A clean repository pattern using SQLAlchemy.
137
+
138
+ ### ✔ Company Modules
139
+ Each company has:
140
+
141
+ - its own `company.yaml`
142
+ - its own prompts
143
+ - its own tools
144
+ - its own services
145
+ - its own vector store & SQL context
146
+
147
+ This modularity allows **true multi-tenancy**.
148
+
149
+ ---
150
+
151
+ ## 🔌 Connect to Anything
152
+
153
+ IAToolkit integrates naturally with:
154
+
155
+ - **SQL databases** (PostgreSQL, MySQL, SQL Server, etc.)
156
+ - **Document retrieval** (PDF, text, embeddings)
157
+ - **External APIs**
158
+ - **Internal microservices**
159
+ - **Custom Python tools**
160
+
161
+ It also includes a **production-grade RAG pipeline**, combining:
162
+
163
+ - embeddings
164
+ - chunking
165
+ - hybrid search
166
+ - SQL queries + document retrieval
167
+ - tool execution
168
+
169
+ Everything orchestrated through the Intelligence Layer.
170
+
171
+ ---
172
+
173
+ ## 🏢 Multi-Tenant Architecture
174
+
175
+ A single installation of IAToolkit can power assistants for multiple companies, departments, or customers.
176
+ ```text
177
+ companies/
178
+ company_a
179
+ company_b
180
+ company_c
181
+ ```
182
+ Each Company is fully isolated:
183
+
184
+ - prompts
185
+ - tools
186
+ - credentials
187
+ - documents
188
+ - SQL contexts
189
+ - business rules
190
+
191
+ This makes IAToolkit ideal for SaaS products, agencies, consultancies, and organizations with multiple business units.
192
+
193
+ ---
194
+
195
+ ## 🆓 Community Edition vs Enterprise Edition
196
+
197
+ IAToolkit follows a modern **open-core** model:
198
+
199
+ ### 🟦 Community Edition (MIT License)
200
+ - Full Open-Source Core
201
+ - SQL + Basic RAG
202
+ - One Company
203
+ - Custom Python tools
204
+ - Self-managed deployment
205
+
206
+ Perfect for developers, small teams, single-business use cases, and experimentation.
207
+
208
+ ### 🟥 Enterprise Edition (Commercial License)
209
+ - Unlimited Companies (multi-tenant)
210
+ - Payment services integration
211
+ - Enterprise Agent Workflows
212
+ - SSO integration
213
+ - Priority support & continuous updates
214
+ - Activation via **License Key**
215
+
216
+ 👉 Licensing information:
217
+ - [Community Edition (MIT)](LICENSE_COMMUNITY.md)
218
+ - [Enterprise License](ENTERPRISE_LICENSE.md)
219
+
220
+ ---
221
+
222
+ ## 🧩 Who Is IAToolkit For?
223
+
224
+ - Companies building internal “ChatGPT for the business”
225
+ - SaaS products adding AI assistants for multiple customers
226
+ - AI teams that need reproducible prompts and controlled tools
227
+ - Developers who want real workflows, not toy demos
228
+ - Organizations requiring privacy, security, and self-hosting
229
+ - Teams working with SQL-heavy business logic
230
+ - Consultancies deploying AI for multiple clients
231
+
232
+ ---
233
+
234
+ ## ⭐ Key Differentiators
235
+
236
+ - prioritizes **architecture-first design**, not chains or wrappers
237
+ - supports **multi-company** out of the box
238
+ - integrates **SQL, RAG, and tools** into a single intelligence layer
239
+ - keeps **business logic isolated** inside Company modules
240
+ - runs entirely **on your own infrastructure**
241
+ - ships with a **full web chat**, and API.
242
+ - is built for **production**, not prototypes
243
+
244
+ ---
245
+
246
+ ## 📚 Documentation
247
+
248
+ - 🚀 **[Quickstart](docs/quickstart.md)** – Set up your environment and run the project
249
+ - ☁️ **[Deployment Guide](docs/deployment_guide.md)** – Production deployment instructions
250
+ - 🏗️ **[Companies & Components](docs/companies_and_components.md)** – how Company modules work
251
+ - 🧠 **[Programming Guide](docs/programming_guide.md)** – services, intelligence layer, dispatching
252
+ - 🗃️ **[Database Guide](docs/database_guide.md)** – internal schema overview
253
+ - 🌱 **[Foundation Article](https://iatoolkit.com/pages/foundation)** – the “Why” behind the architecture
254
+ - 📘 **[Mini-Project (3 months)](https://iatoolkit.com/pages/mini_project)** – how to deploy a corporate AI assistant
255
+
256
+
257
+ ---
258
+
259
+ ## 🤝 Contributing
260
+
261
+ IAToolkit is open-source and community-friendly.
262
+ PRs, issues, ideas, and feedback are always welcome.
263
+
264
+ ---
265
+
266
+ ## ⭐ Support the Project
267
+
268
+ If you find IAToolkit useful, please **star the GitHub repo** — it helps visibility and adoption.
@@ -4,16 +4,13 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- version = "0.76.0"
7
+ dynamic = ["version", "dependencies"]
8
8
  requires-python = ">=3.12"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
11
11
  license = "MIT"
12
12
  authors = [{ name = "Fernando Libedinsky" }]
13
13
 
14
- # Si quieres seguir leyendo deps de requirements.txt:
15
- dynamic = ["dependencies"]
16
-
17
14
  [tool.setuptools]
18
15
  package-dir = {"" = "src"}
19
16
 
@@ -23,6 +20,7 @@ exclude = ["tests*", "*/tests*"]
23
20
 
24
21
 
25
22
  [tool.setuptools.dynamic]
23
+ version = { attr = "iatoolkit.__version__" }
26
24
  dependencies = { file = ["requirements.txt"] }
27
25
 
28
26
  [tool.setuptools.package-data]
@@ -0,0 +1,184 @@
1
+ # 🧠 IAToolkit — Open-Source Framework for Real-World AI Assistants
2
+
3
+ Build private, production-grade AI assistants that run entirely inside your environment and speak the language of your business.
4
+
5
+ IAToolkit is not a demo wrapper or a prompt playground — it is a **full architecture** for implementing intelligent systems that combine LLMs, SQL data, internal documents, tools, workflows, and multi-tenant business logic.
6
+
7
+ ---
8
+
9
+ ## 🚀 Why IAToolkit?
10
+
11
+ Modern AI development is fragmented: LangChain handles chains, LlamaIndex handles documents,
12
+ your backend handles SQL, your frontend handles chats, and your devs glue everything together.
13
+
14
+ **IAToolkit brings all of this into one unified, production-ready framework.**
15
+
16
+ It focuses on:
17
+
18
+ - **real-world data** (SQL + documents)
19
+ - **real workflows** (LLM tools + python services)
20
+ - **real multi-tenant architecture** (1 company → many companies)
21
+ - **real constraints** (security, reproducibility, governance)
22
+ - **real deployment** (your servers, your infrastructure)
23
+
24
+ IAToolkit lets you build the assistant that *your* organization needs — not a generic chatbot.
25
+
26
+ ---
27
+
28
+ ## 🧩 Architecture in a Nutshell
29
+
30
+ IAToolkit is a structured, layered framework:
31
+
32
+ Interfaces (Web & API)
33
+
34
+ Intelligence Layer (prompts, tools, SQL orchestration, RAG)
35
+
36
+ Execution Layer (services, workflows, validation)
37
+
38
+ Data Access (SQLAlchemy, connectors)
39
+
40
+ Company Modules (company.yaml + custom tools)
41
+
42
+ ### ✔ Interfaces
43
+ Chat UI, REST API, auth, sessions, JSON/HTML responses.
44
+
45
+ ### ✔ Intelligence Layer
46
+ Core logic: prompt rendering, SQL orchestration, RAG, LLM tool dispatching.
47
+
48
+ ### ✔ Execution Layer
49
+ Python services that implement real workflows: querying data, generating reports, retrieving documents, executing business logic.
50
+
51
+ ### ✔ Data Access
52
+ A clean repository pattern using SQLAlchemy.
53
+
54
+ ### ✔ Company Modules
55
+ Each company has:
56
+
57
+ - its own `company.yaml`
58
+ - its own prompts
59
+ - its own tools
60
+ - its own services
61
+ - its own vector store & SQL context
62
+
63
+ This modularity allows **true multi-tenancy**.
64
+
65
+ ---
66
+
67
+ ## 🔌 Connect to Anything
68
+
69
+ IAToolkit integrates naturally with:
70
+
71
+ - **SQL databases** (PostgreSQL, MySQL, SQL Server, etc.)
72
+ - **Document retrieval** (PDF, text, embeddings)
73
+ - **External APIs**
74
+ - **Internal microservices**
75
+ - **Custom Python tools**
76
+
77
+ It also includes a **production-grade RAG pipeline**, combining:
78
+
79
+ - embeddings
80
+ - chunking
81
+ - hybrid search
82
+ - SQL queries + document retrieval
83
+ - tool execution
84
+
85
+ Everything orchestrated through the Intelligence Layer.
86
+
87
+ ---
88
+
89
+ ## 🏢 Multi-Tenant Architecture
90
+
91
+ A single installation of IAToolkit can power assistants for multiple companies, departments, or customers.
92
+ ```text
93
+ companies/
94
+ company_a
95
+ company_b
96
+ company_c
97
+ ```
98
+ Each Company is fully isolated:
99
+
100
+ - prompts
101
+ - tools
102
+ - credentials
103
+ - documents
104
+ - SQL contexts
105
+ - business rules
106
+
107
+ This makes IAToolkit ideal for SaaS products, agencies, consultancies, and organizations with multiple business units.
108
+
109
+ ---
110
+
111
+ ## 🆓 Community Edition vs Enterprise Edition
112
+
113
+ IAToolkit follows a modern **open-core** model:
114
+
115
+ ### 🟦 Community Edition (MIT License)
116
+ - Full Open-Source Core
117
+ - SQL + Basic RAG
118
+ - One Company
119
+ - Custom Python tools
120
+ - Self-managed deployment
121
+
122
+ Perfect for developers, small teams, single-business use cases, and experimentation.
123
+
124
+ ### 🟥 Enterprise Edition (Commercial License)
125
+ - Unlimited Companies (multi-tenant)
126
+ - Payment services integration
127
+ - Enterprise Agent Workflows
128
+ - SSO integration
129
+ - Priority support & continuous updates
130
+ - Activation via **License Key**
131
+
132
+ 👉 Licensing information:
133
+ - [Community Edition (MIT)](LICENSE_COMMUNITY.md)
134
+ - [Enterprise License](ENTERPRISE_LICENSE.md)
135
+
136
+ ---
137
+
138
+ ## 🧩 Who Is IAToolkit For?
139
+
140
+ - Companies building internal “ChatGPT for the business”
141
+ - SaaS products adding AI assistants for multiple customers
142
+ - AI teams that need reproducible prompts and controlled tools
143
+ - Developers who want real workflows, not toy demos
144
+ - Organizations requiring privacy, security, and self-hosting
145
+ - Teams working with SQL-heavy business logic
146
+ - Consultancies deploying AI for multiple clients
147
+
148
+ ---
149
+
150
+ ## ⭐ Key Differentiators
151
+
152
+ - prioritizes **architecture-first design**, not chains or wrappers
153
+ - supports **multi-company** out of the box
154
+ - integrates **SQL, RAG, and tools** into a single intelligence layer
155
+ - keeps **business logic isolated** inside Company modules
156
+ - runs entirely **on your own infrastructure**
157
+ - ships with a **full web chat**, and API.
158
+ - is built for **production**, not prototypes
159
+
160
+ ---
161
+
162
+ ## 📚 Documentation
163
+
164
+ - 🚀 **[Quickstart](docs/quickstart.md)** – Set up your environment and run the project
165
+ - ☁️ **[Deployment Guide](docs/deployment_guide.md)** – Production deployment instructions
166
+ - 🏗️ **[Companies & Components](docs/companies_and_components.md)** – how Company modules work
167
+ - 🧠 **[Programming Guide](docs/programming_guide.md)** – services, intelligence layer, dispatching
168
+ - 🗃️ **[Database Guide](docs/database_guide.md)** – internal schema overview
169
+ - 🌱 **[Foundation Article](https://iatoolkit.com/pages/foundation)** – the “Why” behind the architecture
170
+ - 📘 **[Mini-Project (3 months)](https://iatoolkit.com/pages/mini_project)** – how to deploy a corporate AI assistant
171
+
172
+
173
+ ---
174
+
175
+ ## 🤝 Contributing
176
+
177
+ IAToolkit is open-source and community-friendly.
178
+ PRs, issues, ideas, and feedback are always welcome.
179
+
180
+ ---
181
+
182
+ ## ⭐ Support the Project
183
+
184
+ If you find IAToolkit useful, please **star the GitHub repo** — it helps visibility and adoption.
@@ -38,7 +38,7 @@ langchain==0.3.19
38
38
  langchain-core==0.3.35
39
39
  langchain-text-splitters==0.3.6
40
40
  markdown2==2.5.3
41
- openai==1.79.0
41
+ openai==2.8.1
42
42
  openpyxl==3.1.5
43
43
  pandas==2.3.1
44
44
  pgvector==0.3.6
@@ -69,3 +69,4 @@ tokenizers==0.21.0
69
69
  websocket-client==1.8.0
70
70
  websockets==14.1
71
71
  Werkzeug==3.1.3
72
+ pyjwt[crypto]>=2.8.0
@@ -1,14 +1,17 @@
1
- """
2
- IAToolkit Package
3
- """
1
+ # Copyright (c) 2024 Fernando Libedinsky
2
+ # Product: IAToolkit
3
+ #
4
+ # IAToolkit is open source software.
5
+
6
+ __version__ = "0.108.1"
4
7
 
5
8
  # Expose main classes and functions at the top level of the package
6
9
 
7
10
  # main IAToolkit class
8
- from .iatoolkit import IAToolkit, create_app, current_iatoolkit
11
+ from iatoolkit.core import IAToolkit, create_app, current_iatoolkit
9
12
 
10
13
  # for registering the client companies
11
- from .company_registry import register_company
14
+ from .company_registry import register_company, set_company_registry
12
15
  from .base_company import BaseCompany
13
16
 
14
17
  # --- Services ---
@@ -18,12 +21,17 @@ from iatoolkit.services.search_service import SearchService
18
21
  from iatoolkit.services.sql_service import SqlService
19
22
  from iatoolkit.services.load_documents_service import LoadDocumentsService
20
23
  from iatoolkit.infra.call_service import CallServiceClient
24
+ from iatoolkit.services.profile_service import ProfileService
25
+ from iatoolkit.services.mail_service import MailService
26
+ from iatoolkit.repositories.models import Base as OrmModel
27
+ from iatoolkit.base_company import BaseCompany
21
28
 
22
29
  __all__ = [
23
30
  'IAToolkit',
24
31
  'create_app',
25
32
  'current_iatoolkit',
26
33
  'register_company',
34
+ 'set_company_registry',
27
35
  'BaseCompany',
28
36
  'QueryService',
29
37
  'SqlService',
@@ -31,4 +39,8 @@ __all__ = [
31
39
  'SearchService',
32
40
  'LoadDocumentsService',
33
41
  'CallServiceClient',
42
+ 'ProfileService',
43
+ 'MailService',
44
+ 'OrmModel',
45
+ 'BaseCompany',
34
46
  ]
@@ -0,0 +1,21 @@
1
+ # Copyright (c) 2024 Fernando Libedinsky
2
+ # Product: IAToolkit
3
+ #
4
+ # IAToolkit is open source software.
5
+
6
+ # companies/base_company.py
7
+ from abc import ABC, abstractmethod
8
+
9
+ class BaseCompany(ABC):
10
+
11
+ @abstractmethod
12
+ # execute the specific action configured in the intent table
13
+ def handle_request(self, tag: str, params: dict) -> dict:
14
+ raise NotImplementedError("La subclase debe implementar el método handle_request()")
15
+
16
+ @abstractmethod
17
+ def register_cli_commands(self, app):
18
+ pass
19
+
20
+ def unsupported_operation(self, tag):
21
+ raise NotImplementedError(f"La operación '{tag}' no está soportada por esta empresa.")
@@ -5,20 +5,22 @@
5
5
 
6
6
  import click
7
7
  import logging
8
- from .iatoolkit import IAToolkit
8
+ from iatoolkit.core import IAToolkit
9
9
  from iatoolkit.services.profile_service import ProfileService
10
10
 
11
+
11
12
  def register_core_commands(app):
12
13
  """Registra los comandos CLI del núcleo de IAToolkit."""
13
14
 
14
15
  @app.cli.command("api-key")
15
16
  @click.argument("company_short_name")
16
- def api_key(company_short_name: str):
17
+ @click.argument("key_name")
18
+ def api_key(company_short_name: str, key_name: str):
17
19
  """⚙️ Genera una nueva API key para una compañía ya registrada."""
18
20
  try:
19
21
  profile_service = IAToolkit.get_instance().get_injector().get(ProfileService)
20
22
  click.echo(f"🔑 Generating API-KEY for company: '{company_short_name}'...")
21
- result = profile_service.new_api_key(company_short_name)
23
+ result = profile_service.new_api_key(company_short_name, key_name)
22
24
 
23
25
  if 'error' in result:
24
26
  click.echo(f"❌ Error: {result['error']}")
@@ -43,17 +45,5 @@ def register_core_commands(app):
43
45
  logging.exception(e)
44
46
  click.echo(f"Error: {str(e)}")
45
47
 
46
- @app.cli.command("exec-tasks")
47
- @click.argument("company_short_name")
48
- def exec_pending_tasks(company_short_name: str):
49
- from iatoolkit.services.tasks_service import TaskService
50
- task_service = IAToolkit.get_instance().get_injector().get(TaskService)
51
-
52
- try:
53
- result = task_service.trigger_pending_tasks(company_short_name)
54
- click.echo(result['message'])
55
- except Exception as e:
56
- logging.exception(e)
57
- click.echo(f"Error: {str(e)}")
58
48
 
59
49
 
@@ -38,6 +38,7 @@ class IAToolkitException(Exception):
38
38
  INVALID_USER = 26
39
39
  VECTOR_STORE_ERROR = 27
40
40
  EMBEDDING_ERROR = 28
41
+ MODEL = 29
41
42
 
42
43
 
43
44
 
@@ -0,0 +1,34 @@
1
+ from enum import Enum
2
+ from typing import List
3
+ import abc
4
+
5
+
6
+ class AssetType(Enum):
7
+ CONFIG = "config"
8
+ PROMPT = "prompts"
9
+ SCHEMA = "schema"
10
+ CONTEXT = "context"
11
+
12
+
13
+ class AssetRepository(abc.ABC):
14
+ @abc.abstractmethod
15
+ def exists(self, company_short_name: str, asset_type: AssetType, filename: str) -> bool:
16
+ pass
17
+
18
+ @abc.abstractmethod
19
+ def read_text(self, company_short_name: str, asset_type: AssetType, filename: str) -> str:
20
+ pass
21
+
22
+ @abc.abstractmethod
23
+ def list_files(self, company_short_name: str, asset_type: AssetType, extension: str = None) -> List[str]:
24
+ pass
25
+
26
+ @abc.abstractmethod
27
+ def write_text(self, company_short_name: str, asset_type: AssetType, filename: str, content: str) -> None:
28
+ """Creates or updates a text asset."""
29
+ pass
30
+
31
+ @abc.abstractmethod
32
+ def delete(self, company_short_name: str, asset_type: AssetType, filename: str) -> None:
33
+ """Deletes an asset if it exists."""
34
+ pass