iatoolkit 0.20.0__tar.gz → 0.22.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.

Potentially problematic release.


This version of iatoolkit might be problematic. Click here for more details.

Files changed (123) hide show
  1. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/PKG-INFO +1 -1
  2. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/pyproject.toml +1 -1
  3. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/base_company.py +1 -1
  4. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/common/routes.py +27 -9
  5. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/iatoolkit.py +2 -3
  6. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/llm_client.py +4 -3
  7. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/dispatcher_service.py +1 -0
  8. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/styles/landing_page.css +25 -13
  9. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/_login_widget.html +2 -1
  10. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/index.html +11 -5
  11. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/file_store_view.py +9 -0
  12. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit.egg-info/PKG-INFO +1 -1
  13. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/readme.md +0 -0
  14. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/requirements.txt +0 -0
  15. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/setup.cfg +0 -0
  16. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/__init__.py +0 -0
  17. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/cli_commands.py +0 -0
  18. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/common/__init__.py +0 -0
  19. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/common/auth.py +0 -0
  20. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/common/exceptions.py +0 -0
  21. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/common/session_manager.py +0 -0
  22. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/common/util.py +0 -0
  23. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/company_registry.py +0 -0
  24. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/__init__.py +0 -0
  25. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/call_service.py +0 -0
  26. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  27. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  28. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  29. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  30. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  31. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  32. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  33. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  34. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  35. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
  36. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/llm_response.py +0 -0
  37. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/mail_app.py +0 -0
  38. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
  39. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  40. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/__init__.py +0 -0
  41. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/database_manager.py +0 -0
  42. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  43. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  44. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/models.py +0 -0
  45. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
  46. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  47. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
  48. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/__init__.py +0 -0
  49. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/benchmark_service.py +0 -0
  50. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/branding_service.py +0 -0
  51. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/document_service.py +0 -0
  52. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/excel_service.py +0 -0
  53. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  54. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/history_service.py +0 -0
  55. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/jwt_service.py +0 -0
  56. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/load_documents_service.py +0 -0
  57. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/mail_service.py +0 -0
  58. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/onboarding_service.py +0 -0
  59. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/profile_service.py +0 -0
  60. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  61. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/query_service.py +0 -0
  62. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/search_service.py +0 -0
  63. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/sql_service.py +0 -0
  64. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/tasks_service.py +0 -0
  65. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
  66. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
  67. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/arrow_up.png +0 -0
  68. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/diagrama_iatoolkit.jpg +0 -0
  69. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/logo_clinica.png +0 -0
  70. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/logo_iatoolkit.png +0 -0
  71. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/logo_maxxa.png +0 -0
  72. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/logo_notaria.png +0 -0
  73. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/logo_tarjeta.png +0 -0
  74. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/logo_umayor.png +0 -0
  75. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/images/upload.png +0 -0
  76. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/js/chat_feedback.js +0 -0
  77. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  78. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/js/chat_history.js +0 -0
  79. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/js/chat_main.js +0 -0
  80. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  81. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/styles/chat_info.css +0 -0
  82. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  83. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  84. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  85. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
  86. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  87. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/_branding_styles.html +0 -0
  88. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/_navbar.html +0 -0
  89. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/about.html +0 -0
  90. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/base.html +0 -0
  91. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/change_password.html +0 -0
  92. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/chat.html +0 -0
  93. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/chat_modals.html +0 -0
  94. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/error.html +0 -0
  95. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  96. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/header.html +0 -0
  97. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/home.html +0 -0
  98. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/login.html +0 -0
  99. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  100. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/signup.html +0 -0
  101. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/templates/test.html +0 -0
  102. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/__init__.py +0 -0
  103. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/change_password_view.py +0 -0
  104. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/chat_token_request_view.py +0 -0
  105. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/download_file_view.py +0 -0
  106. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/external_login_view.py +0 -0
  107. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
  108. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/history_view.py +0 -0
  109. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/home_view.py +0 -0
  110. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/index_view.py +0 -0
  111. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/init_context_view.py +0 -0
  112. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/llmquery_view.py +0 -0
  113. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/login_view.py +0 -0
  114. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/prompt_view.py +0 -0
  115. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/signup_view.py +0 -0
  116. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/tasks_review_view.py +0 -0
  117. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/tasks_view.py +0 -0
  118. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/user_feedback_view.py +0 -0
  119. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit/views/verify_user_view.py +0 -0
  120. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  121. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  122. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit.egg-info/requires.txt +0 -0
  123. {iatoolkit-0.20.0 → iatoolkit-0.22.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.20.0
3
+ Version: 0.22.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- version = "0.20.0"
7
+ version = "0.22.0"
8
8
  requires-python = ">=3.11"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
@@ -88,7 +88,7 @@ class BaseCompany(ABC):
88
88
 
89
89
  @abstractmethod
90
90
  # get context specific for this company
91
- def get_user_info(self, **kwargs) -> str:
91
+ def get_user_info(self, user_identifier: str) -> str:
92
92
  raise NotImplementedError("La subclase debe implementar el método get_user_info()")
93
93
 
94
94
  @abstractmethod
@@ -37,23 +37,30 @@ def register_views(injector, app):
37
37
  from iatoolkit.views.chat_token_request_view import ChatTokenRequestView
38
38
  from iatoolkit.views.download_file_view import DownloadFileView
39
39
 
40
- # landing page
40
+ # iatoolkit home page
41
41
  app.add_url_rule('/<company_short_name>', view_func=IndexView.as_view('index'))
42
- app.add_url_rule('/<company_short_name>/initiate_external_chat',
43
- view_func=InitContextView.as_view('initiate_external_chat'))
44
42
 
45
- # login for external portals
43
+ # init (reset) the company context (with api-key)
46
44
  app.add_url_rule('/<company_short_name>/<external_user_id>/init-context',
47
45
  view_func=InitContextView.as_view('init-context'))
46
+
47
+ # this functions are for login external users (with api-key)
48
+ # only the first one should be used from an external app
49
+ app.add_url_rule('/<company_short_name>/initiate_external_chat',
50
+ view_func=InitiateExternalChatView.as_view('initiate_external_chat'))
48
51
  app.add_url_rule('/<company_short_name>/external_login',
49
52
  view_func=ExternalChatLoginView.as_view('external_login'))
53
+
54
+ # this endpoint is for requesting a chat token for external users
50
55
  app.add_url_rule('/auth/chat_token',
51
56
  view_func=ChatTokenRequestView.as_view('chat-token'))
52
57
 
53
58
  # login for the iatoolkit integrated frontend
54
- app.add_url_rule('/<company_short_name>/login', view_func=LoginView.as_view('login'))
59
+ # this is the main login endpoint for the frontend
55
60
  app.add_url_rule('/<company_short_name>/initiate_login', view_func=InitiateLoginView.as_view('initiate_login'))
61
+ app.add_url_rule('/<company_short_name>/login', view_func=LoginView.as_view('login'))
56
62
 
63
+ # register new user, account verification and forgot password
57
64
  app.add_url_rule('/<company_short_name>/signup',view_func=SignupView.as_view('signup'))
58
65
  app.add_url_rule('/<company_short_name>/logout', 'logout', logout)
59
66
  app.add_url_rule('/logout', 'logout', logout)
@@ -61,16 +68,27 @@ def register_views(injector, app):
61
68
  app.add_url_rule('/<company_short_name>/forgot-password', view_func=ForgotPasswordView.as_view('forgot_password'))
62
69
  app.add_url_rule('/<company_short_name>/change-password/<token>', view_func=ChangePasswordView.as_view('change_password'))
63
70
 
64
- # this are backend endpoints mainly
71
+ # main chat query, used by the JS in the browser (with credentials)
72
+ # can be used also for executing iatoolkit prompts
65
73
  app.add_url_rule('/<company_short_name>/llm_query', view_func=LLMQueryView.as_view('llm_query'))
66
- app.add_url_rule('/<company_short_name>/feedback', view_func=UserFeedbackView.as_view('feedback'))
74
+
75
+ # chat buttons are here
76
+
77
+ # open the promt directory
67
78
  app.add_url_rule('/<company_short_name>/prompts', view_func=PromptView.as_view('prompt'))
79
+
80
+ # feedback and history
81
+ app.add_url_rule('/<company_short_name>/feedback', view_func=UserFeedbackView.as_view('feedback'))
68
82
  app.add_url_rule('/<company_short_name>/history', view_func=HistoryView.as_view('history'))
83
+
84
+ # tasks management endpoints: create task, and review answer
69
85
  app.add_url_rule('/tasks', view_func=TaskView.as_view('tasks'))
70
86
  app.add_url_rule('/tasks/review/<int:task_id>', view_func=TaskReviewView.as_view('tasks-review'))
87
+
88
+ # this endpoint is for upload documents into the vector store (api-key)
71
89
  app.add_url_rule('/load', view_func=FileStoreView.as_view('load'))
72
90
 
73
- # login testing /login_testing
91
+ # login testing (old home page)
74
92
  app.add_url_rule('/login_testing', view_func=HomeView.as_view('home'))
75
93
 
76
94
  app.add_url_rule(
@@ -104,7 +122,7 @@ def register_views(injector, app):
104
122
  except FileNotFoundError:
105
123
  abort(404)
106
124
 
107
- # Redirección opcional: hacer que la raíz '/' vaya a la landing de sample_company
125
+ # hacer que la raíz '/' vaya al home de iatoolkit
108
126
  @app.route('/')
109
127
  def root_redirect():
110
128
  return redirect(url_for('index', company_short_name='sample_company'))
@@ -16,11 +16,10 @@ import os
16
16
  from typing import Optional, Dict, Any
17
17
  from iatoolkit.repositories.database_manager import DatabaseManager
18
18
  from werkzeug.middleware.proxy_fix import ProxyFix
19
-
20
-
21
19
  from injector import Binder, singleton, Injector
22
20
  from importlib.metadata import version as _pkg_version, PackageNotFoundError
23
21
 
22
+ IATOOLKIT_VERSION = "0.21.0"
24
23
 
25
24
  # global variable for the unique instance of IAToolkit
26
25
  _iatoolkit_instance: Optional['IAToolkit'] = None
@@ -53,7 +52,7 @@ class IAToolkit:
53
52
  self.app = None
54
53
  self.db_manager = None
55
54
  self._injector = None
56
- self.version = "0.0.0+dev"
55
+ self.version = IATOOLKIT_VERSION
57
56
 
58
57
  @classmethod
59
58
  def get_instance(cls) -> 'IAToolkit':
@@ -21,6 +21,7 @@ import tiktoken
21
21
  from typing import Dict, Optional, List
22
22
  from iatoolkit.services.dispatcher_service import Dispatcher
23
23
 
24
+ CONTEXT_ERROR_MESSAGE = 'Tu consulta supera el límite de contexto, recarga la página para limpiarlo (esto demora un poco ...)'
24
25
 
25
26
  class llmClient:
26
27
  _llm_clients_cache = {} # class attribute, for the clients cache
@@ -116,7 +117,7 @@ class llmClient:
116
117
 
117
118
  # in case of context error
118
119
  if "context_length_exceeded" in str(e):
119
- error_message = 'Tu consulta supera el limite de contexto, sale e ingresa de nuevo a IAToolkit'
120
+ error_message = CONTEXT_ERROR_MESSAGE
120
121
 
121
122
  raise IAToolkitException(IAToolkitException.ErrorType.LLM_ERROR, error_message)
122
123
 
@@ -256,9 +257,9 @@ class llmClient:
256
257
 
257
258
  # in case of context error
258
259
  if "context_length_exceeded" in str(e):
259
- error_message = 'Tu consulta supera el limite de contexto, sale e ingresa de nuevo a IAToolkit'
260
+ error_message = CONTEXT_ERROR_MESSAGE
260
261
  elif "string_above_max_length" in str(e):
261
- error_message = 'La respuesta es muy larga, trata de filtrar/restringuir tu consulta'
262
+ error_message = 'La respuesta es muy extensa, trata de filtrar/restringuir tu consulta'
262
263
 
263
264
  raise IAToolkitException(IAToolkitException.ErrorType.LLM_ERROR, error_message)
264
265
 
@@ -200,6 +200,7 @@ class Dispatcher:
200
200
  # default values
201
201
  normalized_user = {
202
202
  "id": raw_data.get("id", 0),
203
+ "username": raw_data.get("id", 0),
203
204
  "user_email": raw_data.get("email", ""),
204
205
  "user_fullname": raw_data.get("user_fullname", ""),
205
206
  "company_id": raw_data.get("company_id", 0),
@@ -18,10 +18,19 @@ body {
18
18
  font-size: 1.8rem; /* Aumentado el tamaño del texto */
19
19
  }
20
20
 
21
- /* --- 2. Sección Principal (Hero) --- */
22
- .hero-section {
23
- padding: 5rem 0; /* <-- ESTA LÍNEA RESTAURA EL ESPACIADO SUPERIOR E INFERIOR */
24
- background-color: #f8f9fa; /* Fondo gris claro para la sección principal */
21
+ .gradient-text {
22
+ /* Define un gradiente como fondo */
23
+ background: linear-gradient(90deg, #4F46E5, #818CF8);
24
+
25
+ /* Recorta el fondo para que solo sea visible donde hay texto */
26
+ -webkit-background-clip: text;
27
+ background-clip: text;
28
+
29
+ /* Hace que el color del texto sea transparente para que se vea el fondo */
30
+ color: transparent;
31
+
32
+ /* Asegura que el fondo no se repita */
33
+ background-size: 100%;
25
34
  }
26
35
 
27
36
  /* Estilos para el texto de la propuesta de valor */
@@ -30,19 +39,18 @@ body {
30
39
  flex-direction: column;
31
40
  justify-content: center;
32
41
  height: 100%;
33
- /* Se ajusta el padding para la nueva posición a la izquierda */
34
42
  padding-left: 2rem;
35
43
  }
36
44
 
37
- .value-proposition .hero-title {
38
- font-size: 2.8rem;
39
- font-weight: 700;
40
- line-height: 1.2;
41
- color: #212529;
45
+ /* --- 2. Sección Principal (Hero) --- */
46
+ .hero-section {
47
+ padding: 1rem 0;
48
+ background-color: #f8f9fa; /* Fondo gris claro para la sección principal */
42
49
  }
43
50
 
44
- .value-proposition .hero-accelerator {
45
- color: var(--brand-primary-color, #0d6efd);
51
+ .hero-title {
52
+ font-weight: 700;
53
+ color: #111827;
46
54
  }
47
55
 
48
56
  .value-proposition .hero-subtitle {
@@ -51,6 +59,11 @@ body {
51
59
  margin-top: 1.5rem;
52
60
  }
53
61
 
62
+
63
+ .value-proposition .hero-accelerator {
64
+ color: var(--brand-primary-color, #0d6efd);
65
+ }
66
+
54
67
  /* --- Estilo para el título del widget de login --- */
55
68
  .hero-section .bg-light h4 {
56
69
  color: var(--brand-primary-color, #0d6efd);
@@ -63,7 +76,6 @@ body {
63
76
  line-height: 1.4;
64
77
  }
65
78
 
66
-
67
79
  /* --- 3. Sección de Características --- */
68
80
  .features-section {
69
81
  padding: 5rem 0;
@@ -5,7 +5,8 @@
5
5
  <h4 class="form-title fw-bold">Acceso a la Plataforma</h4>
6
6
  <!-- Párrafo modificado con nuevo texto y nueva clase CSS -->
7
7
  <p class="text-muted widget-intro-text">
8
- Ingresa a la plataforma o regístrate y prueba una demo interactiva con nuestra empresa de ejemplo.
8
+ Aca puedes mirar como funciona IAToolkit con una empresa ficticia (Sample Company).
9
+ Pregunta por clientes, productos, ventas, etc.
9
10
  </p>
10
11
  </div>
11
12
 
@@ -23,14 +23,14 @@
23
23
  <div class="row align-items-center">
24
24
  <div class="col-lg-7">
25
25
  <div class="value-proposition">
26
- <h1 class="hero-title">El <span class="hero-accelerator">Acelerador</span> de IA para tu Empresa</h1>
26
+ <h1 class="hero-title gradient-text">Construye IA que entiende tu Negocio</h1>
27
27
  <p class="hero-subtitle">IAToolkit es la plataforma de código abierto que conecta de forma segura tus
28
- datos internos —bases de datos, documentos y sistemaspara crear un asistente de IA
28
+ datos internos —bases de datos SQL, API's y documentoscon un un asistente de IA
29
29
  que entiende tu negocio desde el primer día.</p>
30
30
  <p class="hero-subtitle">
31
31
  Es un producto para ingenieros de software que quieren construir aplicaciones de IA
32
- a gran velocidad. Proveemos la infraestructura fundamental y extensible construida en Python
33
- para que tú te puedas enfocar en conectar tus datos y crear la lógica de negocio.</p>
32
+ a gran velocidad. Provee la infraestructura fundamental
33
+ para que tú te puedas enfocar en conectar tus datos y crear tus prompts.</p>
34
34
  </div>
35
35
  </div>
36
36
  <div class="col-lg-5">
@@ -53,7 +53,13 @@
53
53
  <div class="opensource-content">
54
54
  <h3>100% Open Source</h3>
55
55
  <p>Construido en Python, IAToolkit te da control total. Audita el código, adáptalo y contribuye a una comunidad en crecimiento.</p>
56
- <a href="https://github.com/tu-usuario/iatoolkit" target="_blank" class="btn btn-light"><i class="bi bi-github me-2"></i>Ir a GitHub</a>
56
+
57
+ <a href="https://github.com/flibedinsky/iatoolkit" target="_blank" class="btn btn-light">
58
+ <i class="bi bi-github me-2"></i>Ir a GitHub
59
+ {% if iatoolkit_version %}
60
+ <span class="badge bg-dark ms-2">{{ iatoolkit_version }}</span>
61
+ {% endif %}
62
+ </a>
57
63
  </div>
58
64
  </div>
59
65
 
@@ -6,6 +6,7 @@
6
6
  from flask.views import MethodView
7
7
  from flask import request, jsonify
8
8
  from iatoolkit.services.load_documents_service import LoadDocumentsService
9
+ from iatoolkit.common.auth import IAuthentication
9
10
  from iatoolkit.repositories.profile_repo import ProfileRepo
10
11
  from injector import inject
11
12
  import base64
@@ -14,8 +15,10 @@ import base64
14
15
  class FileStoreView(MethodView):
15
16
  @inject
16
17
  def __init__(self,
18
+ iauthentication: IAuthentication,
17
19
  doc_service: LoadDocumentsService,
18
20
  profile_repo: ProfileRepo,):
21
+ self.iauthentication = iauthentication
19
22
  self.doc_service = doc_service
20
23
  self.profile_repo = profile_repo
21
24
 
@@ -29,6 +32,7 @@ class FileStoreView(MethodView):
29
32
  return jsonify({"error": f"El campo {field} es requerido"}), 400
30
33
 
31
34
  company_short_name = req_data.get('company', '')
35
+ requested_name = req_data.get('username', 'external_user')
32
36
  filename = req_data.get('filename', False)
33
37
  base64_content = req_data.get('content', '')
34
38
  metadata = req_data.get('metadata', {})
@@ -38,6 +42,11 @@ class FileStoreView(MethodView):
38
42
  if not company:
39
43
  return jsonify({"error": f"La empresa {company_short_name} no existe"}), 400
40
44
 
45
+ # get access credentials
46
+ iaut = self.iauthentication.verify(company_short_name, requested_name)
47
+ if not iaut.get("success"):
48
+ return jsonify(iaut), 401
49
+
41
50
  # get the file content from base64
42
51
  content = base64.b64decode(base64_content)
43
52
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.20.0
3
+ Version: 0.22.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes