chainlit 1.0.506__py3-none-any.whl → 1.1.0rc0__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 chainlit might be problematic. Click here for more details.
- chainlit/__init__.py +34 -1
- chainlit/config.py +39 -19
- chainlit/copilot/dist/index.js +337 -333
- chainlit/data/__init__.py +4 -2
- chainlit/data/sql_alchemy.py +19 -12
- chainlit/element.py +4 -1
- chainlit/frontend/dist/assets/{index-d4233b49.js → index-032fca02.js} +187 -183
- chainlit/frontend/dist/assets/{react-plotly-2b7fa4f9.js → react-plotly-8c993614.js} +1 -1
- chainlit/frontend/dist/index.html +1 -1
- chainlit/llama_index/callbacks.py +7 -6
- chainlit/message.py +3 -3
- chainlit/server.py +4 -0
- chainlit/session.py +12 -2
- chainlit/socket.py +70 -18
- chainlit/types.py +19 -0
- chainlit/user_session.py +1 -0
- chainlit/utils.py +2 -1
- {chainlit-1.0.506.dist-info → chainlit-1.1.0rc0.dist-info}/METADATA +1 -1
- {chainlit-1.0.506.dist-info → chainlit-1.1.0rc0.dist-info}/RECORD +21 -21
- {chainlit-1.0.506.dist-info → chainlit-1.1.0rc0.dist-info}/WHEEL +0 -0
- {chainlit-1.0.506.dist-info → chainlit-1.1.0rc0.dist-info}/entry_points.txt +0 -0
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<script>
|
|
23
23
|
const global = globalThis;
|
|
24
24
|
</script>
|
|
25
|
-
<script type="module" crossorigin src="/assets/index-
|
|
25
|
+
<script type="module" crossorigin src="/assets/index-032fca02.js"></script>
|
|
26
26
|
<link rel="stylesheet" href="/assets/index-d088547c.css">
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
|
@@ -70,7 +70,7 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
70
70
|
) -> str:
|
|
71
71
|
"""Run when an event starts and return id of event."""
|
|
72
72
|
self._restore_context()
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
step_type: StepType = "undefined"
|
|
75
75
|
if event_type == CBEventType.RETRIEVE:
|
|
76
76
|
step_type = "retrieval"
|
|
@@ -104,7 +104,6 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
104
104
|
"""Run when an event ends."""
|
|
105
105
|
step = self.steps.get(event_id, None)
|
|
106
106
|
|
|
107
|
-
|
|
108
107
|
if payload is None or step is None:
|
|
109
108
|
return
|
|
110
109
|
|
|
@@ -117,11 +116,13 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
117
116
|
source_nodes = getattr(response, "source_nodes", None)
|
|
118
117
|
if source_nodes:
|
|
119
118
|
source_refs = ", ".join(
|
|
120
|
-
[f"Source {idx}" for idx, _ in enumerate(source_nodes)]
|
|
119
|
+
[f"Source {idx}" for idx, _ in enumerate(source_nodes)]
|
|
120
|
+
)
|
|
121
121
|
step.elements = [
|
|
122
122
|
Text(
|
|
123
123
|
name=f"Source {idx}",
|
|
124
124
|
content=source.text or "Empty node",
|
|
125
|
+
display="side",
|
|
125
126
|
)
|
|
126
127
|
for idx, source in enumerate(source_nodes)
|
|
127
128
|
]
|
|
@@ -137,6 +138,7 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
137
138
|
step.elements = [
|
|
138
139
|
Text(
|
|
139
140
|
name=f"Source {idx}",
|
|
141
|
+
display="side",
|
|
140
142
|
content=source.node.get_text() or "Empty node",
|
|
141
143
|
)
|
|
142
144
|
for idx, source in enumerate(sources)
|
|
@@ -173,7 +175,7 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
173
175
|
token_count = self.total_llm_token_count or None
|
|
174
176
|
raw_response = response.raw if response else None
|
|
175
177
|
model = raw_response.get("model", None) if raw_response else None
|
|
176
|
-
|
|
178
|
+
|
|
177
179
|
if messages and isinstance(response, ChatResponse):
|
|
178
180
|
msg: ChatMessage = response.message
|
|
179
181
|
step.generation = ChatGeneration(
|
|
@@ -198,7 +200,7 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
198
200
|
else:
|
|
199
201
|
step.output = payload
|
|
200
202
|
self.context.loop.create_task(step.update())
|
|
201
|
-
|
|
203
|
+
|
|
202
204
|
self.steps.pop(event_id, None)
|
|
203
205
|
|
|
204
206
|
def _noop(self, *args, **kwargs):
|
|
@@ -206,4 +208,3 @@ class LlamaIndexCallbackHandler(TokenCountingHandler):
|
|
|
206
208
|
|
|
207
209
|
start_trace = _noop
|
|
208
210
|
end_trace = _noop
|
|
209
|
-
|
chainlit/message.py
CHANGED
|
@@ -166,7 +166,7 @@ class MessageBase(ABC):
|
|
|
166
166
|
step_dict = await self._create()
|
|
167
167
|
await context.emitter.send_step(step_dict)
|
|
168
168
|
|
|
169
|
-
return self
|
|
169
|
+
return self
|
|
170
170
|
|
|
171
171
|
async def stream_token(self, token: str, is_sequence=False):
|
|
172
172
|
"""
|
|
@@ -251,7 +251,7 @@ class Message(MessageBase):
|
|
|
251
251
|
|
|
252
252
|
super().__post_init__()
|
|
253
253
|
|
|
254
|
-
async def send(self)
|
|
254
|
+
async def send(self):
|
|
255
255
|
"""
|
|
256
256
|
Send the message to the UI and persist it in the cloud if a project ID is configured.
|
|
257
257
|
Return the ID of the message.
|
|
@@ -268,7 +268,7 @@ class Message(MessageBase):
|
|
|
268
268
|
# Run all tasks concurrently
|
|
269
269
|
await asyncio.gather(*tasks)
|
|
270
270
|
|
|
271
|
-
return self
|
|
271
|
+
return self
|
|
272
272
|
|
|
273
273
|
async def update(self):
|
|
274
274
|
"""
|
chainlit/server.py
CHANGED
|
@@ -536,6 +536,10 @@ async def project_settings(
|
|
|
536
536
|
chat_profiles = await config.code.set_chat_profiles(current_user)
|
|
537
537
|
if chat_profiles:
|
|
538
538
|
profiles = [p.to_dict() for p in chat_profiles]
|
|
539
|
+
|
|
540
|
+
if config.code.on_audio_chunk:
|
|
541
|
+
config.features.audio.enabled = True
|
|
542
|
+
|
|
539
543
|
return JSONResponse(
|
|
540
544
|
content={
|
|
541
545
|
"ui": config.ui.to_dict(),
|
chainlit/session.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
import json
|
|
2
3
|
import mimetypes
|
|
3
4
|
import shutil
|
|
@@ -45,6 +46,7 @@ class BaseSession:
|
|
|
45
46
|
|
|
46
47
|
thread_id_to_resume: Optional[str] = None
|
|
47
48
|
client_type: ClientType
|
|
49
|
+
current_task: Optional[asyncio.Task] = None
|
|
48
50
|
|
|
49
51
|
def __init__(
|
|
50
52
|
self,
|
|
@@ -63,6 +65,8 @@ class BaseSession:
|
|
|
63
65
|
root_message: Optional["Message"] = None,
|
|
64
66
|
# Chat profile selected before the session was created
|
|
65
67
|
chat_profile: Optional[str] = None,
|
|
68
|
+
# Origin of the request
|
|
69
|
+
http_referer: Optional[str] = None,
|
|
66
70
|
):
|
|
67
71
|
if thread_id:
|
|
68
72
|
self.thread_id_to_resume = thread_id
|
|
@@ -74,6 +78,7 @@ class BaseSession:
|
|
|
74
78
|
self.has_first_interaction = False
|
|
75
79
|
self.user_env = user_env or {}
|
|
76
80
|
self.chat_profile = chat_profile
|
|
81
|
+
self.http_referer = http_referer
|
|
77
82
|
|
|
78
83
|
self.id = id
|
|
79
84
|
|
|
@@ -115,7 +120,8 @@ class HTTPSession(BaseSession):
|
|
|
115
120
|
user_env: Optional[Dict[str, str]] = None,
|
|
116
121
|
# Last message at the root of the chat
|
|
117
122
|
root_message: Optional["Message"] = None,
|
|
118
|
-
#
|
|
123
|
+
# Origin of the request
|
|
124
|
+
http_referer: Optional[str] = None,
|
|
119
125
|
):
|
|
120
126
|
super().__init__(
|
|
121
127
|
id=id,
|
|
@@ -125,6 +131,7 @@ class HTTPSession(BaseSession):
|
|
|
125
131
|
client_type=client_type,
|
|
126
132
|
user_env=user_env,
|
|
127
133
|
root_message=root_message,
|
|
134
|
+
http_referer=http_referer,
|
|
128
135
|
)
|
|
129
136
|
|
|
130
137
|
|
|
@@ -165,6 +172,8 @@ class WebsocketSession(BaseSession):
|
|
|
165
172
|
chat_profile: Optional[str] = None,
|
|
166
173
|
# Languages of the user's browser
|
|
167
174
|
languages: Optional[str] = None,
|
|
175
|
+
# Origin of the request
|
|
176
|
+
http_referer: Optional[str] = None,
|
|
168
177
|
):
|
|
169
178
|
super().__init__(
|
|
170
179
|
id=id,
|
|
@@ -175,13 +184,13 @@ class WebsocketSession(BaseSession):
|
|
|
175
184
|
client_type=client_type,
|
|
176
185
|
root_message=root_message,
|
|
177
186
|
chat_profile=chat_profile,
|
|
187
|
+
http_referer=http_referer,
|
|
178
188
|
)
|
|
179
189
|
|
|
180
190
|
self.socket_id = socket_id
|
|
181
191
|
self.emit_call = emit_call
|
|
182
192
|
self.emit = emit
|
|
183
193
|
|
|
184
|
-
self.should_stop = False
|
|
185
194
|
self.restored = False
|
|
186
195
|
|
|
187
196
|
self.thread_queues = {} # type: Dict[str, Deque[Callable]]
|
|
@@ -217,6 +226,7 @@ class WebsocketSession(BaseSession):
|
|
|
217
226
|
file_path = self.files_dir / file_id
|
|
218
227
|
|
|
219
228
|
file_extension = mimetypes.guess_extension(mime)
|
|
229
|
+
|
|
220
230
|
if file_extension:
|
|
221
231
|
file_path = file_path.with_suffix(file_extension)
|
|
222
232
|
|
chainlit/socket.py
CHANGED
|
@@ -9,12 +9,18 @@ from chainlit.auth import get_current_user, require_login
|
|
|
9
9
|
from chainlit.config import config
|
|
10
10
|
from chainlit.context import init_ws_context
|
|
11
11
|
from chainlit.data import get_data_layer
|
|
12
|
+
from chainlit.element import Element
|
|
12
13
|
from chainlit.logger import logger
|
|
13
14
|
from chainlit.message import ErrorMessage, Message
|
|
14
15
|
from chainlit.server import socket
|
|
15
16
|
from chainlit.session import WebsocketSession
|
|
16
17
|
from chainlit.telemetry import trace_event
|
|
17
|
-
from chainlit.types import
|
|
18
|
+
from chainlit.types import (
|
|
19
|
+
AudioChunk,
|
|
20
|
+
AudioChunkPayload,
|
|
21
|
+
AudioEndPayload,
|
|
22
|
+
UIMessagePayload,
|
|
23
|
+
)
|
|
18
24
|
from chainlit.user_session import user_sessions
|
|
19
25
|
|
|
20
26
|
|
|
@@ -93,9 +99,13 @@ def build_anon_user_identifier(environ):
|
|
|
93
99
|
|
|
94
100
|
@socket.on("connect")
|
|
95
101
|
async def connect(sid, environ, auth):
|
|
96
|
-
if
|
|
102
|
+
if (
|
|
103
|
+
not config.code.on_chat_start
|
|
104
|
+
and not config.code.on_message
|
|
105
|
+
and not config.code.on_audio_chunk
|
|
106
|
+
):
|
|
97
107
|
logger.warning(
|
|
98
|
-
"You need to configure at least
|
|
108
|
+
"You need to configure at least one of on_chat_start, on_message or on_audio_chunk callback"
|
|
99
109
|
)
|
|
100
110
|
return False
|
|
101
111
|
user = None
|
|
@@ -113,18 +123,10 @@ async def connect(sid, environ, auth):
|
|
|
113
123
|
|
|
114
124
|
# Session scoped function to emit to the client
|
|
115
125
|
def emit_fn(event, data):
|
|
116
|
-
if session := WebsocketSession.get(sid):
|
|
117
|
-
if session.should_stop:
|
|
118
|
-
session.should_stop = False
|
|
119
|
-
raise InterruptedError("Task stopped by user")
|
|
120
126
|
return socket.emit(event, data, to=sid)
|
|
121
127
|
|
|
122
128
|
# Session scoped function to emit to the client and wait for a response
|
|
123
129
|
def emit_call_fn(event: Literal["ask", "call_fn"], data, timeout):
|
|
124
|
-
if session := WebsocketSession.get(sid):
|
|
125
|
-
if session.should_stop:
|
|
126
|
-
session.should_stop = False
|
|
127
|
-
raise InterruptedError("Task stopped by user")
|
|
128
130
|
return socket.call(event, data, timeout=timeout, to=sid)
|
|
129
131
|
|
|
130
132
|
session_id = environ.get("HTTP_X_CHAINLIT_SESSION_ID")
|
|
@@ -135,6 +137,7 @@ async def connect(sid, environ, auth):
|
|
|
135
137
|
user_env = load_user_env(user_env_string)
|
|
136
138
|
|
|
137
139
|
client_type = environ.get("HTTP_X_CHAINLIT_CLIENT_TYPE")
|
|
140
|
+
http_referer = environ.get("HTTP_REFERER")
|
|
138
141
|
|
|
139
142
|
ws_session = WebsocketSession(
|
|
140
143
|
id=session_id,
|
|
@@ -148,6 +151,7 @@ async def connect(sid, environ, auth):
|
|
|
148
151
|
chat_profile=environ.get("HTTP_X_CHAINLIT_CHAT_PROFILE"),
|
|
149
152
|
thread_id=environ.get("HTTP_X_CHAINLIT_THREAD_ID"),
|
|
150
153
|
languages=environ.get("HTTP_ACCEPT_LANGUAGE"),
|
|
154
|
+
http_referer=http_referer,
|
|
151
155
|
)
|
|
152
156
|
|
|
153
157
|
trace_event("connection_successful")
|
|
@@ -178,7 +182,8 @@ async def connection_successful(sid):
|
|
|
178
182
|
return
|
|
179
183
|
|
|
180
184
|
if config.code.on_chat_start:
|
|
181
|
-
|
|
185
|
+
task = asyncio.create_task(config.code.on_chat_start())
|
|
186
|
+
context.session.current_task = task
|
|
182
187
|
|
|
183
188
|
|
|
184
189
|
@socket.on("clear_session")
|
|
@@ -223,10 +228,11 @@ async def stop(sid):
|
|
|
223
228
|
|
|
224
229
|
init_ws_context(session)
|
|
225
230
|
await Message(
|
|
226
|
-
author="System", content="Task stopped
|
|
231
|
+
author="System", content="Task manually stopped.", disable_feedback=True
|
|
227
232
|
).send()
|
|
228
233
|
|
|
229
|
-
session.
|
|
234
|
+
if session.current_task:
|
|
235
|
+
session.current_task.cancel()
|
|
230
236
|
|
|
231
237
|
if config.code.on_stop:
|
|
232
238
|
await config.code.on_stop()
|
|
@@ -243,7 +249,7 @@ async def process_message(session: WebsocketSession, payload: UIMessagePayload):
|
|
|
243
249
|
# Sleep 1ms to make sure any children step starts after the message step start
|
|
244
250
|
time.sleep(0.001)
|
|
245
251
|
await config.code.on_message(message)
|
|
246
|
-
except
|
|
252
|
+
except asyncio.CancelledError:
|
|
247
253
|
pass
|
|
248
254
|
except Exception as e:
|
|
249
255
|
logger.exception(e)
|
|
@@ -258,9 +264,55 @@ async def process_message(session: WebsocketSession, payload: UIMessagePayload):
|
|
|
258
264
|
async def message(sid, payload: UIMessagePayload):
|
|
259
265
|
"""Handle a message sent by the User."""
|
|
260
266
|
session = WebsocketSession.require(sid)
|
|
261
|
-
session.should_stop = False
|
|
262
267
|
|
|
263
|
-
|
|
268
|
+
task = asyncio.create_task(process_message(session, payload))
|
|
269
|
+
session.current_task = task
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
@socket.on("audio_chunk")
|
|
273
|
+
async def audio_chunk(sid, payload: AudioChunkPayload):
|
|
274
|
+
"""Handle an audio chunk sent by the user."""
|
|
275
|
+
session = WebsocketSession.require(sid)
|
|
276
|
+
|
|
277
|
+
init_ws_context(session)
|
|
278
|
+
|
|
279
|
+
if config.code.on_audio_chunk:
|
|
280
|
+
asyncio.create_task(config.code.on_audio_chunk(AudioChunk(**payload)))
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
@socket.on("audio_end")
|
|
284
|
+
async def audio_end(sid, payload: AudioEndPayload):
|
|
285
|
+
"""Handle the end of the audio stream."""
|
|
286
|
+
session = WebsocketSession.require(sid)
|
|
287
|
+
try:
|
|
288
|
+
context = init_ws_context(session)
|
|
289
|
+
await context.emitter.task_start()
|
|
290
|
+
|
|
291
|
+
if not session.has_first_interaction:
|
|
292
|
+
session.has_first_interaction = True
|
|
293
|
+
asyncio.create_task(context.emitter.init_thread("audio"))
|
|
294
|
+
|
|
295
|
+
file_elements = []
|
|
296
|
+
if config.code.on_audio_end:
|
|
297
|
+
file_refs = payload.get("fileReferences")
|
|
298
|
+
if file_refs:
|
|
299
|
+
files = [
|
|
300
|
+
session.files[file["id"]]
|
|
301
|
+
for file in file_refs
|
|
302
|
+
if file["id"] in session.files
|
|
303
|
+
]
|
|
304
|
+
file_elements = [Element.from_dict(file) for file in files]
|
|
305
|
+
|
|
306
|
+
await config.code.on_audio_end(file_elements)
|
|
307
|
+
except asyncio.CancelledError:
|
|
308
|
+
pass
|
|
309
|
+
except Exception as e:
|
|
310
|
+
logger.exception(e)
|
|
311
|
+
await ErrorMessage(
|
|
312
|
+
author="Error", content=str(e) or e.__class__.__name__
|
|
313
|
+
).send()
|
|
314
|
+
finally:
|
|
315
|
+
await context.emitter.task_end()
|
|
264
316
|
|
|
265
317
|
|
|
266
318
|
async def process_action(action: Action):
|
|
@@ -288,7 +340,7 @@ async def call_action(sid, action):
|
|
|
288
340
|
id=action.id, status=True, response=res if isinstance(res, str) else None
|
|
289
341
|
)
|
|
290
342
|
|
|
291
|
-
except
|
|
343
|
+
except asyncio.CancelledError:
|
|
292
344
|
await context.emitter.send_action_response(
|
|
293
345
|
id=action.id, status=False, response="Action interrupted by the user"
|
|
294
346
|
)
|
chainlit/types.py
CHANGED
|
@@ -154,6 +154,25 @@ class UIMessagePayload(TypedDict):
|
|
|
154
154
|
fileReferences: Optional[List[FileReference]]
|
|
155
155
|
|
|
156
156
|
|
|
157
|
+
class AudioChunkPayload(TypedDict):
|
|
158
|
+
isStart: bool
|
|
159
|
+
mimeType: str
|
|
160
|
+
elapsedTime: float
|
|
161
|
+
data: bytes
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
@dataclass
|
|
165
|
+
class AudioChunk:
|
|
166
|
+
isStart: bool
|
|
167
|
+
mimeType: str
|
|
168
|
+
elapsedTime: float
|
|
169
|
+
data: bytes
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class AudioEndPayload(TypedDict):
|
|
173
|
+
fileReferences: Optional[List[FileReference]]
|
|
174
|
+
|
|
175
|
+
|
|
157
176
|
@dataclass
|
|
158
177
|
class AskFileResponse:
|
|
159
178
|
id: str
|
chainlit/user_session.py
CHANGED
|
@@ -28,6 +28,7 @@ class UserSession:
|
|
|
28
28
|
user_session["user"] = context.session.user
|
|
29
29
|
user_session["chat_profile"] = context.session.chat_profile
|
|
30
30
|
user_session["languages"] = context.session.languages
|
|
31
|
+
user_session["http_referer"] = context.session.http_referer
|
|
31
32
|
|
|
32
33
|
if context.session.root_message:
|
|
33
34
|
user_session["root_message"] = context.session.root_message
|
chainlit/utils.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import functools
|
|
2
2
|
import importlib
|
|
3
3
|
import inspect
|
|
4
|
+
from asyncio import CancelledError
|
|
4
5
|
from typing import Callable
|
|
5
6
|
|
|
6
7
|
from chainlit.context import context
|
|
@@ -39,7 +40,7 @@ def wrap_user_function(user_function: Callable, with_task=False) -> Callable:
|
|
|
39
40
|
return await user_function(**params_values)
|
|
40
41
|
else:
|
|
41
42
|
return user_function(**params_values)
|
|
42
|
-
except
|
|
43
|
+
except CancelledError:
|
|
43
44
|
pass
|
|
44
45
|
except Exception as e:
|
|
45
46
|
logger.exception(e)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
chainlit/__init__.py,sha256=
|
|
1
|
+
chainlit/__init__.py,sha256=2-juj1u5enzZfNk5OG81Jer5H30fndgsub74xVJaDrI,10470
|
|
2
2
|
chainlit/__main__.py,sha256=7Vg3w3T3qDuz4KDu5lQhLH6lQ3cYdume7gHH7Z1V97U,87
|
|
3
3
|
chainlit/action.py,sha256=k-GsblVHI4DnDWFyF-RZgq3KfdfAFICFh2OBeU4w8N8,1410
|
|
4
4
|
chainlit/auth.py,sha256=lLHePwmwKzX0LiWqpTAtKTdSecrDLqCMSY9Yw4c-TD8,2681
|
|
@@ -6,24 +6,24 @@ chainlit/cache.py,sha256=Bv3dT4eHhE6Fq3c6Do0ZTpiyoXgXYewdxTgpYghEd9g,1361
|
|
|
6
6
|
chainlit/chat_settings.py,sha256=2ByenmwS8O6jQjDVJjhhbLrBPGA5aY2F7R3VvQQxXPk,877
|
|
7
7
|
chainlit/cli/__init__.py,sha256=JEB3Z3VWpzPgcfdSOQ6Z-L7dHdl7A1y47KUZP8H08GQ,4951
|
|
8
8
|
chainlit/cli/utils.py,sha256=mE2d9oOk-B2b9ZvDV1zENoDWxjfMriGP7bVwEFduZP4,717
|
|
9
|
-
chainlit/config.py,sha256=
|
|
9
|
+
chainlit/config.py,sha256=RNrxWmqmbPol_mRI2M5p0sMcR5PqyqY7WcLwo4g6OHI,16047
|
|
10
10
|
chainlit/context.py,sha256=CecWdRuRCTr4jfXlOiU3Mh41j3B-p40c1jC7mhToVzk,2476
|
|
11
11
|
chainlit/copilot/dist/assets/logo_dark-2a3cf740.svg,sha256=Kjz3QMh-oh-ag4YatjU0YCPqGF7F8nHh8VUQoJIs01E,8887
|
|
12
12
|
chainlit/copilot/dist/assets/logo_light-b078e7bc.svg,sha256=sHjnvEq1rfqh3bcexJNYUY7WEDdTQZq3aKZYpi4w4ck,8889
|
|
13
|
-
chainlit/copilot/dist/index.js,sha256=
|
|
14
|
-
chainlit/data/__init__.py,sha256=
|
|
13
|
+
chainlit/copilot/dist/index.js,sha256=PxrZhSq4MB4UFHZQjdp-ZM3M6yUFF2mudoG-IORjGXk,6986912
|
|
14
|
+
chainlit/data/__init__.py,sha256=CUkwYx9GYqIbgrLh7gmQm4qvO1mu4D0Es-z31dc00DU,16486
|
|
15
15
|
chainlit/data/acl.py,sha256=hx7Othkx12EitonyZD4iFIRVHwxBmBY2TKdwjPuZMSo,461
|
|
16
|
-
chainlit/data/sql_alchemy.py,sha256=
|
|
16
|
+
chainlit/data/sql_alchemy.py,sha256=4UasGe7-mVDUa2Pa6B5YydS9In7HU_ZmAH_f1l5sOWw,26109
|
|
17
17
|
chainlit/data/storage_clients.py,sha256=D9KY1XKDjZh2uuh01ECxeoEtjw-JlrCR-WCuOuePVQI,3007
|
|
18
|
-
chainlit/element.py,sha256=
|
|
18
|
+
chainlit/element.py,sha256=ZOE5ly2G07JxGeXaZDs8yrd76jaWXDelqRL00QM5KRg,10283
|
|
19
19
|
chainlit/emitter.py,sha256=JK9aQ6qbaY1G0eqwshMcLFS6T198LwZ7soXXQOFNvT4,12688
|
|
20
|
+
chainlit/frontend/dist/assets/index-032fca02.js,sha256=PL95Q0CxHX2HuXGsTvwsOIyzHf_yhj7zR5qrCdE0xlc,3038679
|
|
20
21
|
chainlit/frontend/dist/assets/index-d088547c.css,sha256=0IhUfCm_IY1kjvlTR2edW1qKXAFDya3LZ6mnZnP6ovk,6605
|
|
21
|
-
chainlit/frontend/dist/assets/index-d4233b49.js,sha256=Hdn8483Y7q-k-5ObLn5uWLlKgt9XDjLD7OW3FIWaxBY,3073946
|
|
22
22
|
chainlit/frontend/dist/assets/logo_dark-2a3cf740.svg,sha256=Kjz3QMh-oh-ag4YatjU0YCPqGF7F8nHh8VUQoJIs01E,8887
|
|
23
23
|
chainlit/frontend/dist/assets/logo_light-b078e7bc.svg,sha256=sHjnvEq1rfqh3bcexJNYUY7WEDdTQZq3aKZYpi4w4ck,8889
|
|
24
|
-
chainlit/frontend/dist/assets/react-plotly-
|
|
24
|
+
chainlit/frontend/dist/assets/react-plotly-8c993614.js,sha256=GpCai451WJ_7qhNmWWU2fQSrawurIwb-A9XtEB6Gia4,3763471
|
|
25
25
|
chainlit/frontend/dist/favicon.svg,sha256=0Cy8x28obT5eWW3nxZRhsEvu6_zMqrqbg0y6hT3D0Q0,6455
|
|
26
|
-
chainlit/frontend/dist/index.html,sha256=
|
|
26
|
+
chainlit/frontend/dist/index.html,sha256=SaYXa2Hau1GOjUIO_13mCPG2A24ijtD1xv_U-5yze14,1005
|
|
27
27
|
chainlit/haystack/__init__.py,sha256=uZ77YiPy-qleSTi3dQCDO9HE6S6F6GpJWmh7jO4cxXA,217
|
|
28
28
|
chainlit/haystack/callbacks.py,sha256=tItLc6OmskPeDEJH2Qjtg7KgAgIy1TuYQYHTZm9cr3U,5209
|
|
29
29
|
chainlit/hello.py,sha256=LwENQWo5s5r8nNDn4iKSV77vX60Ky5r_qGjQhyi7qlY,416
|
|
@@ -32,10 +32,10 @@ chainlit/langchain/__init__.py,sha256=zErMw0_3ufSGeF9ye7X0ZX3wDat4mTOx97T40ePDO2
|
|
|
32
32
|
chainlit/langchain/callbacks.py,sha256=bABLMuLx0h-It0zfB9tqcSeCAu_-uxMLgm2gPIGb4VY,20484
|
|
33
33
|
chainlit/langflow/__init__.py,sha256=wxhxdsl1yxdsRyNTgZticxFF_8VFtJJ4OdIy3tnEIyM,817
|
|
34
34
|
chainlit/llama_index/__init__.py,sha256=weRoIWCaRBGvA1LczCEfsqhWsltQSVlhtRnTovtdo8w,227
|
|
35
|
-
chainlit/llama_index/callbacks.py,sha256=
|
|
35
|
+
chainlit/llama_index/callbacks.py,sha256=nvmLTdKPV-WFjTTXnkIb-sPa7ZvQ49DrKH7UUQ_AGdg,7277
|
|
36
36
|
chainlit/logger.py,sha256=wTwRSZsLfXwWy6U4351IgWAm4KCMThgxm9EZpjGUEr4,373
|
|
37
37
|
chainlit/markdown.py,sha256=VUpqW7MqgjiPIQYHU4funwqC4GmHZBu_TGZTjTI4B0k,2025
|
|
38
|
-
chainlit/message.py,sha256=
|
|
38
|
+
chainlit/message.py,sha256=NQiNzzJgE5D5ciOSzdWYNH5e7fBFbrjxLWeGpczXQGs,17961
|
|
39
39
|
chainlit/oauth_providers.py,sha256=WiKUFpNp0RRN5Vq6LHCR9V-9td_1YEn2yD8iGu8atvY,17459
|
|
40
40
|
chainlit/openai/__init__.py,sha256=DJP_ptclLUM5Zylr4RO1Vk0lCufo3yDqXyH5J9izYS8,1814
|
|
41
41
|
chainlit/playground/__init__.py,sha256=igNRcBgqLKPTjOQtTNhhGNJFmZn-Dl1fHRQzQSjDGTQ,80
|
|
@@ -49,20 +49,20 @@ chainlit/playground/providers/openai.py,sha256=9aDSgXVW3sW-gaybBBWMIE8cJPyk9ZuGv
|
|
|
49
49
|
chainlit/playground/providers/vertexai.py,sha256=zKy501f-MHnLrvuRzN50FqgB3xoHzfQFTVbw83Nsj20,5084
|
|
50
50
|
chainlit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
51
|
chainlit/secret.py,sha256=cQvIFGTQ7r2heC8EOGdgifSZZYqslh-qQxhUhKhD8vU,295
|
|
52
|
-
chainlit/server.py,sha256=
|
|
53
|
-
chainlit/session.py,sha256=
|
|
54
|
-
chainlit/socket.py,sha256=
|
|
52
|
+
chainlit/server.py,sha256=P2Djxg8T_3shITgoKAf7BTL-Qwx-P58UoiKfyamkgSM,23851
|
|
53
|
+
chainlit/session.py,sha256=uxvtDpzJr0JKKOSjarRT0_7PscNv8rCgs9QVf6C0_uU,9241
|
|
54
|
+
chainlit/socket.py,sha256=0_3EoAVERQQlsFCcBd9Vfx4l6NQz7RT2H_HvaZ8duIM,11654
|
|
55
55
|
chainlit/step.py,sha256=JdXVqG73d9kNtHJjLhmfo1mqkCYtgqfF3jm08uGaCMs,13102
|
|
56
56
|
chainlit/sync.py,sha256=G1n-7-3WgXsN8y1bJkEyws_YwmHZIyDZoZUwhprigag,1235
|
|
57
57
|
chainlit/telemetry.py,sha256=Rk4dnZv0OnGOgV4kD-VHdhgl4i7i3ypqhSE_R-LZceM,3060
|
|
58
58
|
chainlit/translations/en-US.json,sha256=uUuS4hlNoYSlDp0DZGTAlPZxwLfsP4Jiu4ckrfr-fI0,7835
|
|
59
59
|
chainlit/translations.py,sha256=WG_r7HzxBYns-zk9tVvoGdoofv71okTZx8k1RlcoTIg,2034
|
|
60
|
-
chainlit/types.py,sha256=
|
|
60
|
+
chainlit/types.py,sha256=bkY7A0msU1xgOc6h6gAb_dA1SX5TVOLYUN9S39EXSQY,5332
|
|
61
61
|
chainlit/user.py,sha256=Cw4uGz0ffivWFszv8W__EHwkvTHQ3Lj9hqpRCPxFujo,619
|
|
62
|
-
chainlit/user_session.py,sha256=
|
|
63
|
-
chainlit/utils.py,sha256=
|
|
62
|
+
chainlit/user_session.py,sha256=C440ClH8kiIj6SqZ9BB5Q5Ni4eb7Jstsn81_1rAY-f8,1498
|
|
63
|
+
chainlit/utils.py,sha256=ObNTLIhRDWcx1tHhpULUkpgWSJBlsi2USat2TLaaiTM,2604
|
|
64
64
|
chainlit/version.py,sha256=iosXhlXclBwBqlADFKEilxAC2wWKbtuBKi87AmPi7s8,196
|
|
65
|
-
chainlit-1.
|
|
66
|
-
chainlit-1.
|
|
67
|
-
chainlit-1.
|
|
68
|
-
chainlit-1.
|
|
65
|
+
chainlit-1.1.0rc0.dist-info/METADATA,sha256=2KtigXmNmHvjaQmVmUxonaOuiQ-K5xzQm1Rl7N583zQ,5561
|
|
66
|
+
chainlit-1.1.0rc0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
67
|
+
chainlit-1.1.0rc0.dist-info/entry_points.txt,sha256=FrkqdjrFl8juSnvBndniyX7XuKojmUwO4ghRh-CFMQc,45
|
|
68
|
+
chainlit-1.1.0rc0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|