mindroot 7.7.0__py3-none-any.whl → 8.2.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.

Files changed (35) hide show
  1. mindroot/coreplugins/admin/plugin_manager.py +126 -3
  2. mindroot/coreplugins/admin/plugin_manager_backup.py +615 -0
  3. mindroot/coreplugins/admin/router.py +3 -1
  4. mindroot/coreplugins/admin/server_router.py +8 -1
  5. mindroot/coreplugins/admin/static/js/plugin-advanced-install.js +83 -12
  6. mindroot/coreplugins/admin/static/js/plugin-index-browser.js +138 -10
  7. mindroot/coreplugins/admin/static/js/plugin-install-dialog.js +345 -0
  8. mindroot/coreplugins/admin/static/js/server-control.js +68 -6
  9. mindroot/coreplugins/agent/agent.py +4 -0
  10. mindroot/coreplugins/chat/models.py +0 -1
  11. mindroot/coreplugins/chat/router.py +31 -0
  12. mindroot/coreplugins/chat/services.py +24 -0
  13. mindroot/coreplugins/chat/static/css/dark.css +35 -0
  14. mindroot/coreplugins/chat/static/css/default.css +35 -0
  15. mindroot/coreplugins/chat/static/js/chatform.js +185 -0
  16. mindroot/coreplugins/env_manager/__init__.py +3 -0
  17. mindroot/coreplugins/env_manager/inject/admin.jinja2 +16 -0
  18. mindroot/coreplugins/env_manager/mod.py +228 -0
  19. mindroot/coreplugins/env_manager/router.py +40 -0
  20. mindroot/coreplugins/env_manager/static/css/env-manager.css +263 -0
  21. mindroot/coreplugins/env_manager/static/js/env-manager.js +380 -0
  22. mindroot/coreplugins/home/router.py +33 -2
  23. mindroot/coreplugins/home/static/css/enhanced.css +111 -5
  24. mindroot/coreplugins/home/templates/home.jinja2 +7 -4
  25. mindroot/lib/chatlog.py +5 -1
  26. mindroot/lib/streamcmd.py +139 -0
  27. mindroot/lib/templates.py +13 -2
  28. mindroot/server.py +12 -25
  29. mindroot-8.2.0.dist-info/METADATA +15 -0
  30. {mindroot-7.7.0.dist-info → mindroot-8.2.0.dist-info}/RECORD +34 -25
  31. {mindroot-7.7.0.dist-info → mindroot-8.2.0.dist-info}/WHEEL +1 -1
  32. mindroot-7.7.0.dist-info/METADATA +0 -310
  33. {mindroot-7.7.0.dist-info → mindroot-8.2.0.dist-info}/entry_points.txt +0 -0
  34. {mindroot-7.7.0.dist-info → mindroot-8.2.0.dist-info}/licenses/LICENSE +0 -0
  35. {mindroot-7.7.0.dist-info → mindroot-8.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import asyncio
4
+ import sys
5
+ from typing import Optional, Callable, Any, List, Dict, AsyncGenerator
6
+
7
+ # ANSI color codes for terminal output
8
+ COLORS = {
9
+ 'reset': '\033[0m',
10
+ 'green': '\033[32m', # stdout
11
+ 'yellow': '\033[33m', # stderr/warning
12
+ 'blue': '\033[34m', # info
13
+ 'red': '\033[31m' # error
14
+ }
15
+
16
+
17
+ async def read_stream(stream: asyncio.StreamReader, callback: Callable[[str], Any]):
18
+ """Read from stream line by line and call the callback for each line."""
19
+ while True:
20
+ line = await stream.readline()
21
+ if not line:
22
+ break
23
+ callback(line.decode('utf-8', errors='replace'))
24
+
25
+
26
+ async def run_command_with_streaming(
27
+ cmd: List[str],
28
+ stdout_callback: Callable[[str], Any],
29
+ stderr_callback: Callable[[str], Any],
30
+ cwd: Optional[str] = None,
31
+ env: Optional[dict] = None
32
+ ) -> int:
33
+ """Run a command asynchronously and stream its output.
34
+
35
+ Args:
36
+ cmd: Command to run as a list of strings
37
+ stdout_callback: Callback for stdout lines
38
+ stderr_callback: Callback for stderr lines
39
+ cwd: Working directory for the command
40
+ env: Environment variables for the command
41
+
42
+ Returns:
43
+ Exit code of the command
44
+ """
45
+ try:
46
+ process = await asyncio.create_subprocess_exec(
47
+ *cmd,
48
+ stdout=asyncio.subprocess.PIPE,
49
+ stderr=asyncio.subprocess.PIPE,
50
+ cwd=cwd,
51
+ env=env
52
+ )
53
+
54
+ # Create tasks to read from stdout and stderr
55
+ stdout_task = asyncio.create_task(
56
+ read_stream(process.stdout, stdout_callback)
57
+ )
58
+ stderr_task = asyncio.create_task(
59
+ read_stream(process.stderr, stderr_callback)
60
+ )
61
+
62
+ # Wait for the process to complete and streams to be fully read
63
+ await asyncio.gather(stdout_task, stderr_task)
64
+ exit_code = await process.wait()
65
+
66
+ return exit_code
67
+
68
+ except Exception as e:
69
+ print(f"Failed to run command: {e}")
70
+ return 1
71
+
72
+
73
+ async def stream_command_as_events(
74
+ cmd: List[str],
75
+ cwd: Optional[str] = None,
76
+ env: Optional[dict] = None
77
+ ) -> AsyncGenerator[Dict[str, str], None]:
78
+ """Run a command and yield its output as events.
79
+
80
+ Args:
81
+ cmd: Command to run as a list of strings
82
+ cwd: Working directory for the command
83
+ env: Environment variables for the command
84
+
85
+ Yields:
86
+ Events with type and data
87
+ """
88
+ # Debug output
89
+ print(f"{COLORS['blue']}[DEBUG] Running command: {' '.join(cmd)}{COLORS['reset']}")
90
+
91
+ # Send initial event
92
+ yield {"event": "message", "data": f"Running command: {' '.join(cmd)}"}
93
+
94
+ # Create queues for stdout and stderr
95
+ output_queue = asyncio.Queue()
96
+
97
+ # Define callbacks for stdout and stderr
98
+ def stdout_callback(line):
99
+ if line.strip():
100
+ print(f"{COLORS['green']}[STDOUT] {line.strip()}{COLORS['reset']}")
101
+ output_queue.put_nowait(("message", line.strip()))
102
+
103
+ def stderr_callback(line):
104
+ if line.strip():
105
+ # Determine if this is a warning or an error
106
+ if ("WARNING:" in line or
107
+ "DEPRECATION:" in line or
108
+ "A new release of pip is available" in line):
109
+ print(f"{COLORS['yellow']}[WARNING] {line.strip()}{COLORS['reset']}")
110
+ output_queue.put_nowait(("warning", line.strip()))
111
+ else:
112
+ print(f"{COLORS['red']}[ERROR] {line.strip()}{COLORS['reset']}")
113
+ output_queue.put_nowait(("warning", line.strip()))
114
+
115
+ # Run the command in a separate task
116
+ run_task = asyncio.create_task(
117
+ run_command_with_streaming(cmd, stdout_callback, stderr_callback, cwd, env)
118
+ )
119
+
120
+ # Stream events from the queue while the command is running
121
+ while not run_task.done() or not output_queue.empty():
122
+ try:
123
+ event_type, data = await asyncio.wait_for(output_queue.get(), timeout=0.1)
124
+ yield {"event": event_type, "data": data}
125
+ except asyncio.TimeoutError:
126
+ # No output available, just continue
127
+ await asyncio.sleep(0.01)
128
+
129
+ # Get the exit code
130
+ exit_code = await run_task
131
+
132
+ # Send completion event
133
+ print(f"{COLORS['blue']}[INFO] Command completed with exit code {exit_code}{COLORS['reset']}")
134
+ if exit_code == 0:
135
+ yield {"event": "complete", "data": "Command completed successfully"}
136
+ else:
137
+ print(f"{COLORS['red']}[ERROR] Command failed with exit code {exit_code}{COLORS['reset']}")
138
+ yield {"event": "error", "data": f"Command failed with exit code {exit_code}"}
139
+
mindroot/lib/templates.py CHANGED
@@ -3,7 +3,7 @@ import logging
3
3
  from jinja2 import Environment, FileSystemLoader, ChoiceLoader
4
4
  from .plugins import list_enabled, get_plugin_path
5
5
  from .parent_templates import get_parent_templates_env
6
-
6
+ import traceback
7
7
 
8
8
  # TODO: get_parent_templates_env(plugins):
9
9
  # jinja2 environment containing only 1 template per plugin file name,
@@ -243,8 +243,10 @@ async def render_combined_template(page_name, plugins, context):
243
243
  str: Rendered HTML
244
244
  """
245
245
  parent_template = parent_env.get_template(f"{page_name}.jinja2")
246
+ print(f"parent_template", parent_template)
246
247
  child_templates = await load_plugin_templates(page_name, plugins)
247
248
  parent_blocks = parent_template.blocks.keys()
249
+ print(f"parent_blocks", parent_blocks)
248
250
  all_content = {block: {'inject': [], 'override': None} for block in parent_blocks}
249
251
 
250
252
  # Ensure context is a dictionary
@@ -348,8 +350,9 @@ async def render(page_name, context):
348
350
  # First try to render with the combined template approach
349
351
  try:
350
352
  parent_env.get_template(f"{page_name}.jinja2")
351
- return await render_combined_template(page_name, plugins, context)
352
353
  except Exception as e:
354
+ trace = traceback.format_exc()
355
+ print(f"Error finding parent template for {page_name}: {e}\n\n{trace}")
353
356
  print(f"No parent template found for {page_name}, trying direct rendering: {e}")
354
357
 
355
358
  # Try to find and render a template directly from a plugin
@@ -358,3 +361,11 @@ async def render(page_name, context):
358
361
  return await render_direct_template(template_path, context)
359
362
 
360
363
  return f"<h1>Template Not Found</h1><p>No template found for '{page_name}'</p>"
364
+
365
+ try:
366
+ return await render_combined_template(page_name, plugins, context)
367
+ except Exception as e:
368
+ trace = traceback.format_exc()
369
+ print(f"Error rendering {page_name}: {e}\n\n{trace}")
370
+ return f"<h1>Error Rendering Page</h1><p>{str(e)}</p><pre>{trace}</pre>"
371
+
mindroot/server.py CHANGED
@@ -13,7 +13,11 @@ from termcolor import colored
13
13
  import socket
14
14
  from fastapi.middleware.cors import CORSMiddleware
15
15
  from starlette.middleware.base import BaseHTTPMiddleware
16
+ from dotenv import load_dotenv
16
17
 
18
+ # Load environment variables from .env file at the start
19
+ # Set override=True to make .env variables override existing environment variables
20
+ load_dotenv(override=True)
17
21
 
18
22
  def parse_args():
19
23
  import argparse
@@ -48,10 +52,12 @@ def create_directories():
48
52
  create_directories()
49
53
 
50
54
  import mimetypes
51
- mimetypes.add_type("application/javascript", ".js", True)
55
+ mimetypes.add_type('application/javascript', '.js')
56
+ mimetypes.add_type('text/css', '.css')
52
57
 
53
- app = None
54
58
  templates = None
59
+ app = None
60
+ failed_plugins = []
55
61
 
56
62
  async def setup_app_internal(app_):
57
63
  global app, templates
@@ -84,32 +90,14 @@ class HeaderMiddleware(BaseHTTPMiddleware):
84
90
  async def dispatch(self, request: Request, call_next):
85
91
  # First get the response from other middleware and routes
86
92
  response = await call_next(request)
87
-
88
- if "Content-Security-Policy" in response.headers:
89
- del response.headers["Content-Security-Policy"]
90
-
91
- response.headers['Content-Security-Policy'] = "frame-ancestors *"
92
-
93
- if 'Access-Control-Allow-Origin' in response.headers:
94
- del response.headers['Access-Control-Allow-Origin']
95
- # Additional headers for better cross-origin support
96
- response.headers['Access-Control-Allow-Origin'] = '*' # Or your specific origin
97
-
98
- if 'Access-Control-Allow-Headers' in response.headers:
99
- del response.headers['Access-Control-Allow-Headers']
100
-
101
- response.headers['Access-Control-Allow-Credentials'] = 'true'
102
-
103
- # Remove the X-Frame-Options header if it exists
104
- if 'X-Frame-Options' in response.headers:
105
- del response.headers['X-Frame-Options']
106
-
107
93
 
108
- print(dict(response.headers))
94
+ # Add security headers
95
+ response.headers["X-Content-Type-Options"] = "nosniff"
96
+ response.headers["X-Frame-Options"] = "SAMEORIGIN"
97
+ response.headers["X-XSS-Protection"] = "1; mode=block"
109
98
 
110
99
  return response
111
100
 
112
-
113
101
  def main():
114
102
  global app
115
103
 
@@ -166,4 +154,3 @@ def main():
166
154
 
167
155
  if __name__ == "__main__":
168
156
  main()
169
-
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.4
2
+ Name: mindroot
3
+ Version: 8.2.0
4
+ Summary: MindRoot AI Agent Framework
5
+ Requires-Python: >=3.9
6
+ License-File: LICENSE
7
+ Requires-Dist: fastapi
8
+ Requires-Dist: uvicorn
9
+ Requires-Dist: jinja2
10
+ Requires-Dist: python-multipart
11
+ Requires-Dist: aiofiles
12
+ Requires-Dist: termcolor
13
+ Requires-Dist: nanoid
14
+ Requires-Dist: python-dotenv
15
+ Dynamic: license-file
@@ -1,15 +1,16 @@
1
1
  mindroot/__init__.py,sha256=OrFRGt_fdSYjolLXUzjSX2CIn1cOAm6l47ENNAkwmgQ,83
2
- mindroot/server.py,sha256=_qoCVqdnbrVsateaAIPLGAQzfpuBnlrdy3qj_qts8Zs,5231
2
+ mindroot/server.py,sha256=akguygtkh_-EOJas4FfZkNEl0Lzm9URew5Y41xiXo88,4811
3
3
  mindroot/coreplugins/admin/__init__.py,sha256=388n_hMskU0TnZ4xT10US_kFkya-EPBjWcv7AZf_HOk,74
4
4
  mindroot/coreplugins/admin/agent_importer.py,sha256=8hQLO64iKtPA5gv9-mLUfUCcnRp3IH9-sTfgkPsrmqo,6376
5
5
  mindroot/coreplugins/admin/agent_router.py,sha256=mstYUURNRb9MpfNwqMYC7WY3FOQJ-5H0TNNz4mDSjFM,9220
6
6
  mindroot/coreplugins/admin/command_router.py,sha256=nhNkurIb9w7itgQ5nBtDYM-W2q69cYpLAq9HLrK-0Bk,6567
7
7
  mindroot/coreplugins/admin/persona_handler.py,sha256=eRYmmOmupLJuiujWN35SS2nwRgo0lbbXug-chZ_WmjU,2862
8
8
  mindroot/coreplugins/admin/persona_router.py,sha256=tyPxBe-pRnntHo_xyazvnwKZxHmvEI5_Fsu0YkZbrXA,6036
9
- mindroot/coreplugins/admin/plugin_manager.py,sha256=Veu6LJKD9Q8w0nTO24svh1ODxBk71hmDVG8qR1vfEJM,8537
9
+ mindroot/coreplugins/admin/plugin_manager.py,sha256=k_buWtxh1JGb7j_NMILxJlZ_ZU5VVuXQpw4_Qp1Zjjo,14587
10
+ mindroot/coreplugins/admin/plugin_manager_backup.py,sha256=pUnh-EW4BMOrL2tYUq1X2BC65aoTBhDM-o2-mlDYXfU,24583
10
11
  mindroot/coreplugins/admin/plugin_router.py,sha256=EEDIM0MMPhqeej8Lu8cazYgzaXH1sKZLy_6kBOwrUgY,1020
11
- mindroot/coreplugins/admin/router.py,sha256=sm0-XoM4JVcXgyoL_rbecpjL6osQzORlaM30tiNVyXU,1423
12
- mindroot/coreplugins/admin/server_router.py,sha256=ojVZPOomiadyw6rD8LQPaOw_d-hbbZn0u7t0z77Pk_M,4385
12
+ mindroot/coreplugins/admin/router.py,sha256=Wzeri92Rv39YKTYflMZ3E1pnYy959KHWRjS8D4Xgaao,1580
13
+ mindroot/coreplugins/admin/server_router.py,sha256=aZ5v7QBcK1LJ2yiciUA4elY26iSGl-8m03L1h3ogvP4,4533
13
14
  mindroot/coreplugins/admin/service_models.py,sha256=ccYdLjWlEbbkIq9y9T5TL8NGSO6m1LLiJb9J2wkbenY,3354
14
15
  mindroot/coreplugins/admin/settings_router.py,sha256=s5LWB6BiMXhnxduxwi6bQUVtYs3vrNCrUe0Qm8DOo6s,5451
15
16
  mindroot/coreplugins/admin/static/logo.png,sha256=ZfPlCqCjU0_TXte5gvEx81zRKge--l_z2y0AArKl0as,17823
@@ -50,13 +51,14 @@ mindroot/coreplugins/admin/static/js/missing-commands.js,sha256=adNF9GWN981_KX7H
50
51
  mindroot/coreplugins/admin/static/js/model-preferences.js,sha256=J0G7gcGACaPyslWJO42urf5wbZZsqO0LyPicAu-uV_Y,3365
51
52
  mindroot/coreplugins/admin/static/js/notification.js,sha256=296rVCr6MNtzvzdzW3bGiMa231-BnWJtwZZ_sDWX-3c,5633
52
53
  mindroot/coreplugins/admin/static/js/persona-editor.js,sha256=xO2jobJXwqGY7Uajj3vQxyERubsHZovIPF_8FHpvzFE,8604
53
- mindroot/coreplugins/admin/static/js/plugin-advanced-install.js,sha256=TiM3I50cZR4u0mB5Qaf_W_Oke4Xe31OVRXbfZwB0epI,4136
54
+ mindroot/coreplugins/admin/static/js/plugin-advanced-install.js,sha256=urj95n_Jcp_ZlSoLIwaw9dfA6SHCoosISbaP3-dxxHs,6950
54
55
  mindroot/coreplugins/admin/static/js/plugin-base.js,sha256=KWp5DqueHtyTxYKbuHMoFpoFXrfMbIjzK4M1ulAR9m8,5095
55
- mindroot/coreplugins/admin/static/js/plugin-index-browser.js,sha256=ljGmMLEl78BKPBkqjRRvK32GkRApSXmFSgGZkY3-aYY,4800
56
+ mindroot/coreplugins/admin/static/js/plugin-index-browser.js,sha256=P-V4wqlYGxjr7oF2LiD5ti8Is3wtSsKPwpRgRJpT0VI,10028
57
+ mindroot/coreplugins/admin/static/js/plugin-install-dialog.js,sha256=ty_dZ9dZcpp9El1j3eY4Z6Wp8iZ5WNkf_lHSV-W1IhA,8216
56
58
  mindroot/coreplugins/admin/static/js/plugin-list.js,sha256=6sUZMpyIAhZEkLcnUym0FwneZND08mcFii5dOlYvadw,5012
57
59
  mindroot/coreplugins/admin/static/js/plugin-manager.js,sha256=RDBCnYQxH7Xbftwgg3llJ5BCrEeG9qfHzb80UzZzhsk,3341
58
60
  mindroot/coreplugins/admin/static/js/plugin-toggle.js,sha256=9A4rM1lavLLUU8oaqPW8-K_JR8epgmPVBV-fjOabY7s,3862
59
- mindroot/coreplugins/admin/static/js/server-control.js,sha256=9tH9xRCyVt4s6xof7DKG-TLyweMAqJvnsa18KyYHnhw,5353
61
+ mindroot/coreplugins/admin/static/js/server-control.js,sha256=Bctd20gnf5rqwI7eqIR7GrXPpUbjxhk0jLi5sbS5a40,7097
60
62
  mindroot/coreplugins/admin/static/js/toggle-switch.js,sha256=wLmzsngpNCjtGvFZ-eUIUO4APHa_cplWvZ7uBUqqYRg,2312
61
63
  mindroot/coreplugins/admin/static/js/lit-html/LICENSE,sha256=K2b5OQr94p7f5DFNr_k_AfsYLhF4BT4igSAXiYfl23U,1518
62
64
  mindroot/coreplugins/admin/static/js/lit-html/README.md,sha256=w-8qs6ZWte8yzeZ3g2-LlFDRWQQMtrQFAVjRFvb7z-4,3225
@@ -422,7 +424,7 @@ mindroot/coreplugins/admin/static/js/lit-html/node/directives/until.js.map,sha25
422
424
  mindroot/coreplugins/admin/static/js/lit-html/node/directives/when.js,sha256=NLe0NJ-6jqjVDUrT_DzmSpREsRaLo1yarzdYcV_5xHY,181
423
425
  mindroot/coreplugins/admin/static/js/lit-html/node/directives/when.js.map,sha256=tOonih_-EaqrunhNGshA9xN--WIVdGikjg8MkVp0itQ,1534
424
426
  mindroot/coreplugins/admin/templates/admin.jinja2,sha256=WkzAZJhXFp6tmOCBPInJihPzNYzC7IjEw1jQz6cfleQ,7125
425
- mindroot/coreplugins/agent/agent.py,sha256=8AIa-O8xtOVFTJWS2WdpwID7mxiaY3vzyqI0pokVFMA,20540
427
+ mindroot/coreplugins/agent/agent.py,sha256=TDKnEI8xxeEzFzJcnOBEiTtozBaxXVrnnw8aTfx4nDE,20706
426
428
  mindroot/coreplugins/agent/cmd_start_example.py,sha256=Mdcd9st6viI6-M7a0-zqkw3IxR9FAxIiZ_8G-tLdIJk,1416
427
429
  mindroot/coreplugins/agent/command_parser.py,sha256=Ouzksb6Gq7O9d__mk1zeQon_ycZJnh0jb7U1vsyK1R0,12797
428
430
  mindroot/coreplugins/agent/ensure_msg_type.py,sha256=P2XSBs3gtjlDQLOF7808nm-Dl5jswyO6qgv0lNRyHXM,240
@@ -446,9 +448,9 @@ mindroot/coreplugins/chat/__init__.py,sha256=0Zs02XeMuTCBdKHvtpO-utxyWmFaQJpH-O1
446
448
  mindroot/coreplugins/chat/commands.py,sha256=QozVxkLqtP6rlK3tSVLThfZz6nE7G_YygcmDzZdgb7c,16773
447
449
  mindroot/coreplugins/chat/format_result_msgs.py,sha256=daEdpEyAJIa8b2VkCqSKcw8PaExcB6Qro80XNes_sHA,2
448
450
  mindroot/coreplugins/chat/mod.py,sha256=Xydjv3feKJJRbwdiB7raqiQnWtaS_2GcdC9bXYQX3nE,425
449
- mindroot/coreplugins/chat/models.py,sha256=CwXPj6S_7GBEBMjA9wQY_v5gfcoA4ACeC134MioIr2Y,693
450
- mindroot/coreplugins/chat/router.py,sha256=CafMjlY2AXAmSc4Ow5HYgfYAmaRmk7o_Z4ZPbc17Wsw,6824
451
- mindroot/coreplugins/chat/services.py,sha256=RKarPM4jZyRXW-FNcbQAGB80VPg9G0n0L6f4wQgMces,16509
451
+ mindroot/coreplugins/chat/models.py,sha256=GRcRuDUAJFpyWERPMxkxUaZ21igNlWeeamriruEKiEQ,692
452
+ mindroot/coreplugins/chat/router.py,sha256=Cx6cmdqt5itlcIhBwHmwauR4z5brFdJrCXWSPBVTQHI,7811
453
+ mindroot/coreplugins/chat/services.py,sha256=IiUBjsRzKQZ0xw6TV8-dj6mehzTlA5XxcPPQYFQH6Kk,17561
452
454
  mindroot/coreplugins/chat/utils.py,sha256=BiE14PpsAcQSO5vbU88klHGm8cAXJDXxgVgva-EXybU,155
453
455
  mindroot/coreplugins/chat/static/assistant.png,sha256=oAt1ctkFKLSPBoAZGNnSixooW9ANVIk1GwniauVWDXo,215190
454
456
  mindroot/coreplugins/chat/static/mindgen.png,sha256=fN3E3oOFvAGYjJq-Pvg2f75jIMv7kg5WRU0EeEbxCWg,235353
@@ -458,8 +460,8 @@ mindroot/coreplugins/chat/static/neon.css,sha256=OCfT6HmdptmBCI4Y4DkObMmX2a3bC4s
458
460
  mindroot/coreplugins/chat/static/site.webmanifest,sha256=xER-QHwaPRf4ahSn2kR8aW4SrMrAMr2bpRCPH6p7ako,294
459
461
  mindroot/coreplugins/chat/static/user.png,sha256=J1krBpv71HvrF6-b0gpm57zye_vNW4QyPuSaDCiXGhg,206392
460
462
  mindroot/coreplugins/chat/static/css/admin-custom.css,sha256=j3PPzo9kzDkYu-mE06vL98m8ha9fkL4xfzei98Yjrwc,2825
461
- mindroot/coreplugins/chat/static/css/dark.css,sha256=DTfKG_a3PAMRSrVFELpw8oWyr4AWZrlnxgKGDK0tuoA,16680
462
- mindroot/coreplugins/chat/static/css/default.css,sha256=DTfKG_a3PAMRSrVFELpw8oWyr4AWZrlnxgKGDK0tuoA,16680
463
+ mindroot/coreplugins/chat/static/css/dark.css,sha256=7kF5BLQSPyvC8f63OxNM-rVf0SKtIihWiqT6kYzkpsk,17281
464
+ mindroot/coreplugins/chat/static/css/default.css,sha256=7kF5BLQSPyvC8f63OxNM-rVf0SKtIihWiqT6kYzkpsk,17281
463
465
  mindroot/coreplugins/chat/static/css/main.css,sha256=1DkmgA4Z80gu-fUgP8RNkwAYbp47jM4zibvR1Ry_xdQ,106
464
466
  mindroot/coreplugins/chat/static/css/mobile.css,sha256=XP58NamsA-JfhvDTyLe4EmXeNAbLMSo9daSh2dlr8NQ,3028
465
467
  mindroot/coreplugins/chat/static/css/reset.css,sha256=pN9wuf7laZeIt-QjbxqJXDfu7yOTVy7fshf-VMeXPu0,696
@@ -486,7 +488,7 @@ mindroot/coreplugins/chat/static/js/authfetch.js,sha256=a05Vj4pt6Qnu4WdF7jsismVi
486
488
  mindroot/coreplugins/chat/static/js/base.js,sha256=AtaHATjxpQNQ7Lv8RUlV0n3icrpmC2dmnkAdSI_v714,1285
487
489
  mindroot/coreplugins/chat/static/js/chat-history.js,sha256=J-9Kv5pNW2HWQuPbgGiyMESOFnAOd25cSLK-CxIU1Mg,5912
488
490
  mindroot/coreplugins/chat/static/js/chat.js,sha256=u2GqdPI4WGYz0v4d1GH2QbK9wTzsJzV6zr0Xz0E1nmw,13147
489
- mindroot/coreplugins/chat/static/js/chatform.js,sha256=YAgwtBeFKCmRXhhZe1NEJwRTJ_lH6vhRvVMiZ8MYVDk,11275
491
+ mindroot/coreplugins/chat/static/js/chatform.js,sha256=hXluGkTIxCMzp_3v1IPBwcDvAdjQqcrP5ojJd95I1wA,17823
490
492
  mindroot/coreplugins/chat/static/js/chatmessage.js,sha256=qoRb6XWKzzbMOIowIt3admWO8FaT2VqWGhN_anQlGSQ,1272
491
493
  mindroot/coreplugins/chat/static/js/cmdprefixes.js,sha256=Gip5WQXYb_VFK51OYlNtxT1fKUATKLsuVUpaGBKBwig,1022
492
494
  mindroot/coreplugins/chat/static/js/code-copy-button.js,sha256=-owTkgvP9Ibdd12yyFJcvAeN2jfqf0ETUtXgNuHnWrg,5890
@@ -907,16 +909,22 @@ mindroot/coreplugins/email/smtp_handler.py,sha256=KP-64SF_foMJ-NVKsZvSiwQc9Akugc
907
909
  mindroot/coreplugins/email/test_batch.py,sha256=gCe_E02K0sCrOWi4meEELx0rckeCRXaFJeJ40o9bhmQ,3788
908
910
  mindroot/coreplugins/email/test_email.py,sha256=SrG6Luts0r9YbDqSsBT8I45gIKZi3s3Q5d_dPNxj1Q0,5328
909
911
  mindroot/coreplugins/email/backup/mod.py,sha256=6vvFGpOzCCfEDYlaJBEixRgNRIfvp-mcD6siCwvtxcI,2118
912
+ mindroot/coreplugins/env_manager/__init__.py,sha256=zcQypdwauAdtsj1Be-QZcPeLU_T3LiYaoWKWmIRKsnY,100
913
+ mindroot/coreplugins/env_manager/mod.py,sha256=_wSNZHhDgdM2oBp3NTLd3O-Eribbm7nBsyztvRj9ZhA,6968
914
+ mindroot/coreplugins/env_manager/router.py,sha256=f0d3BoeuwdUXBVJ4Kco8PURIWue5g_xI-5PGi6_6pF8,1185
915
+ mindroot/coreplugins/env_manager/inject/admin.jinja2,sha256=BLGzp3Osc1aKo5-4rOwM3Gy4-FdoJQh7oYcTMrkaW-s,462
916
+ mindroot/coreplugins/env_manager/static/css/env-manager.css,sha256=Y-538HHrkYtiyX-l15sYUJ6mmspbJVJZniHQKz6sL9g,4288
917
+ mindroot/coreplugins/env_manager/static/js/env-manager.js,sha256=bdg7m3AL_keAcx1l1DBeXosgbTMtYRUUEWGtXTT-bt8,12411
910
918
  mindroot/coreplugins/events/__init__.py,sha256=qw8b_7YoN67q1kEdXYXmQkXycF1NaYb3dMbjP-6FsUs,19
911
919
  mindroot/coreplugins/events/mod.py,sha256=MsSFjiLMLJZ7QhUPpVBWKiyDnCzryquRyr329NoCACI,2
912
920
  mindroot/coreplugins/events/router.py,sha256=a-77306_fQPNHPXP5aYtbpfC0gbqMBNRu04aYOh75L4,3587
913
921
  mindroot/coreplugins/events/backup/mod.py,sha256=9QeJpg6WKwxRdjiKVHD1froguTe86FS2-2wWm1B9xa8,1832
914
922
  mindroot/coreplugins/events/backup/router_backup.py,sha256=ImU8xoxdSd45V1yOFVqdtDQ614V6CMsDZQ1gtJj0Mnk,254
915
923
  mindroot/coreplugins/home/mod.py,sha256=MsSFjiLMLJZ7QhUPpVBWKiyDnCzryquRyr329NoCACI,2
916
- mindroot/coreplugins/home/router.py,sha256=phwg4Fi5_b3a8YI2lknTuDg5EaVrmaMmbUA5BBPO1HA,788
924
+ mindroot/coreplugins/home/router.py,sha256=kzPg2eIimG_2Qa1bZ0gKCmoo2uzd8GurrePODOO1How,1982
917
925
  mindroot/coreplugins/home/static/css/dark.css,sha256=Q9FHaEsf9xeJjtouyKgr1Su6vTzsN07NHxxqDrDfyx8,14259
918
926
  mindroot/coreplugins/home/static/css/default.css,sha256=zlQjpwNvuJP_zULCWkFycWudF1GRQz9Y5mvdKpzXXFc,13354
919
- mindroot/coreplugins/home/static/css/enhanced.css,sha256=RUikx2GjFBnJsV1_-BqbJ45wkFsRJatMm-D_3KI6QhA,1711
927
+ mindroot/coreplugins/home/static/css/enhanced.css,sha256=oYGR_abXN5-wTmabQ3_QfSOoZ8sDRajsJJAfBgk-voE,3800
920
928
  mindroot/coreplugins/home/static/css/home.css,sha256=SpelrHEHA04M5hK6Xijnc-ZyyROZehmOkKQFt4JkOQk,2950
921
929
  mindroot/coreplugins/home/static/css/reset.css,sha256=pN9wuf7laZeIt-QjbxqJXDfu7yOTVy7fshf-VMeXPu0,696
922
930
  mindroot/coreplugins/home/static/css/update.css,sha256=HWh01CnuKX_1rXQIwBQtc95wi6xBLnup29Gi5I-UOBg,3002
@@ -1288,7 +1296,7 @@ mindroot/coreplugins/home/static/js/lit-html/node/directives/until.js,sha256=j1W
1288
1296
  mindroot/coreplugins/home/static/js/lit-html/node/directives/until.js.map,sha256=7xiwSZ7_fGtr5XwW-10Dzs8n9QE2VUfXaZ0Sd6d82L0,6567
1289
1297
  mindroot/coreplugins/home/static/js/lit-html/node/directives/when.js,sha256=NLe0NJ-6jqjVDUrT_DzmSpREsRaLo1yarzdYcV_5xHY,181
1290
1298
  mindroot/coreplugins/home/static/js/lit-html/node/directives/when.js.map,sha256=tOonih_-EaqrunhNGshA9xN--WIVdGikjg8MkVp0itQ,1534
1291
- mindroot/coreplugins/home/templates/home.jinja2,sha256=RphAQQhEjyJwDhYfUhd3YS8vvHwIAG7KuyCiU-II6TU,1837
1299
+ mindroot/coreplugins/home/templates/home.jinja2,sha256=wVaXYgaNK3Kn7wmrKEyBT24Az2l4_o7ctVbDhHPXgEw,2088
1292
1300
  mindroot/coreplugins/index/.gitignore,sha256=r_urXBxUYZhSuWyYzpRcAz5rHR0gVTERMrTI_gbBmCM,9
1293
1301
  mindroot/coreplugins/index/__init__.py,sha256=WU5revQym2nu-vAV-o5cdAXpuRlb_Juu0lzc9s6lIFU,74
1294
1302
  mindroot/coreplugins/index/default.json,sha256=E3Rj8gCAcFeppbS4CtXoGwXL94E7jFJQcNflDp4xrJg,2030
@@ -1759,7 +1767,7 @@ mindroot/coreplugins/user_service/backup/admin_setup.py,sha256=JGszAw8nVtnNiisSU
1759
1767
  mindroot/lib/__init__.py,sha256=388n_hMskU0TnZ4xT10US_kFkya-EPBjWcv7AZf_HOk,74
1760
1768
  mindroot/lib/butemplates.py,sha256=gfHGPTOjvoEenXsR7xokNuqMjOAPuC2DawheH1Ae4bU,12196
1761
1769
  mindroot/lib/chatcontext.py,sha256=OR63K63NMjaV7kXDf0MIcvOXFZhdiqr7LKgbyfZzjkE,6211
1762
- mindroot/lib/chatlog.py,sha256=JXiVJP8x8GPdvIZMgwAUc4HnwcszaUV2So0YMAms0rw,5544
1770
+ mindroot/lib/chatlog.py,sha256=B5kLuwMHyEC_AmjNbXWal-tdXwVnOwcZ4PPUK7Vb7NQ,5860
1763
1771
  mindroot/lib/json_escape.py,sha256=5cAmAdNbnYX2uyfQcnse2fFtNI0CdB-AfZ23RwaDm-k,884
1764
1772
  mindroot/lib/model_selector.py,sha256=Wz-8NZoiclmnhLeCNnI3WCuKFmjsO5HE4bK5F8GpZzU,1397
1765
1773
  mindroot/lib/parent_templates.py,sha256=elcQFFwrFtfAYfQOSTs06aiDDigN1f1R2f8I1V-wj6Q,2731
@@ -1767,7 +1775,8 @@ mindroot/lib/plugins.py,sha256=96QElzJ6cuS9BpQJQZMJblDCF2toO14Z80D7DRAjMDc,1592
1767
1775
  mindroot/lib/plugins_install.py,sha256=CUDkdDhIKkwN3U1hfKaTq8QUwGApFrNKmt3iycZuTKs,2042
1768
1776
  mindroot/lib/route_decorators.py,sha256=L3E-bn48zhuxk6YPtyc2oP76-5WuV_SmjxtngJeYGmM,2153
1769
1777
  mindroot/lib/session_files.py,sha256=Vl50YfEnKt8ucGSDIavsAdbAcf8IbMG3Fdgm4pEh2Yg,1263
1770
- mindroot/lib/templates.py,sha256=p7L__gsRDvDEUM_Ezc_rU1POYQHgguG73RrcCvFjQd0,14709
1778
+ mindroot/lib/streamcmd.py,sha256=f9n3OtryEkMbNNuFr5BAZn1EpSLUKuDZw-zpo97XxJk,4714
1779
+ mindroot/lib/templates.py,sha256=5dODCS6UeC9Y_PdMWlUuQCCZUUt2ICR0S1YF6XrG3eM,15154
1771
1780
  mindroot/lib/auth/__init__.py,sha256=5EZbCTcdlnTHYE0JNk8znWNSO7mOsokMOvRBjb5Mq-M,49
1772
1781
  mindroot/lib/auth/auth.py,sha256=2vhF_LfZcTPt2N2VLWy1ZP7h2pKFv7XM3xW1iRVOTkU,3129
1773
1782
  mindroot/lib/db/organize_models.py,sha256=kiadXfhGjCY16c36l1JmxXcKSH4ShWWEUnHi7WRRn9c,5028
@@ -1805,9 +1814,9 @@ mindroot/protocols/services/stream_chat.py,sha256=fMnPfwaB5fdNMBLTEg8BXKAGvrELKH
1805
1814
  mindroot/registry/__init__.py,sha256=40Xy9bmPHsgdIrOzbtBGzf4XMqXVi9P8oZTJhn0r654,151
1806
1815
  mindroot/registry/component_manager.py,sha256=WZFNPg4SNvpqsM5NFiC2DpgmrJQCyR9cNhrCBpp30Qk,995
1807
1816
  mindroot/registry/data_access.py,sha256=NgNMamxIjaKeYxzxnVaQz1Y-Rm0AI51si3788_JHUTM,5316
1808
- mindroot-7.7.0.dist-info/licenses/LICENSE,sha256=8plAmZh8y9ccuuqFFz4kp7G-cO_qsPgAOoHNvabSB4U,1070
1809
- mindroot-7.7.0.dist-info/METADATA,sha256=vRdkPJxrK_JO_X0BQ86va9qic9AmL_JREgaVMd_6F_I,10564
1810
- mindroot-7.7.0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
1811
- mindroot-7.7.0.dist-info/entry_points.txt,sha256=0bpyjMccLttx6VcjDp6zfJPN0Kk0rffor6IdIbP0j4c,50
1812
- mindroot-7.7.0.dist-info/top_level.txt,sha256=gwKm7DmNjhdrCJTYCrxa9Szne4lLpCtrEBltfsX-Mm8,9
1813
- mindroot-7.7.0.dist-info/RECORD,,
1817
+ mindroot-8.2.0.dist-info/licenses/LICENSE,sha256=8plAmZh8y9ccuuqFFz4kp7G-cO_qsPgAOoHNvabSB4U,1070
1818
+ mindroot-8.2.0.dist-info/METADATA,sha256=aNAkb4BPgjjdy_1OxxFYwxh0GdQPYtrL6pWlfLLotaY,356
1819
+ mindroot-8.2.0.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
1820
+ mindroot-8.2.0.dist-info/entry_points.txt,sha256=0bpyjMccLttx6VcjDp6zfJPN0Kk0rffor6IdIbP0j4c,50
1821
+ mindroot-8.2.0.dist-info/top_level.txt,sha256=gwKm7DmNjhdrCJTYCrxa9Szne4lLpCtrEBltfsX-Mm8,9
1822
+ mindroot-8.2.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5