iatoolkit 0.58.0__py3-none-any.whl → 0.58.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

iatoolkit/iatoolkit.py CHANGED
@@ -19,7 +19,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
19
19
  from injector import Binder, singleton, Injector
20
20
  from importlib.metadata import version as _pkg_version, PackageNotFoundError
21
21
 
22
- IATOOLKIT_VERSION = "0.57.0"
22
+ IATOOLKIT_VERSION = "0.58.2"
23
23
 
24
24
  # global variable for the unique instance of IAToolkit
25
25
  _iatoolkit_instance: Optional['IAToolkit'] = None
@@ -21,7 +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
+ CONTEXT_ERROR_MESSAGE = 'Tu consulta supera el límite de contexto, utiliza el boton de recarga de contexto.'
25
25
 
26
26
  class llmClient:
27
27
  _llm_clients_cache = {} # class attribute, for the clients cache
@@ -55,7 +55,7 @@ class OpenAIAdapter:
55
55
 
56
56
  # En caso de error de contexto
57
57
  if "context_length_exceeded" in str(e):
58
- error_message = 'Tu consulta supera el limite de contexto, sale e ingresa de nuevo a IAToolkit'
58
+ error_message = 'Tu consulta supera el limite de contexto. Reinicia el contexto con el boton de la barra superior.'
59
59
 
60
60
  raise IAToolkitException(IAToolkitException.ErrorType.LLM_ERROR, error_message)
61
61
 
@@ -0,0 +1,60 @@
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ const reloadButton = document.getElementById('force-reload-button');
3
+ if (!reloadButton) return;
4
+
5
+ const originalIconClass = 'bi bi-arrow-clockwise';
6
+ const spinnerIconClass = 'spinner-border spinner-border-sm';
7
+
8
+ // Configuración de Toastr para que aparezca abajo a la derecha
9
+ toastr.options = { "positionClass": "toast-bottom-right", "preventDuplicates": true };
10
+
11
+ reloadButton.addEventListener('click', function(event) {
12
+ event.preventDefault();
13
+
14
+ if (reloadButton.disabled) return; // Prevenir doble clic
15
+
16
+ // 1. Deshabilitar y mostrar spinner
17
+ reloadButton.disabled = true;
18
+ const icon = reloadButton.querySelector('i');
19
+ icon.className = spinnerIconClass;
20
+ toastr.info('Iniciando recarga de contexto en segundo plano...');
21
+
22
+ // 2. Construir la URL dinámicamente
23
+ const company = window.companyShortName;
24
+ const reloadUrl = `/${company}/api/init-context`;
25
+
26
+ // 3. Hacer la llamada AJAX con POST
27
+ fetch(reloadUrl, {
28
+ method: 'POST',
29
+ headers: {
30
+ 'Content-Type': 'application/json'
31
+ },
32
+ // Envía un cuerpo vacío o los datos necesarios
33
+ body: JSON.stringify({})
34
+ })
35
+ .then(response => {
36
+ if (!response.ok) {
37
+ return response.json().then(err => {
38
+ throw new Error(err.error_message || `Error del servidor: ${response.status}`);
39
+ });
40
+ }
41
+ return response.json();
42
+ })
43
+ .then(data => {
44
+ if (data.status === 'OK') {
45
+ toastr.success(data.message || 'Contexto recargado exitosamente.');
46
+ } else {
47
+ toastr.error(data.error_message || 'Ocurrió un error desconocido.');
48
+ }
49
+ })
50
+ .catch(error => {
51
+ console.error('Error durante la recarga del contexto:', error);
52
+ toastr.error(error.message || 'Error de red al intentar recargar.');
53
+ })
54
+ .finally(() => {
55
+ // 4. Restaurar el botón
56
+ reloadButton.disabled = false;
57
+ icon.className = originalIconClass;
58
+ });
59
+ });
60
+ });
@@ -15,7 +15,7 @@
15
15
  <div class="mb-3">
16
16
  <label for="email" class="form-label d-block">Correo Electrónico</label>
17
17
  <input type="email" id="email" name="email" class="form-control"
18
- required value="{{ form_data.email or '' }}">
18
+ required value="{{ form_data.email if form_data is defined else '' }}">
19
19
  </div>
20
20
  <div class="mb-3">
21
21
  <label for="password" class="form-label d-block">Contraseña</label>
@@ -136,7 +136,7 @@
136
136
  </div>
137
137
  <p class="author-bio mb-0">
138
138
  Soy <strong>Fernando Libedinsky</strong>, ingeniero de software y creador de <strong>IAToolkit</strong>.
139
- <br>Tras una extensa trayectoria en el desarrollo de tecnología, sigo movido por la misma curiosidad que me llevó a programar por primera vez: aprender, explorar y construir cosas nuevas.
139
+ <br>Tras una extensa trayectoria en el desarrollo de software, sigo movido por la misma curiosidad que me llevó a programar por primera vez: aprender, explorar y construir cosas nuevas.
140
140
  <br>IAToolkit es la continuación de ese impulso, una plataforma creada para conectar rapidamente empresas con la inteligencia artificial.
141
141
  </p>
142
142
  </div>
@@ -56,8 +56,8 @@ class InitContextApiView(MethodView):
56
56
  # logging.info(f"Context for {company_short_name}/{user_identifier} rebuilt successfully.")
57
57
 
58
58
  # 3. Respond with JSON, as this is an API endpoint.
59
- return jsonify({'status': 'OK', 'message': 'Context has been reloaded successfully.'}), 200
59
+ return jsonify({'status': 'OK', 'message': 'El context se ha recargado con éxito.'}), 200
60
60
 
61
61
  except Exception as e:
62
- logging.exception(f"Error forcing context rebuild for {user_identifier}: {e}")
62
+ logging.exception(f"Error durante la recarga de contexto {user_identifier}: {e}")
63
63
  return jsonify({"error_message": str(e)}), 500
@@ -41,4 +41,7 @@ class LLMQueryApiView(MethodView):
41
41
  client_data=data.get('client_data', {}),
42
42
  files=data.get('files', [])
43
43
  )
44
- return jsonify(result)
44
+ if 'error' in result:
45
+ return jsonify(result), 400
46
+
47
+ return jsonify(result), 200
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.58.0
3
+ Version: 0.58.3
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -2,7 +2,7 @@ iatoolkit/__init__.py,sha256=4PWjMJjktixtrxF6BY405qyA50Sv967kEP2x-oil6qk,1120
2
2
  iatoolkit/base_company.py,sha256=nfF-G0h63jy3Qh9kCnvx8Ozx76IjG2p7a34HpweWhOk,4608
3
3
  iatoolkit/cli_commands.py,sha256=G5L9xQXZ0lVFXQWBaE_KEZHyfuiT6PL1nTQRoSdnBzc,2302
4
4
  iatoolkit/company_registry.py,sha256=tduqt3oV8iDX_IB1eA7KIgvIxE4edTcy-3qZIXh3Lzw,2549
5
- iatoolkit/iatoolkit.py,sha256=tFx-D1Q0usCdOc3vSNdtz94mTCWhUGcyRkDISI2QMMs,17583
5
+ iatoolkit/iatoolkit.py,sha256=kWzvq56YYh2mGrX17NEDOh7hBs-ZXS2O7u2vCYyMd8k,17583
6
6
  iatoolkit/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  iatoolkit/common/exceptions.py,sha256=EXx40n5htp7UiOM6P1xfJ9U6NMcADqm62dlFaKz7ICU,1154
8
8
  iatoolkit/common/routes.py,sha256=vwPGZExbyYNM_-HXHRInSf8Py6uWjiOxifv2hbn_sGo,6145
@@ -12,11 +12,11 @@ iatoolkit/infra/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,1
12
12
  iatoolkit/infra/call_service.py,sha256=iRk9VxbXaAwlLIl8fUzGDWIAdzwfsbs1MtP84YeENxg,4929
13
13
  iatoolkit/infra/gemini_adapter.py,sha256=kXV-t5i9GmWBafUPX2kAyiqvcT7GPoxHylcCUWG_c_U,15051
14
14
  iatoolkit/infra/google_chat_app.py,sha256=_uKWxeacHH6C5a4FVx0YZjBn1tL-x_MIQV9gqgWGAjo,1937
15
- iatoolkit/infra/llm_client.py,sha256=Twn_e-H8Q305PqMtqSAafR1w9So6M_YUx5jAhWZUBJ4,18562
15
+ iatoolkit/infra/llm_client.py,sha256=clTYqV_0a2VD2vVH3j6AWqd1gVUmeg-fU3_myizmjQc,18543
16
16
  iatoolkit/infra/llm_proxy.py,sha256=cHyNxUpVE4UDoWUfvSGfGCrIUFPTrpWZOixELQTsGFY,5744
17
17
  iatoolkit/infra/llm_response.py,sha256=YUUQPBHzmP3Ce6-t0kKMRIpowvh7de1odSoefEByIvI,904
18
18
  iatoolkit/infra/mail_app.py,sha256=PLGZdEs7LQ_9bmMRRxz0iqQdNa4xToAFyf9tg75wK8U,6103
19
- iatoolkit/infra/openai_adapter.py,sha256=Z1JSi3Tw2mXQ7JAh6yR79Ri_9yZJcJpcZLOLL3Mfda8,3530
19
+ iatoolkit/infra/openai_adapter.py,sha256=tbzd8aPAH5cQOJT-sD4ypqq2fWB6WiEIGuGesUDnQNk,3550
20
20
  iatoolkit/infra/redis_session_manager.py,sha256=EPr3E_g7LHxn6U4SV5lT_L8WQsAwg8VzA_WIEZ3TwOw,3667
21
21
  iatoolkit/infra/connectors/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
22
22
  iatoolkit/infra/connectors/file_connector.py,sha256=HOjRTFd-WfDOcFyvHncAhnGNZuFgChIwC-P6osPo9ZM,352
@@ -55,6 +55,7 @@ iatoolkit/services/tasks_service.py,sha256=itREO5rDnUIgsqtyCOBKDtH30QL5v1egs4qPT
55
55
  iatoolkit/services/user_feedback_service.py,sha256=ooy750qWmYOeJi-IJQofu8pLG4svGjGU_JKpKMURZkw,2353
56
56
  iatoolkit/services/user_session_context_service.py,sha256=vYF_vWM37tPB_ZyPBJ6f6WTJVjT2j-4L8JfZbqbI93k,6775
57
57
  iatoolkit/static/images/fernando.jpeg,sha256=W68TYMuo5hZVpbP-evwH6Nu4xWFv2bc8pJzSKDoLTeQ,100612
58
+ iatoolkit/static/js/chat_context_reload.js,sha256=kZOsHUAxjlRAAG-dt7SLWrFX5HbjD0ztJXLdgQc4eJo,2260
58
59
  iatoolkit/static/js/chat_feedback.js,sha256=zlLEDQfEocGK7RKG2baqI-9fyQlqe6hVuAHOKTPmWek,4399
59
60
  iatoolkit/static/js/chat_filepond.js,sha256=mzXafm7a506EpM37KATTK3zvAswO1E0KSUY1vKbwuRc,3163
60
61
  iatoolkit/static/js/chat_history.js,sha256=4h6ldU7cDvgkW84fMKB8JReoxCX0NKSQAir_4CzAF9I,4382
@@ -70,7 +71,7 @@ iatoolkit/system_prompts/format_styles.prompt,sha256=MSMe1qvR3cF_0IbFshn8R0z6Wx6
70
71
  iatoolkit/system_prompts/query_main.prompt,sha256=D2Wjf0uunQIQsQiJVrY-BTQz6PemM5En6ftmw_c5t4E,2808
71
72
  iatoolkit/system_prompts/sql_rules.prompt,sha256=y4nURVnb9AyFwt-lrbMNBHHtZlhk6kC9grYoOhRnrJo,59174
72
73
  iatoolkit/templates/_branding_styles.html,sha256=x0GJmY1WWpPxKBUoqmxh685_1c6-4uLJWNPU6r81uAc,1912
73
- iatoolkit/templates/_login_widget.html,sha256=JeqVqUlFqst7_qrZ5vbE_MjmqVJC6bCKnrhJwDboxew,1903
74
+ iatoolkit/templates/_login_widget.html,sha256=pTiCdH3OcNGSMQjjSQRI-kQxKe2vzmgEtkNalBBDpxo,1929
74
75
  iatoolkit/templates/_navbar.html,sha256=o1PvZE5ueLmVpGUAmsjtu-vS_WPROTlJc2sTXl6AS4Y,360
75
76
  iatoolkit/templates/about.html,sha256=ciC08grUVz5qLzdzDDqDX31xirg5PrJIRYabWpV9oA8,294
76
77
  iatoolkit/templates/base.html,sha256=hHfBqZJsPcZGlb4BxAbHvpJFcSjckLIAVTYTmoyXrz0,2323
@@ -80,7 +81,7 @@ iatoolkit/templates/chat_modals.html,sha256=NwwgPoOmVbjy4aO2eHsy1TUMXRiOfTOC5Jx_
80
81
  iatoolkit/templates/error.html,sha256=c3dxieMygsvdjQMiQu_sn6kqqag9zFtVu-z5FunX6so,580
81
82
  iatoolkit/templates/forgot_password.html,sha256=NRZqbNHJXSLNArF_KLbzuem-U57v07awS0ikI_DJbfM,2360
82
83
  iatoolkit/templates/header.html,sha256=179agI7rnYwP_rvJNXIiVde5E8Ec5649_XKq6eew2Hk,1263
83
- iatoolkit/templates/index.html,sha256=Q2wBHDv3HTBt-jURVLggye7XOqoqDY8E0LnrmLdc3SQ,7910
84
+ iatoolkit/templates/index.html,sha256=ZeDBmZGZ_GlxQ8p_NA2Fdf4syTU5kXrJBO6q2P77wKY,7907
84
85
  iatoolkit/templates/login_simulation.html,sha256=1svwCBPrJ3Gy6bD9WMuz25NBSdFgZt4j8_sC7HE6MFU,1270
85
86
  iatoolkit/templates/onboarding_shell.html,sha256=r1ivSR2ci8GrDSm1uaD-cf78rfO1bKT5gXa-v5aHLAk,4659
86
87
  iatoolkit/templates/signup.html,sha256=9ArDvcNQgHFR2dwxy-37AXzGUOeOsT7Nz5u0y6fAB3U,4385
@@ -94,8 +95,8 @@ iatoolkit/views/file_store_api_view.py,sha256=Uz9f6sey3_F5K8zuyQz6SwYRKAalCjD1ek
94
95
  iatoolkit/views/forgot_password_view.py,sha256=-qKJeeOBqJFdvDUk7rCNg1E1cDQnJQkozPpb0T0FgwA,3159
95
96
  iatoolkit/views/history_api_view.py,sha256=x-tZhB8UzqrD2n-WDIfmHK9iVhGZ9f0yncsGs9mxwt0,1953
96
97
  iatoolkit/views/index_view.py,sha256=P5aVdEWxsYOZGbzcXd6WFE733qZ7YXIoeqriUMAM6V8,1527
97
- iatoolkit/views/init_context_api_view.py,sha256=tWlAN01nr3otXchraDHZZdMCFxAEM_GI0SwiFuhehAQ,2649
98
- iatoolkit/views/llmquery_api_view.py,sha256=ANnspwka7Yxjf2X58tE6IippyBfjOP-RgwbJlbOO_tw,1740
98
+ iatoolkit/views/init_context_api_view.py,sha256=FMoVOoQPZ76CZ-jR5CHLWrJEg1k8_sfwlMyyNoYdrho,2651
99
+ iatoolkit/views/llmquery_api_view.py,sha256=ihRtZygDLAamz8DIJ0UEN73MG_SHzjgvQIznXvCPyxg,1816
99
100
  iatoolkit/views/login_simulation_view.py,sha256=0Qt-puRnltI2HZxlfdyJmOf26-hQp3xjknGV_jkwV7E,3484
100
101
  iatoolkit/views/login_view.py,sha256=ESJLKHGUKQw71STHK2AoxugQUJmxnPYlI13n7ZawLLg,5663
101
102
  iatoolkit/views/prompt_api_view.py,sha256=MP0r-MiswwKcbNc_5KY7aVbHkrR218I8XCiCX1D0yTA,1244
@@ -104,7 +105,7 @@ iatoolkit/views/tasks_review_view.py,sha256=keLsLCyOTTlcoIapnB_lbuSvLwrPVZVpBiFC
104
105
  iatoolkit/views/tasks_view.py,sha256=a3anTXrJTTvbQuc6PSpOzidLKQFL4hWa7PI2Cppcz8w,4110
105
106
  iatoolkit/views/user_feedback_api_view.py,sha256=59XB9uQLHI4Q6QA4_XhK787HzfXb-c6EY7k1Ccyr4hI,2424
106
107
  iatoolkit/views/verify_user_view.py,sha256=7XLSaxvs8LjBr3cYOUDa9B8DqW_50IGlq0IvmOQcD0Y,2340
107
- iatoolkit-0.58.0.dist-info/METADATA,sha256=0dlpinBIYN54AdKHdawbfpToVXPHyCKbfa9dM1Vi6dw,9301
108
- iatoolkit-0.58.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
- iatoolkit-0.58.0.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
110
- iatoolkit-0.58.0.dist-info/RECORD,,
108
+ iatoolkit-0.58.3.dist-info/METADATA,sha256=kFoqWsrgm_YGHRp8XHJ5RnoIMzxjFNZMul--Jm48-0U,9301
109
+ iatoolkit-0.58.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
110
+ iatoolkit-0.58.3.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
111
+ iatoolkit-0.58.3.dist-info/RECORD,,