iatoolkit 0.21.0__py3-none-any.whl → 0.22.1__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/base_company.py +1 -1
- iatoolkit/common/routes.py +23 -7
- iatoolkit/iatoolkit.py +2 -3
- iatoolkit/infra/llm_client.py +4 -3
- iatoolkit/services/dispatcher_service.py +1 -0
- iatoolkit/static/styles/landing_page.css +25 -13
- iatoolkit/templates/_login_widget.html +3 -2
- iatoolkit/templates/home.html +2 -2
- iatoolkit/templates/index.html +13 -5
- iatoolkit/views/file_store_view.py +9 -0
- {iatoolkit-0.21.0.dist-info → iatoolkit-0.22.1.dist-info}/METADATA +1 -1
- {iatoolkit-0.21.0.dist-info → iatoolkit-0.22.1.dist-info}/RECORD +14 -14
- {iatoolkit-0.21.0.dist-info → iatoolkit-0.22.1.dist-info}/WHEEL +0 -0
- {iatoolkit-0.21.0.dist-info → iatoolkit-0.22.1.dist-info}/top_level.txt +0 -0
iatoolkit/base_company.py
CHANGED
|
@@ -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,
|
|
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
|
iatoolkit/common/routes.py
CHANGED
|
@@ -40,22 +40,27 @@ def register_views(injector, app):
|
|
|
40
40
|
# iatoolkit home page
|
|
41
41
|
app.add_url_rule('/<company_short_name>', view_func=IndexView.as_view('index'))
|
|
42
42
|
|
|
43
|
-
# init (
|
|
43
|
+
# init (reset) the company context (with api-key)
|
|
44
44
|
app.add_url_rule('/<company_short_name>/<external_user_id>/init-context',
|
|
45
45
|
view_func=InitContextView.as_view('init-context'))
|
|
46
46
|
|
|
47
|
-
#
|
|
47
|
+
# this functions are for login external users (with api-key)
|
|
48
|
+
# only the first one should be used from an external app
|
|
48
49
|
app.add_url_rule('/<company_short_name>/initiate_external_chat',
|
|
49
50
|
view_func=InitiateExternalChatView.as_view('initiate_external_chat'))
|
|
50
51
|
app.add_url_rule('/<company_short_name>/external_login',
|
|
51
52
|
view_func=ExternalChatLoginView.as_view('external_login'))
|
|
53
|
+
|
|
54
|
+
# this endpoint is for requesting a chat token for external users
|
|
52
55
|
app.add_url_rule('/auth/chat_token',
|
|
53
56
|
view_func=ChatTokenRequestView.as_view('chat-token'))
|
|
54
57
|
|
|
55
58
|
# login for the iatoolkit integrated frontend
|
|
59
|
+
# this is the main login endpoint for the frontend
|
|
60
|
+
app.add_url_rule('/<company_short_name>/chat', view_func=InitiateLoginView.as_view('chat'))
|
|
56
61
|
app.add_url_rule('/<company_short_name>/login', view_func=LoginView.as_view('login'))
|
|
57
|
-
app.add_url_rule('/<company_short_name>/initiate_login', view_func=InitiateLoginView.as_view('initiate_login'))
|
|
58
62
|
|
|
63
|
+
# register new user, account verification and forgot password
|
|
59
64
|
app.add_url_rule('/<company_short_name>/signup',view_func=SignupView.as_view('signup'))
|
|
60
65
|
app.add_url_rule('/<company_short_name>/logout', 'logout', logout)
|
|
61
66
|
app.add_url_rule('/logout', 'logout', logout)
|
|
@@ -63,16 +68,27 @@ def register_views(injector, app):
|
|
|
63
68
|
app.add_url_rule('/<company_short_name>/forgot-password', view_func=ForgotPasswordView.as_view('forgot_password'))
|
|
64
69
|
app.add_url_rule('/<company_short_name>/change-password/<token>', view_func=ChangePasswordView.as_view('change_password'))
|
|
65
70
|
|
|
66
|
-
#
|
|
71
|
+
# main chat query, used by the JS in the browser (with credentials)
|
|
72
|
+
# can be used also for executing iatoolkit prompts
|
|
67
73
|
app.add_url_rule('/<company_short_name>/llm_query', view_func=LLMQueryView.as_view('llm_query'))
|
|
68
|
-
|
|
74
|
+
|
|
75
|
+
# chat buttons are here
|
|
76
|
+
|
|
77
|
+
# open the promt directory
|
|
69
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'))
|
|
70
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
|
|
71
85
|
app.add_url_rule('/tasks', view_func=TaskView.as_view('tasks'))
|
|
72
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)
|
|
73
89
|
app.add_url_rule('/load', view_func=FileStoreView.as_view('load'))
|
|
74
90
|
|
|
75
|
-
# login testing
|
|
91
|
+
# login testing (old home page)
|
|
76
92
|
app.add_url_rule('/login_testing', view_func=HomeView.as_view('home'))
|
|
77
93
|
|
|
78
94
|
app.add_url_rule(
|
|
@@ -106,7 +122,7 @@ def register_views(injector, app):
|
|
|
106
122
|
except FileNotFoundError:
|
|
107
123
|
abort(404)
|
|
108
124
|
|
|
109
|
-
#
|
|
125
|
+
# hacer que la raíz '/' vaya al home de iatoolkit
|
|
110
126
|
@app.route('/')
|
|
111
127
|
def root_redirect():
|
|
112
128
|
return redirect(url_for('index', company_short_name='sample_company'))
|
iatoolkit/iatoolkit.py
CHANGED
|
@@ -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 =
|
|
55
|
+
self.version = IATOOLKIT_VERSION
|
|
57
56
|
|
|
58
57
|
@classmethod
|
|
59
58
|
def get_instance(cls) -> 'IAToolkit':
|
iatoolkit/infra/llm_client.py
CHANGED
|
@@ -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 =
|
|
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 =
|
|
260
|
+
error_message = CONTEXT_ERROR_MESSAGE
|
|
260
261
|
elif "string_above_max_length" in str(e):
|
|
261
|
-
error_message = 'La respuesta es muy
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
.
|
|
45
|
-
|
|
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,13 +5,14 @@
|
|
|
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
|
-
|
|
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
|
|
|
12
13
|
<!-- 2. Formulario de Inicio de Sesión -->
|
|
13
14
|
<form id="login-form"
|
|
14
|
-
action="{{ url_for('
|
|
15
|
+
action="{{ url_for('chat', company_short_name=company_short_name) }}"
|
|
15
16
|
method="post">
|
|
16
17
|
<div class="mb-3">
|
|
17
18
|
<label for="email" class="form-label d-block text-muted">Correo Electrónico</label>
|
iatoolkit/templates/home.html
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<div class="border rounded p-4 shadow-sm bg-light">
|
|
14
14
|
<h4 class="text-muted fw-semibold text-start mb-3">login integrado (IAToolkit)</h4>
|
|
15
15
|
<form id="login-form"
|
|
16
|
-
action="{{ url_for('
|
|
16
|
+
action="{{ url_for('chat', company_short_name=company_short_name, external_login=True) }}"
|
|
17
17
|
method="post">
|
|
18
18
|
<div class="mb-3">
|
|
19
19
|
<label for="company_short_name" class="form-label d-block text-muted">Empresa</label>
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
|
|
113
113
|
// Actualizar action del formulario "Iniciar Sesión"
|
|
114
114
|
if (selectedCompany && selectedCompany.trim() !== '') {
|
|
115
|
-
const loginAction = '/' + selectedCompany + '/
|
|
115
|
+
const loginAction = '/' + selectedCompany + '/chat';
|
|
116
116
|
$('#login-form').attr('action', loginAction); // Actualizamos la URL del form
|
|
117
117
|
} else {
|
|
118
118
|
$('#login-form').attr('action', '#'); // URL genérica si no hay selección
|
iatoolkit/templates/index.html
CHANGED
|
@@ -23,14 +23,16 @@
|
|
|
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
|
|
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,
|
|
28
|
+
datos internos —bases de datos SQL, API's y documentos— con 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.
|
|
33
|
-
para que tú te puedas enfocar en conectar tus datos y crear
|
|
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
|
+
<p class="hero-subtitle">
|
|
35
|
+
Te invito a descargarlo y probar el "hello, world" de IAToolkit.</p>
|
|
34
36
|
</div>
|
|
35
37
|
</div>
|
|
36
38
|
<div class="col-lg-5">
|
|
@@ -53,7 +55,13 @@
|
|
|
53
55
|
<div class="opensource-content">
|
|
54
56
|
<h3>100% Open Source</h3>
|
|
55
57
|
<p>Construido en Python, IAToolkit te da control total. Audita el código, adáptalo y contribuye a una comunidad en crecimiento.</p>
|
|
56
|
-
|
|
58
|
+
|
|
59
|
+
<a href="https://github.com/flibedinsky/iatoolkit" target="_blank" class="btn btn-light">
|
|
60
|
+
<i class="bi bi-github me-2"></i>Ir a GitHub
|
|
61
|
+
{% if iatoolkit_version %}
|
|
62
|
+
<span class="badge bg-dark ms-2">{{ iatoolkit_version }}</span>
|
|
63
|
+
{% endif %}
|
|
64
|
+
</a>
|
|
57
65
|
</div>
|
|
58
66
|
</div>
|
|
59
67
|
|
|
@@ -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,19 +1,19 @@
|
|
|
1
1
|
iatoolkit/__init__.py,sha256=4PWjMJjktixtrxF6BY405qyA50Sv967kEP2x-oil6qk,1120
|
|
2
|
-
iatoolkit/base_company.py,sha256=
|
|
2
|
+
iatoolkit/base_company.py,sha256=uFJmy77LPAceVqkTeuJqo15-auDiq4aTwvC_bbBD0mQ,4607
|
|
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=
|
|
5
|
+
iatoolkit/iatoolkit.py,sha256=ByINe4luvUU0C5ERGt6M8keymVgMwJSNR9_eb_34L5s,17354
|
|
6
6
|
iatoolkit/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
iatoolkit/common/auth.py,sha256=83WsyHF7TdjPYfAA-da-waizlWLIqSTx-2z4pI4LAnw,8471
|
|
8
8
|
iatoolkit/common/exceptions.py,sha256=EXx40n5htp7UiOM6P1xfJ9U6NMcADqm62dlFaKz7ICU,1154
|
|
9
|
-
iatoolkit/common/routes.py,sha256=
|
|
9
|
+
iatoolkit/common/routes.py,sha256=st_IC0pSddbkmQb-zb5sSk7n2_WVLGZgKCg645ADzcM,6097
|
|
10
10
|
iatoolkit/common/session_manager.py,sha256=7D_RuJs60w-1zDr3fOGEz9JW7IZlSXuUHgUT87CzaUo,472
|
|
11
11
|
iatoolkit/common/util.py,sha256=08js3KLJTXICOd5sgwDp2u_kDaZO_0xG4BIuzWZnLo8,15535
|
|
12
12
|
iatoolkit/infra/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
13
13
|
iatoolkit/infra/call_service.py,sha256=iRk9VxbXaAwlLIl8fUzGDWIAdzwfsbs1MtP84YeENxg,4929
|
|
14
14
|
iatoolkit/infra/gemini_adapter.py,sha256=kXV-t5i9GmWBafUPX2kAyiqvcT7GPoxHylcCUWG_c_U,15051
|
|
15
15
|
iatoolkit/infra/google_chat_app.py,sha256=_uKWxeacHH6C5a4FVx0YZjBn1tL-x_MIQV9gqgWGAjo,1937
|
|
16
|
-
iatoolkit/infra/llm_client.py,sha256=
|
|
16
|
+
iatoolkit/infra/llm_client.py,sha256=6kSbhgWjH9ENxCzVSpMRg_6uPTHvCuGB0cwSGFDtrZ4,18633
|
|
17
17
|
iatoolkit/infra/llm_proxy.py,sha256=cHyNxUpVE4UDoWUfvSGfGCrIUFPTrpWZOixELQTsGFY,5744
|
|
18
18
|
iatoolkit/infra/llm_response.py,sha256=YUUQPBHzmP3Ce6-t0kKMRIpowvh7de1odSoefEByIvI,904
|
|
19
19
|
iatoolkit/infra/mail_app.py,sha256=PLGZdEs7LQ_9bmMRRxz0iqQdNa4xToAFyf9tg75wK8U,6103
|
|
@@ -37,7 +37,7 @@ iatoolkit/repositories/vs_repo.py,sha256=UkpmQQiocgM5IwRBmmWhw3HHzHP6zK1nN3J3TcQ
|
|
|
37
37
|
iatoolkit/services/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
38
38
|
iatoolkit/services/benchmark_service.py,sha256=CdbFYyS3FHFhNzWQEa9ZNjUlmON10DT1nKNbZQ1EUi8,5880
|
|
39
39
|
iatoolkit/services/branding_service.py,sha256=gXj9Lj6EIFNIHT6wAHia5lr4_2a2sD-ExMbewno5YD8,7505
|
|
40
|
-
iatoolkit/services/dispatcher_service.py,sha256=
|
|
40
|
+
iatoolkit/services/dispatcher_service.py,sha256=ygdaaTbt2mEIzWwPcJ-PbgzW6W16BbguR5U4Ne4oqjM,14087
|
|
41
41
|
iatoolkit/services/document_service.py,sha256=nMXrNtbHQuc9pSaten0LvKY0kT8_WngBDmZJUP3jNPw,5936
|
|
42
42
|
iatoolkit/services/excel_service.py,sha256=CJGhu7cQl9J6y_ZWSJ-M63Xm-RXR9Zs66oOR2NJErZQ,3868
|
|
43
43
|
iatoolkit/services/file_processor_service.py,sha256=B1sUUhZNFf-rT4_1wrD38GKNoBFMp2g0dYrXYMCWe2E,4122
|
|
@@ -70,13 +70,13 @@ iatoolkit/static/js/chat_main.js,sha256=lpTM_E2HBJMdh1d43nT6niecCDrLbACKkPLcQbBI
|
|
|
70
70
|
iatoolkit/static/styles/chat_iatoolkit.css,sha256=WgzKKyFRuQU8SozX1sWSN7b66SxVoKIHDwpK6V-xL6g,11417
|
|
71
71
|
iatoolkit/static/styles/chat_info.css,sha256=17DbgoNYE21VYWfb5L9-QLCpD2R1idK4imKRLwXtJLY,1058
|
|
72
72
|
iatoolkit/static/styles/chat_modal.css,sha256=mdfjrJtmUn3O9rKwIGjJc-oSNmJGnzUY1aAJqEfPh38,4301
|
|
73
|
-
iatoolkit/static/styles/landing_page.css,sha256=
|
|
73
|
+
iatoolkit/static/styles/landing_page.css,sha256=O0LJv4MQbYDbiAG2O0UHGfk6vBU3QBsq-VRorAUuaSU,3802
|
|
74
74
|
iatoolkit/static/styles/llm_output.css,sha256=AlxgRSOleeCk2dLAqFWVaQ-jwZiJjcpC5rHuUv3T6VU,2312
|
|
75
75
|
iatoolkit/system_prompts/format_styles.prompt,sha256=MSMe1qvR3cF_0IbFshn8R0z6Wx6VCHQq1p37rpu5wwk,3576
|
|
76
76
|
iatoolkit/system_prompts/query_main.prompt,sha256=w_9ybgWgiQH4V_RbAXqsvz0M7oOuiyhxcwf-D0CgfA4,3017
|
|
77
77
|
iatoolkit/system_prompts/sql_rules.prompt,sha256=y4nURVnb9AyFwt-lrbMNBHHtZlhk6kC9grYoOhRnrJo,59174
|
|
78
78
|
iatoolkit/templates/_branding_styles.html,sha256=x0GJmY1WWpPxKBUoqmxh685_1c6-4uLJWNPU6r81uAc,1912
|
|
79
|
-
iatoolkit/templates/_login_widget.html,sha256=
|
|
79
|
+
iatoolkit/templates/_login_widget.html,sha256=3SyzFgqCjkfBD1zepFuhfdUOSTuCHem6fS3BdgqN4Nw,1998
|
|
80
80
|
iatoolkit/templates/_navbar.html,sha256=o1PvZE5ueLmVpGUAmsjtu-vS_WPROTlJc2sTXl6AS4Y,360
|
|
81
81
|
iatoolkit/templates/about.html,sha256=ciC08grUVz5qLzdzDDqDX31xirg5PrJIRYabWpV9oA8,294
|
|
82
82
|
iatoolkit/templates/base.html,sha256=Bd_dBk_wiAhX0DPQHJAdPtCBBq2xK1J1Z2b9p3Wn0e8,2214
|
|
@@ -86,8 +86,8 @@ iatoolkit/templates/chat_modals.html,sha256=ngKk0L8qnWteBDLAqCKv8-55LWNH3-HwVyk2
|
|
|
86
86
|
iatoolkit/templates/error.html,sha256=BNF-7z8AYL5vF4ZMUFMrOBt8c85kCFrm9qSHn9EiHWg,540
|
|
87
87
|
iatoolkit/templates/forgot_password.html,sha256=NRZqbNHJXSLNArF_KLbzuem-U57v07awS0ikI_DJbfM,2360
|
|
88
88
|
iatoolkit/templates/header.html,sha256=179agI7rnYwP_rvJNXIiVde5E8Ec5649_XKq6eew2Hk,1263
|
|
89
|
-
iatoolkit/templates/home.html,sha256=
|
|
90
|
-
iatoolkit/templates/index.html,sha256=
|
|
89
|
+
iatoolkit/templates/home.html,sha256=76DwD8joOLphNyV13JgBQgGhVH1Nx-q5-pBPhrAxZHw,7922
|
|
90
|
+
iatoolkit/templates/index.html,sha256=TRSV9HN7lqbvnWYSk7hwXOZ2evrDg23Kq5FUqIQnWNc,6390
|
|
91
91
|
iatoolkit/templates/login.html,sha256=r4hy7MsQkfDqi6pBRNkkRiFr3GPSoHCT89R5lQLUWZc,1991
|
|
92
92
|
iatoolkit/templates/onboarding_shell.html,sha256=at7VXh9vQmDiWu2mJbc6NkzEVlu8I8Xgn6_31JltrW0,7477
|
|
93
93
|
iatoolkit/templates/signup.html,sha256=9ArDvcNQgHFR2dwxy-37AXzGUOeOsT7Nz5u0y6fAB3U,4385
|
|
@@ -97,7 +97,7 @@ iatoolkit/views/change_password_view.py,sha256=tM0woZyKdhY4XYjS_YXg2sKq3RYkXGfcq
|
|
|
97
97
|
iatoolkit/views/chat_token_request_view.py,sha256=wf32_A2Sq8NHYWshCwL10Tovd1znLoD0jQjzutR3sVE,4408
|
|
98
98
|
iatoolkit/views/download_file_view.py,sha256=1gZ0ipqeCn39sTrJFo1-tlewlcSF7s_YNTvE4qd0HOw,2010
|
|
99
99
|
iatoolkit/views/external_login_view.py,sha256=VyDrncAbtowZ_gOmk1kXoWhNw78xHGaz4LijIRmtWY8,6562
|
|
100
|
-
iatoolkit/views/file_store_view.py,sha256=
|
|
100
|
+
iatoolkit/views/file_store_view.py,sha256=mmr8U4_ycSe22kdGmVfzXpJPJffo5JRGNjk3-bUdVRw,2355
|
|
101
101
|
iatoolkit/views/forgot_password_view.py,sha256=-qKJeeOBqJFdvDUk7rCNg1E1cDQnJQkozPpb0T0FgwA,3159
|
|
102
102
|
iatoolkit/views/history_view.py,sha256=fzZrnC-RySa7ngcPe2Hmf9_s3imx6VB6MKROMcNpjoU,2064
|
|
103
103
|
iatoolkit/views/home_view.py,sha256=TihO2flkelJa9j6a0FKCMVhD-2X7BhemonB7LTne4x8,1248
|
|
@@ -111,7 +111,7 @@ iatoolkit/views/tasks_review_view.py,sha256=keLsLCyOTTlcoIapnB_lbuSvLwrPVZVpBiFC
|
|
|
111
111
|
iatoolkit/views/tasks_view.py,sha256=a3anTXrJTTvbQuc6PSpOzidLKQFL4hWa7PI2Cppcz8w,4110
|
|
112
112
|
iatoolkit/views/user_feedback_view.py,sha256=G37zmP8P4LvZrSymNJ5iFXhLZg1A3BEwRfTpH1Iam5w,2652
|
|
113
113
|
iatoolkit/views/verify_user_view.py,sha256=7XLSaxvs8LjBr3cYOUDa9B8DqW_50IGlq0IvmOQcD0Y,2340
|
|
114
|
-
iatoolkit-0.
|
|
115
|
-
iatoolkit-0.
|
|
116
|
-
iatoolkit-0.
|
|
117
|
-
iatoolkit-0.
|
|
114
|
+
iatoolkit-0.22.1.dist-info/METADATA,sha256=15bveuUgweJKf_HYeL36lKc6kQytFpKAusbzEUR6TEo,9301
|
|
115
|
+
iatoolkit-0.22.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
116
|
+
iatoolkit-0.22.1.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
|
|
117
|
+
iatoolkit-0.22.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|