mindroot 10.5.0__py3-none-any.whl → 10.7.0__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 mindroot might be problematic. Click here for more details.
- mindroot/coreplugins/admin/static/js/agent-form.js +26 -1
- mindroot/coreplugins/admin/static/js/persona-editor.js +14 -1
- mindroot/coreplugins/agent/agent.py +43 -12
- mindroot/coreplugins/agent/buagentz1.py +540 -0
- mindroot/coreplugins/chat/buservices.py +625 -0
- mindroot/coreplugins/chat/commands.py +4 -0
- mindroot/coreplugins/chat/services.py +136 -8
- mindroot/coreplugins/chat/templates/chat.jinja2 +4 -0
- mindroot/lib/chatcontext.py +1 -0
- mindroot/lib/chatlog.py +40 -0
- {mindroot-10.5.0.dist-info → mindroot-10.7.0.dist-info}/METADATA +1 -1
- {mindroot-10.5.0.dist-info → mindroot-10.7.0.dist-info}/RECORD +16 -14
- {mindroot-10.5.0.dist-info → mindroot-10.7.0.dist-info}/WHEEL +0 -0
- {mindroot-10.5.0.dist-info → mindroot-10.7.0.dist-info}/entry_points.txt +0 -0
- {mindroot-10.5.0.dist-info → mindroot-10.7.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-10.5.0.dist-info → mindroot-10.7.0.dist-info}/top_level.txt +0 -0
|
@@ -24,6 +24,9 @@ import nanoid
|
|
|
24
24
|
sse_clients = {}
|
|
25
25
|
from lib.chatcontext import get_context
|
|
26
26
|
|
|
27
|
+
# Track active processing tasks per session
|
|
28
|
+
active_tasks = {}
|
|
29
|
+
|
|
27
30
|
@service()
|
|
28
31
|
async def prompt(model: str, instructions: str, temperature=0, max_tokens=400, json=False, context=None):
|
|
29
32
|
messages = [
|
|
@@ -68,7 +71,7 @@ def results_output(results):
|
|
|
68
71
|
text = ""
|
|
69
72
|
for result in results:
|
|
70
73
|
if 'output' in result['args']:
|
|
71
|
-
return result['args']['output']
|
|
74
|
+
return str(result['args']['output'])
|
|
72
75
|
|
|
73
76
|
def results_text_output(results):
|
|
74
77
|
text = ""
|
|
@@ -135,6 +138,9 @@ async def run_task(instructions: str, agent_name:str = None, user:str = None, lo
|
|
|
135
138
|
|
|
136
139
|
while retried < retries:
|
|
137
140
|
[results, full_results] = await send_message_to_agent(context.log_id, instructions, context=context)
|
|
141
|
+
print('#####################################################33')
|
|
142
|
+
print("Full results: ", full_results)
|
|
143
|
+
print("Results: ", results)
|
|
138
144
|
text = results_output(full_results)
|
|
139
145
|
if text == "":
|
|
140
146
|
retried += 1
|
|
@@ -217,13 +223,61 @@ def process_result(result, formatted_results):
|
|
|
217
223
|
|
|
218
224
|
return formatted_results
|
|
219
225
|
|
|
226
|
+
# Deprecated - use active_tasks instead
|
|
227
|
+
in_progress = {}
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
@service()
|
|
231
|
+
async def cancel_and_wait(session_id: str, user:str, context=None):
|
|
232
|
+
global in_progress, active_tasks
|
|
233
|
+
existing_task = active_tasks.get(session_id)
|
|
234
|
+
|
|
235
|
+
if not in_progress.get(session_id, False):
|
|
236
|
+
print(f"SEND_MESSAGE No active processing for session {session_id} to cancel.")
|
|
237
|
+
return
|
|
238
|
+
try:
|
|
239
|
+
print(f"SEND_MESSAGE Cancelling active task for session {session_id}...")
|
|
240
|
+
existing_context = await get_context(session_id, user)
|
|
241
|
+
existing_context.data['cancel_current_turn'] = True
|
|
242
|
+
existing_context.data['finished_conversation'] = True
|
|
243
|
+
existing_context.save_context()
|
|
244
|
+
# Cancel any active command task
|
|
245
|
+
if 'active_command_task' in existing_context.data:
|
|
246
|
+
cmd_task = existing_context.data['active_command_task']
|
|
247
|
+
if cmd_task and not cmd_task.done():
|
|
248
|
+
cmd_task.cancel()
|
|
249
|
+
|
|
250
|
+
await existing_context.save_context()
|
|
251
|
+
except Exception as e:
|
|
252
|
+
print(f"SEND_MESSAGE Error setting cancellation flags: {e}")
|
|
253
|
+
|
|
254
|
+
# Cancel the main task
|
|
255
|
+
existing_task.cancel()
|
|
256
|
+
|
|
257
|
+
# Wait for it to actually finish (with timeout)
|
|
258
|
+
try:
|
|
259
|
+
await asyncio.wait_for(existing_task, timeout=2.0)
|
|
260
|
+
except (asyncio.CancelledError, asyncio.TimeoutError):
|
|
261
|
+
pass # Expected
|
|
262
|
+
|
|
263
|
+
start_wait = time.time()
|
|
264
|
+
while in_progress.get(session_id, False) and (time.time() - start_wait) < 5.0:
|
|
265
|
+
print(f"SEND_MESSAGE Waiting for cancellation of session {session_id} to complete...")
|
|
266
|
+
await asyncio.sleep(0.1)
|
|
267
|
+
|
|
268
|
+
print(f"SEND_MESSAGE Cancellation complete for session {session_id}")
|
|
269
|
+
|
|
220
270
|
@service()
|
|
221
271
|
async def send_message_to_agent(session_id: str, message: str | List[MessageParts], max_iterations=35, context=None, user=None):
|
|
222
|
-
|
|
223
|
-
|
|
272
|
+
global in_progress, active_tasks
|
|
273
|
+
|
|
274
|
+
# Check if there's an active task for this session
|
|
275
|
+
existing_task = active_tasks.get(session_id)
|
|
276
|
+
|
|
224
277
|
if not user:
|
|
225
278
|
# check context
|
|
226
279
|
if not context.username:
|
|
280
|
+
print("SEND_MESSAGE No user provided and context has no username")
|
|
227
281
|
raise Exception("User required")
|
|
228
282
|
else:
|
|
229
283
|
user = {"user": context.username }
|
|
@@ -231,14 +285,72 @@ async def send_message_to_agent(session_id: str, message: str | List[MessagePart
|
|
|
231
285
|
if hasattr(user, "dict"):
|
|
232
286
|
user = user.dict()
|
|
233
287
|
|
|
288
|
+
# If there's an existing task, cancel it and wait for it to finish
|
|
289
|
+
if existing_task and not existing_task.done():
|
|
290
|
+
#print("SEND_MESSAGE rejecting because active task, but sneaking in new user message")
|
|
291
|
+
#if type(message) is str:
|
|
292
|
+
#context.chat_log.add_message({"role": "user", "content": [{"type": "text", "text": message}]})
|
|
293
|
+
#context.chat_log.add_message_role({"role": "user", "content": message })
|
|
294
|
+
|
|
295
|
+
#return []
|
|
296
|
+
print(f"SEND_MESSAGE: Cancelling existing task for session {session_id}")
|
|
297
|
+
|
|
298
|
+
# Load the context to set cancellation flags
|
|
299
|
+
try:
|
|
300
|
+
existing_context = await get_context(session_id, user)
|
|
301
|
+
existing_context.data['cancel_current_turn'] = True
|
|
302
|
+
existing_context.data['finished_conversation'] = True
|
|
303
|
+
existing_context.save_context()
|
|
304
|
+
# Cancel any active command task
|
|
305
|
+
if 'active_command_task' in existing_context.data:
|
|
306
|
+
cmd_task = existing_context.data['active_command_task']
|
|
307
|
+
if cmd_task and not cmd_task.done():
|
|
308
|
+
cmd_task.cancel()
|
|
309
|
+
|
|
310
|
+
await existing_context.save_context()
|
|
311
|
+
except Exception as e:
|
|
312
|
+
print(f"SEND_MESSAGE Error setting cancellation flags: {e}")
|
|
313
|
+
|
|
314
|
+
# Cancel the main task
|
|
315
|
+
existing_task.cancel()
|
|
316
|
+
|
|
317
|
+
# Wait for it to actually finish (with timeout)
|
|
318
|
+
try:
|
|
319
|
+
await asyncio.wait_for(existing_task, timeout=2.0)
|
|
320
|
+
except (asyncio.CancelledError, asyncio.TimeoutError):
|
|
321
|
+
pass # Expected
|
|
322
|
+
|
|
323
|
+
start_wait = time.time()
|
|
324
|
+
while in_progress.get(session_id, False) and (time.time() - start_wait) < 5.0:
|
|
325
|
+
print(f"SEND_MESSAGE Waiting for cancellation of session {session_id} to complete...")
|
|
326
|
+
await asyncio.sleep(0.1)
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
print(f"SEND_MESSAGE Previous task cancelled for session {session_id}")
|
|
330
|
+
|
|
331
|
+
context.data['cancel_current_turn'] = False
|
|
332
|
+
context.data['finished_conversation'] = False
|
|
333
|
+
context.save_context()
|
|
334
|
+
|
|
335
|
+
in_progress[session_id] = True
|
|
336
|
+
asyncio.sleep(0.2)
|
|
337
|
+
|
|
338
|
+
print('b')
|
|
339
|
+
if os.environ.get("MR_MAX_ITERATIONS") is not None:
|
|
340
|
+
max_iterations = int(os.environ.get("MR_MAX_ITERATIONS"))
|
|
234
341
|
try:
|
|
235
342
|
if type(message) is list:
|
|
236
343
|
message = [m.dict() for m in message]
|
|
237
344
|
|
|
238
345
|
if session_id is None or session_id == "" or message is None or message == "":
|
|
239
|
-
print("Invalid session_id or message")
|
|
346
|
+
print("SEND_MESSAGE Invalid session_id or message")
|
|
240
347
|
return []
|
|
241
348
|
|
|
349
|
+
# Create the main processing task and store it
|
|
350
|
+
processing_task = asyncio.current_task()
|
|
351
|
+
active_tasks[session_id] = processing_task
|
|
352
|
+
|
|
353
|
+
print("SEND_MESSAGE proceeding with message processing")
|
|
242
354
|
print("send_message_to_agent: ", session_id, message, max_iterations)
|
|
243
355
|
if context is None:
|
|
244
356
|
context = ChatContext(command_manager, service_manager, user)
|
|
@@ -373,9 +485,12 @@ async def send_message_to_agent(session_id: str, message: str | List[MessagePart
|
|
|
373
485
|
context.chat_log.add_message({"role": "user", "content": formatted_results})
|
|
374
486
|
results.append(out_results)
|
|
375
487
|
else:
|
|
376
|
-
print("Processing iteration: ", iterations, "no message added")
|
|
488
|
+
print("SEND_MESSAGE Processing iteration: ", iterations, "no message added")
|
|
377
489
|
if context.data.get('finished_conversation') is True:
|
|
378
490
|
termcolor.cprint("Finished conversation, exiting send_message_to_agent", "red")
|
|
491
|
+
if context.data.get('task_result') is not None:
|
|
492
|
+
task_result = context.data.get('task_result')
|
|
493
|
+
full_results.append({ "cmd": "task_result", "args": { "result": task_result } })
|
|
379
494
|
continue_processing = False
|
|
380
495
|
except Exception as e:
|
|
381
496
|
continue_processing = False
|
|
@@ -399,10 +514,23 @@ async def send_message_to_agent(session_id: str, message: str | List[MessagePart
|
|
|
399
514
|
print("Exiting send_message_to_agent: ", session_id, message, max_iterations)
|
|
400
515
|
|
|
401
516
|
await context.finished_chat()
|
|
517
|
+
in_progress.pop(session_id, None)
|
|
518
|
+
active_tasks.pop(session_id, None)
|
|
519
|
+
if len(results) == 0:
|
|
520
|
+
if context.data.get('task_result') is not None:
|
|
521
|
+
task_result = context.data.get('task_result')
|
|
522
|
+
results.append(task_result)
|
|
523
|
+
print("SEND_MESSAGE Done")
|
|
402
524
|
return [results, full_results]
|
|
525
|
+
except asyncio.CancelledError:
|
|
526
|
+
print(f"Task cancelled for session {session_id}")
|
|
527
|
+
in_progress.pop(session_id, None)
|
|
528
|
+
active_tasks.pop(session_id, None)
|
|
529
|
+
raise # Re-raise to properly handle cancellation
|
|
403
530
|
except Exception as e:
|
|
404
531
|
print("Error in send_message_to_agent: ", e)
|
|
405
532
|
print(traceback.format_exc())
|
|
533
|
+
in_progress.pop(session_id, None)
|
|
406
534
|
return []
|
|
407
535
|
|
|
408
536
|
@pipe(name='process_results', priority=5)
|
|
@@ -489,8 +617,7 @@ async def command_result(command: str, result, context=None):
|
|
|
489
617
|
@service()
|
|
490
618
|
async def backend_user_message(message: str, context=None):
|
|
491
619
|
"""
|
|
492
|
-
|
|
493
|
-
This allows backend processes to inject messages into the chat without user interaction.
|
|
620
|
+
Signal the frontend to display a user message.
|
|
494
621
|
"""
|
|
495
622
|
agent_ = context.agent
|
|
496
623
|
persona = 'user'
|
|
@@ -548,4 +675,5 @@ async def cancel_active_response(log_id: str, context=None):
|
|
|
548
675
|
await context.save_context()
|
|
549
676
|
|
|
550
677
|
print(f"Cancelled active response for session {log_id}")
|
|
551
|
-
return {"status": "cancelled", "log_id": log_id}
|
|
678
|
+
return {"status": "cancelled", "log_id": log_id}
|
|
679
|
+
|
mindroot/lib/chatcontext.py
CHANGED
|
@@ -9,6 +9,7 @@ from .chatlog import ChatLog
|
|
|
9
9
|
from .chatlog import extract_delegate_task_log_ids, find_child_logs_by_parent_id, find_chatlog_file
|
|
10
10
|
from typing import TypeVar, Type, Protocol, runtime_checkable, Set
|
|
11
11
|
from .utils.debug import debug_box
|
|
12
|
+
|
|
12
13
|
contexts = {}
|
|
13
14
|
|
|
14
15
|
async def get_context(log_id, user):
|
mindroot/lib/chatlog.py
CHANGED
|
@@ -62,6 +62,8 @@ class ChatLog:
|
|
|
62
62
|
self.agent = log_data.get('agent')
|
|
63
63
|
self.messages = log_data.get('messages', [])
|
|
64
64
|
self.parent_log_id = log_data.get('parent_log_id', None)
|
|
65
|
+
# we need the last modification time of the file
|
|
66
|
+
self.last_modified = os.path.getmtime(log_file)
|
|
65
67
|
print("Loaded log file at ", log_file)
|
|
66
68
|
print("Message length: ", len(self.messages))
|
|
67
69
|
else:
|
|
@@ -71,12 +73,23 @@ class ChatLog:
|
|
|
71
73
|
def _save_log_sync(self) -> None:
|
|
72
74
|
"""Synchronous version for backward compatibility"""
|
|
73
75
|
log_file = os.path.join(self.log_dir, f'chatlog_{self.log_id}.json')
|
|
76
|
+
self.last_modified = time.time()
|
|
74
77
|
with open(log_file, 'w') as f:
|
|
75
78
|
json.dump(self._get_log_data(), f, indent=2)
|
|
76
79
|
|
|
80
|
+
|
|
81
|
+
def add_message_role(self, message: Dict[str, str]) -> None:
|
|
82
|
+
for i in range(len(self.messages)-1, -1, -1):
|
|
83
|
+
if self.messages[i]['role'] == message.get('role'):
|
|
84
|
+
self.messages[i]['content'].append(message)
|
|
85
|
+
self.last_modified = time.time()
|
|
86
|
+
self._save_log_sync()
|
|
87
|
+
return
|
|
88
|
+
|
|
77
89
|
def add_message(self, message: Dict[str, str]) -> None:
|
|
78
90
|
"""Synchronous version for backward compatibility"""
|
|
79
91
|
should_save = self._add_message_impl(message)
|
|
92
|
+
self.last_modified = time.time()
|
|
80
93
|
if should_save:
|
|
81
94
|
self._save_log_sync()
|
|
82
95
|
else:
|
|
@@ -133,6 +146,7 @@ class ChatLog:
|
|
|
133
146
|
debug_box("5")
|
|
134
147
|
self.messages.append(message)
|
|
135
148
|
self._save_log_sync()
|
|
149
|
+
|
|
136
150
|
async def add_message_async(self, message: Dict[str, str]) -> None:
|
|
137
151
|
"""Async version for new code that needs non-blocking operations"""
|
|
138
152
|
should_save = self._add_message_impl(message)
|
|
@@ -145,10 +159,36 @@ class ChatLog:
|
|
|
145
159
|
len(self.messages[-1]['content']) > 0 and
|
|
146
160
|
self.messages[-1]['content'][0].get('type') == 'image'):
|
|
147
161
|
await self.save_log()
|
|
162
|
+
|
|
163
|
+
async def drop_last(self, role) -> None:
|
|
164
|
+
if len(self.messages) == 0:
|
|
165
|
+
return
|
|
166
|
+
if self.messages[-1]['role'] == role:
|
|
167
|
+
self.messages = self.messages[:-1]
|
|
168
|
+
await self.save_log()
|
|
148
169
|
|
|
149
170
|
def get_history(self) -> List[Dict[str, str]]:
|
|
150
171
|
return self.messages
|
|
151
172
|
|
|
173
|
+
|
|
174
|
+
def parsed_commands(self) -> List[Dict[str, any]]:
|
|
175
|
+
commands = []
|
|
176
|
+
filtered = [m for m in self.messages if m['role'] == 'assistant']
|
|
177
|
+
for message in filtered:
|
|
178
|
+
content = message['content']
|
|
179
|
+
if isinstance(content, list) and len(content) > 0 and 'text' in content[0]:
|
|
180
|
+
text = content[0]['text']
|
|
181
|
+
else:
|
|
182
|
+
continue
|
|
183
|
+
try:
|
|
184
|
+
cmd_list = json.loads(text)
|
|
185
|
+
if not isinstance(cmd_list, list):
|
|
186
|
+
cmd_list = [cmd_list]
|
|
187
|
+
commands.extend(cmd_list)
|
|
188
|
+
except (json.JSONDecodeError, TypeError):
|
|
189
|
+
continue
|
|
190
|
+
return commands
|
|
191
|
+
|
|
152
192
|
def get_recent(self, max_tokens: int = 4096) -> List[Dict[str, str]]:
|
|
153
193
|
recent_messages = []
|
|
154
194
|
total_length = 0
|
|
@@ -36,7 +36,7 @@ mindroot/coreplugins/admin/static/css/reset.css,sha256=pN9wuf7laZeIt-QjbxqJXDfu7
|
|
|
36
36
|
mindroot/coreplugins/admin/static/css/update.css,sha256=J1lchkEY6WST1LLoyPhXjjCZ4-oqMu7ooWjJNduRmMs,3008
|
|
37
37
|
mindroot/coreplugins/admin/static/js/about-info.js,sha256=CRyI5xGX3huycwseT5c80zsqQkElcdZsKMofyzyCimI,9230
|
|
38
38
|
mindroot/coreplugins/admin/static/js/agent-editor.js,sha256=ZCJBNQ-l4kJj-ZufYuzEg45ZpqxwliNmxuqUa2GNiqY,2825
|
|
39
|
-
mindroot/coreplugins/admin/static/js/agent-form.js,sha256=
|
|
39
|
+
mindroot/coreplugins/admin/static/js/agent-form.js,sha256=cFyIAS6dVxvzqJgJra-a5aFtS6zau0roveDSgpUF63A,41403
|
|
40
40
|
mindroot/coreplugins/admin/static/js/agent-list.js,sha256=86mqFyHspx9EnzJpgUDyeAgEq-jcqQ4v96CrgfUXoGM,2239
|
|
41
41
|
mindroot/coreplugins/admin/static/js/api-key-script.js,sha256=By80j-cwgxRT96MUBiZbVJuRvr6OAhd-GPmAUdZDZ4E,11199
|
|
42
42
|
mindroot/coreplugins/admin/static/js/base.js,sha256=xGCA6ngMapQ_jqMgHXg__CS3R46qprycOjkKTFDCMlA,1307
|
|
@@ -52,7 +52,7 @@ mindroot/coreplugins/admin/static/js/missing-commands.js,sha256=adNF9GWN981_KX7H
|
|
|
52
52
|
mindroot/coreplugins/admin/static/js/model-preferences-v2.js,sha256=4SFZBia959kRrSZXzIdWB0dscg4WtVIGYuLFlLpqBBI,15669
|
|
53
53
|
mindroot/coreplugins/admin/static/js/model-preferences.js,sha256=J0G7gcGACaPyslWJO42urf5wbZZsqO0LyPicAu-uV_Y,3365
|
|
54
54
|
mindroot/coreplugins/admin/static/js/notification.js,sha256=296rVCr6MNtzvzdzW3bGiMa231-BnWJtwZZ_sDWX-3c,5633
|
|
55
|
-
mindroot/coreplugins/admin/static/js/persona-editor.js,sha256=
|
|
55
|
+
mindroot/coreplugins/admin/static/js/persona-editor.js,sha256=emJSPBXDk54ztWDYOcs-bHAf1qQSIpq11RjV9bt5adA,10382
|
|
56
56
|
mindroot/coreplugins/admin/static/js/plugin-advanced-install.js,sha256=-HDJ3lVuDwj6R-74TfVUo4dUxB8efl13m3R_sUicnJI,8038
|
|
57
57
|
mindroot/coreplugins/admin/static/js/plugin-base.js,sha256=KWp5DqueHtyTxYKbuHMoFpoFXrfMbIjzK4M1ulAR9m8,5095
|
|
58
58
|
mindroot/coreplugins/admin/static/js/plugin-index-browser.js,sha256=P-V4wqlYGxjr7oF2LiD5ti8Is3wtSsKPwpRgRJpT0VI,10028
|
|
@@ -439,8 +439,9 @@ mindroot/coreplugins/admin/static/js/lit-html/node/directives/when.js,sha256=NLe
|
|
|
439
439
|
mindroot/coreplugins/admin/static/js/lit-html/node/directives/when.js.map,sha256=tOonih_-EaqrunhNGshA9xN--WIVdGikjg8MkVp0itQ,1534
|
|
440
440
|
mindroot/coreplugins/admin/templates/admin.jinja2,sha256=H_oDqoWWk0Da0Jre67LIKvB3h30fmjcZz2T5knUyz0k,13272
|
|
441
441
|
mindroot/coreplugins/admin/templates/model-preferences-v2.jinja2,sha256=5J3rXYmtp_yMTFCk85SYN03gc4lbidF0Nip6YcqcIW4,891
|
|
442
|
-
mindroot/coreplugins/agent/agent.py,sha256=
|
|
442
|
+
mindroot/coreplugins/agent/agent.py,sha256=m28_7JNXbqDjo5ZQ2H2goPA1bGoeCLc1riUiDaNa_6E,22903
|
|
443
443
|
mindroot/coreplugins/agent/agent.py.bak,sha256=X-EmtrpEpdfo-iUw9gj7mLveRVzAApsDWPTwMAuv7Ww,20715
|
|
444
|
+
mindroot/coreplugins/agent/buagentz1.py,sha256=XVRKf-jEHgv6ru-iESg1uPJGgUz3pzeAG-0UjPA4bqw,22404
|
|
444
445
|
mindroot/coreplugins/agent/cmd_start_example.py,sha256=Mdcd9st6viI6-M7a0-zqkw3IxR9FAxIiZ_8G-tLdIJk,1416
|
|
445
446
|
mindroot/coreplugins/agent/command_parser.py,sha256=dgMqtVLPQWE2BU7iyjqwKGy5Gh74jcZkiy1JDs07t4E,13166
|
|
446
447
|
mindroot/coreplugins/agent/ensure_msg_type.py,sha256=P2XSBs3gtjlDQLOF7808nm-Dl5jswyO6qgv0lNRyHXM,240
|
|
@@ -461,14 +462,15 @@ mindroot/coreplugins/api_keys/router.py,sha256=pz6VjUDPryKxYgnPt8-5AP1P-wjIIQq2c
|
|
|
461
462
|
mindroot/coreplugins/api_keys/inject/admin.jinja2,sha256=t50he2aeK_GJ6838LekBcGjkYRbo5p6OHeTWtlggbyU,372
|
|
462
463
|
mindroot/coreplugins/api_keys/static/js/api-key-manager.js,sha256=imqlhd85Z-1e7uxDlprphGV_N467WKo8_BYVQsJJ1V0,5327
|
|
463
464
|
mindroot/coreplugins/chat/__init__.py,sha256=qVdTF1fHZJHwY_ChnPvNFx2Nlg07FHvK0V_JmzfWzdw,230
|
|
465
|
+
mindroot/coreplugins/chat/buservices.py,sha256=MHwkwlWNh8xJ_nnskSBj4N5B1xtFhOMfN-dUyxVC_M8,24635
|
|
464
466
|
mindroot/coreplugins/chat/buwidget_routes.py,sha256=MtwaPX2vEGDylifWOqcx7EAhDw0y1Y3Y91z58EJaLsc,9982
|
|
465
|
-
mindroot/coreplugins/chat/commands.py,sha256=
|
|
467
|
+
mindroot/coreplugins/chat/commands.py,sha256=YVmOMyihMoPMxeaQI2f9QAz91Z7lHfjZ01rTfogmyeM,17308
|
|
466
468
|
mindroot/coreplugins/chat/format_result_msgs.py,sha256=daEdpEyAJIa8b2VkCqSKcw8PaExcB6Qro80XNes_sHA,2
|
|
467
469
|
mindroot/coreplugins/chat/mod.py,sha256=Xydjv3feKJJRbwdiB7raqiQnWtaS_2GcdC9bXYQX3nE,425
|
|
468
470
|
mindroot/coreplugins/chat/models.py,sha256=GRcRuDUAJFpyWERPMxkxUaZ21igNlWeeamriruEKiEQ,692
|
|
469
471
|
mindroot/coreplugins/chat/router.py,sha256=vq9UwYoFoGQMVmDC0TkjH7TWivFwkIe6OU0Scu-dtHg,15998
|
|
470
472
|
mindroot/coreplugins/chat/router_dedup_patch.py,sha256=lDSpVMSd26pXJwrrdirUmR1Jv_N5VHiDzTS8t3XswDU,918
|
|
471
|
-
mindroot/coreplugins/chat/services.py,sha256=
|
|
473
|
+
mindroot/coreplugins/chat/services.py,sha256=pufIrviR5KD5LcuuQW-lfU9mgZTP0GPy3ayDSBb3PaI,27081
|
|
472
474
|
mindroot/coreplugins/chat/utils.py,sha256=BiE14PpsAcQSO5vbU88klHGm8cAXJDXxgVgva-EXybU,155
|
|
473
475
|
mindroot/coreplugins/chat/widget_manager.py,sha256=LrMbZlHqpxbLwdN4XZ4GkLxORwxa1o6IVCrlUDBmGQs,4786
|
|
474
476
|
mindroot/coreplugins/chat/widget_routes.py,sha256=iV3OwLFnvLDsMHdckJnmVXcUgyyng-zIPNXyK2LAUjc,11802
|
|
@@ -887,7 +889,7 @@ mindroot/coreplugins/chat/static/js/lit-html/node/directives/until.js,sha256=j1W
|
|
|
887
889
|
mindroot/coreplugins/chat/static/js/lit-html/node/directives/until.js.map,sha256=7xiwSZ7_fGtr5XwW-10Dzs8n9QE2VUfXaZ0Sd6d82L0,6567
|
|
888
890
|
mindroot/coreplugins/chat/static/js/lit-html/node/directives/when.js,sha256=NLe0NJ-6jqjVDUrT_DzmSpREsRaLo1yarzdYcV_5xHY,181
|
|
889
891
|
mindroot/coreplugins/chat/static/js/lit-html/node/directives/when.js.map,sha256=tOonih_-EaqrunhNGshA9xN--WIVdGikjg8MkVp0itQ,1534
|
|
890
|
-
mindroot/coreplugins/chat/templates/chat.jinja2,sha256=
|
|
892
|
+
mindroot/coreplugins/chat/templates/chat.jinja2,sha256=54yUJ7v-fE2r8iuXYleqznChApXKNQSuEJgIlZgyrCk,3256
|
|
891
893
|
mindroot/coreplugins/chat_avatar/__init__.py,sha256=MsSFjiLMLJZ7QhUPpVBWKiyDnCzryquRyr329NoCACI,2
|
|
892
894
|
mindroot/coreplugins/chat_avatar/inject/chat.jinja2,sha256=TDSSt_SdOOW4EJMQK7fA_L2W5GNbDICRmXyqSsw0wuE,1093
|
|
893
895
|
mindroot/coreplugins/check_list/__init__.py,sha256=SaaGvnpz37xRM7DjGWBz5CD27Jh2UVdPLGoVUAFrUSY,77
|
|
@@ -2195,8 +2197,8 @@ mindroot/lib/buchatlog.py,sha256=LJZc3ksKgJcStltmHrrwNLaON3EDzhOKVAWj0Wl22wk,586
|
|
|
2195
2197
|
mindroot/lib/buchatlog2.py,sha256=Va9FteBWePEjWD9OZcw-OtQfEb-IoCVGTmJeMRaX9is,13729
|
|
2196
2198
|
mindroot/lib/buchatlog3.py,sha256=SAvcK2m_CW0Jw8p1pqnbrTexcx24PotrsJTqvQ_D290,24573
|
|
2197
2199
|
mindroot/lib/butemplates.py,sha256=gfHGPTOjvoEenXsR7xokNuqMjOAPuC2DawheH1Ae4bU,12196
|
|
2198
|
-
mindroot/lib/chatcontext.py,sha256=
|
|
2199
|
-
mindroot/lib/chatlog.py,sha256=
|
|
2200
|
+
mindroot/lib/chatcontext.py,sha256=1NjD3YFmw5KpEi0rAUeFNYU1DRnu2k7kL3KRX4ebJc8,12438
|
|
2201
|
+
mindroot/lib/chatlog.py,sha256=RKEx29JB-48fntWIzsdI4NTu-hp6eKxcpwRmNW6cSAc,27629
|
|
2200
2202
|
mindroot/lib/chatlog_optimized.py,sha256=rL7KBP-V4_cGgMLihxPm3HoKcjFEyA1uEtPtqvkOa3A,20011
|
|
2201
2203
|
mindroot/lib/json_escape.py,sha256=5cAmAdNbnYX2uyfQcnse2fFtNI0CdB-AfZ23RwaDm-k,884
|
|
2202
2204
|
mindroot/lib/model_selector.py,sha256=Wz-8NZoiclmnhLeCNnI3WCuKFmjsO5HE4bK5F8GpZzU,1397
|
|
@@ -2250,9 +2252,9 @@ mindroot/protocols/services/stream_chat.py,sha256=fMnPfwaB5fdNMBLTEg8BXKAGvrELKH
|
|
|
2250
2252
|
mindroot/registry/__init__.py,sha256=40Xy9bmPHsgdIrOzbtBGzf4XMqXVi9P8oZTJhn0r654,151
|
|
2251
2253
|
mindroot/registry/component_manager.py,sha256=WZFNPg4SNvpqsM5NFiC2DpgmrJQCyR9cNhrCBpp30Qk,995
|
|
2252
2254
|
mindroot/registry/data_access.py,sha256=81In5TwETpaqnnY1_-tBQM7rfWvUxZUZkG7lEelRUfU,5321
|
|
2253
|
-
mindroot-10.
|
|
2254
|
-
mindroot-10.
|
|
2255
|
-
mindroot-10.
|
|
2256
|
-
mindroot-10.
|
|
2257
|
-
mindroot-10.
|
|
2258
|
-
mindroot-10.
|
|
2255
|
+
mindroot-10.7.0.dist-info/licenses/LICENSE,sha256=8plAmZh8y9ccuuqFFz4kp7G-cO_qsPgAOoHNvabSB4U,1070
|
|
2256
|
+
mindroot-10.7.0.dist-info/METADATA,sha256=xSlNhS5t0OcnEBR_5RmPECCguk-qPcRDF_BRZJoaSqc,1035
|
|
2257
|
+
mindroot-10.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
2258
|
+
mindroot-10.7.0.dist-info/entry_points.txt,sha256=0bpyjMccLttx6VcjDp6zfJPN0Kk0rffor6IdIbP0j4c,50
|
|
2259
|
+
mindroot-10.7.0.dist-info/top_level.txt,sha256=gwKm7DmNjhdrCJTYCrxa9Szne4lLpCtrEBltfsX-Mm8,9
|
|
2260
|
+
mindroot-10.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|