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.
- iatoolkit-0.108.1/LICENSE_COMMUNITY.md +15 -0
- iatoolkit-0.108.1/PKG-INFO +268 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/pyproject.toml +2 -4
- iatoolkit-0.108.1/readme.md +184 -0
- iatoolkit-0.76.0/src/iatoolkit.egg-info/requires.txt → iatoolkit-0.108.1/requirements.txt +2 -1
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/__init__.py +17 -5
- iatoolkit-0.108.1/src/iatoolkit/base_company.py +21 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/cli_commands.py +5 -15
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/exceptions.py +1 -0
- iatoolkit-0.108.1/src/iatoolkit/common/interfaces/asset_storage.py +34 -0
- iatoolkit-0.108.1/src/iatoolkit/common/interfaces/database_provider.py +38 -0
- iatoolkit-0.108.1/src/iatoolkit/common/model_registry.py +159 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/routes.py +24 -31
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/util.py +17 -12
- iatoolkit-0.108.1/src/iatoolkit/company_registry.py +116 -0
- iatoolkit-0.76.0/src/iatoolkit/iatoolkit.py → iatoolkit-0.108.1/src/iatoolkit/core.py +89 -58
- iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +278 -0
- {iatoolkit-0.76.0/src/iatoolkit/infra → iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers}/gemini_adapter.py +11 -17
- {iatoolkit-0.76.0/src/iatoolkit/infra → iatoolkit-0.108.1/src/iatoolkit/infra/llm_providers}/openai_adapter.py +41 -7
- iatoolkit-0.108.1/src/iatoolkit/infra/llm_proxy.py +268 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/llm_response.py +5 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/locales/en.yaml +61 -3
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/locales/es.yaml +65 -2
- iatoolkit-0.108.1/src/iatoolkit/repositories/database_manager.py +185 -0
- iatoolkit-0.108.1/src/iatoolkit/repositories/filesystem_asset_repository.py +36 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/llm_query_repo.py +36 -22
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/models.py +29 -82
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/profile_repo.py +60 -3
- iatoolkit-0.108.1/src/iatoolkit/services/company_context_service.py +212 -0
- iatoolkit-0.108.1/src/iatoolkit/services/configuration_service.py +382 -0
- iatoolkit-0.108.1/src/iatoolkit/services/dispatcher_service.py +134 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/document_service.py +10 -1
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/embedding_service.py +8 -4
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/excel_service.py +49 -1
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/history_manager_service.py +43 -24
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/language_service.py +7 -1
- iatoolkit-0.108.1/src/iatoolkit/services/license_service.py +82 -0
- iatoolkit-0.76.0/src/iatoolkit/infra/llm_client.py → iatoolkit-0.108.1/src/iatoolkit/services/llm_client_service.py +40 -27
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/profile_service.py +39 -25
- iatoolkit-0.76.0/src/iatoolkit/services/prompt_manager_service.py → iatoolkit-0.108.1/src/iatoolkit/services/prompt_service.py +136 -25
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/query_service.py +63 -44
- iatoolkit-0.108.1/src/iatoolkit/services/sql_service.py +174 -0
- iatoolkit-0.108.1/src/iatoolkit/services/tool_service.py +246 -0
- iatoolkit-0.108.1/src/iatoolkit/services/user_session_context_service.py +213 -0
- iatoolkit-0.108.1/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- iatoolkit-0.108.1/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_feedback_button.js +1 -1
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_help_content.js +4 -4
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_main.js +44 -5
- iatoolkit-0.108.1/src/iatoolkit/static/js/chat_model_selector.js +227 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_onboarding_button.js +1 -1
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_reload_button.js +4 -1
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/chat_iatoolkit.css +58 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/chat_public.css +28 -0
- iatoolkit-0.108.1/src/iatoolkit/static/styles/documents.css +598 -0
- iatoolkit-0.108.1/src/iatoolkit/static/styles/landing_page.css +398 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/llm_output.css +34 -1
- iatoolkit-0.108.1/src/iatoolkit/system_prompts/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/system_prompts/query_main.prompt +27 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/system_prompts/sql_rules.prompt +47 -12
- iatoolkit-0.108.1/src/iatoolkit/templates/_company_header.html +45 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/_login_widget.html +3 -3
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/base.html +13 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/chat.html +45 -3
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/forgot_password.html +3 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/onboarding_shell.html +1 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/signup.html +3 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/base_login_view.py +8 -3
- iatoolkit-0.108.1/src/iatoolkit/views/chat_view.py +76 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/forgot_password_view.py +5 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/home_view.py +4 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/init_context_api_view.py +1 -1
- iatoolkit-0.108.1/src/iatoolkit/views/load_company_configuration_api_view.py +49 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/login_view.py +25 -8
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/logout_api_view.py +10 -2
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/prompt_api_view.py +1 -1
- iatoolkit-0.108.1/src/iatoolkit/views/root_redirect_view.py +22 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/signup_view.py +11 -3
- iatoolkit-0.108.1/src/iatoolkit/views/static_page_view.py +27 -0
- iatoolkit-0.108.1/src/iatoolkit/views/users_api_view.py +33 -0
- iatoolkit-0.108.1/src/iatoolkit.egg-info/PKG-INFO +268 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit.egg-info/SOURCES.txt +24 -15
- iatoolkit-0.76.0/requirements.txt → iatoolkit-0.108.1/src/iatoolkit.egg-info/requires.txt +3 -2
- iatoolkit-0.76.0/PKG-INFO +0 -196
- iatoolkit-0.76.0/readme.md +0 -114
- iatoolkit-0.76.0/src/iatoolkit/base_company.py +0 -91
- iatoolkit-0.76.0/src/iatoolkit/company_registry.py +0 -75
- iatoolkit-0.76.0/src/iatoolkit/infra/llm_proxy.py +0 -167
- iatoolkit-0.76.0/src/iatoolkit/repositories/database_manager.py +0 -115
- iatoolkit-0.76.0/src/iatoolkit/repositories/tasks_repo.py +0 -52
- iatoolkit-0.76.0/src/iatoolkit/services/company_context_service.py +0 -155
- iatoolkit-0.76.0/src/iatoolkit/services/configuration_service.py +0 -269
- iatoolkit-0.76.0/src/iatoolkit/services/dispatcher_service.py +0 -308
- iatoolkit-0.76.0/src/iatoolkit/services/sql_service.py +0 -92
- iatoolkit-0.76.0/src/iatoolkit/services/tasks_service.py +0 -188
- iatoolkit-0.76.0/src/iatoolkit/services/user_session_context_service.py +0 -161
- iatoolkit-0.76.0/src/iatoolkit/static/styles/landing_page.css +0 -182
- iatoolkit-0.76.0/src/iatoolkit/templates/_company_header.html +0 -20
- iatoolkit-0.76.0/src/iatoolkit/templates/about.html +0 -13
- iatoolkit-0.76.0/src/iatoolkit/templates/index.html +0 -145
- iatoolkit-0.76.0/src/iatoolkit/templates/login_simulation.html +0 -45
- iatoolkit-0.76.0/src/iatoolkit/views/external_login_view.py +0 -73
- iatoolkit-0.76.0/src/iatoolkit/views/index_view.py +0 -14
- iatoolkit-0.76.0/src/iatoolkit/views/login_simulation_view.py +0 -96
- iatoolkit-0.76.0/src/iatoolkit/views/tasks_api_view.py +0 -72
- iatoolkit-0.76.0/src/iatoolkit/views/tasks_review_api_view.py +0 -55
- iatoolkit-0.76.0/src/iatoolkit.egg-info/PKG-INFO +0 -196
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/LICENSE +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/setup.cfg +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-0.76.0/src/iatoolkit/system_prompts → iatoolkit-0.108.1/src/iatoolkit/common/interfaces}/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/load_documents_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/search_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-0.76.0 → iatoolkit-0.108.1}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {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
|
-
|
|
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==
|
|
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
|
|
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 .
|
|
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 .
|
|
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
|
-
|
|
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
|
|
|
@@ -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
|