mindroot 9.11.0__py3-none-any.whl → 9.12.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/home/templates/home.jinja2 +1 -0
- mindroot/docs/Makefile +20 -0
- mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
- mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
- mindroot/docs/_build/doctrees/environment.pickle +0 -0
- mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
- mindroot/docs/_build/doctrees/index.doctree +0 -0
- mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
- mindroot/docs/_build/doctrees/installation.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
- mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
- mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
- mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
- mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
- mindroot/docs/_build/html/.buildinfo +4 -0
- mindroot/docs/_build/html/.buildinfo.bak +4 -0
- mindroot/docs/_build/html/_images/envvar.png +0 -0
- mindroot/docs/_build/html/_images/files.png +0 -0
- mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
- mindroot/docs/_build/html/_images/mood.png +0 -0
- mindroot/docs/_build/html/_images/moon.png +0 -0
- mindroot/docs/_build/html/_images/openrouter.png +0 -0
- mindroot/docs/_build/html/_images/restart.png +0 -0
- mindroot/docs/_build/html/_modules/index.html +425 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
- mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
- mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
- mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
- mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
- mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
- mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
- mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
- mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
- mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
- mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
- mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
- mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
- mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
- mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
- mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
- mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- mindroot/docs/_build/html/_static/basic.css +906 -0
- mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/theme.css +4 -0
- mindroot/docs/_build/html/_static/custom.css +19 -0
- mindroot/docs/_build/html/_static/debug.css +69 -0
- mindroot/docs/_build/html/_static/doctools.js +149 -0
- mindroot/docs/_build/html/_static/documentation_options.js +13 -0
- mindroot/docs/_build/html/_static/file.png +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/jquery.js +2 -0
- mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
- mindroot/docs/_build/html/_static/js/theme.js +1 -0
- mindroot/docs/_build/html/_static/js/versions.js +228 -0
- mindroot/docs/_build/html/_static/language_data.js +192 -0
- mindroot/docs/_build/html/_static/minus.png +0 -0
- mindroot/docs/_build/html/_static/plus.png +0 -0
- mindroot/docs/_build/html/_static/pygments.css +232 -0
- mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
- mindroot/docs/_build/html/_static/searchtools.js +635 -0
- mindroot/docs/_build/html/_static/skeleton.css +296 -0
- mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
- mindroot/docs/_build/html/_static/styles/furo.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
- mindroot/docs/_build/html/chat_with_assistant.html +329 -0
- mindroot/docs/_build/html/developer_documentation.html +338 -0
- mindroot/docs/_build/html/genindex.html +4690 -0
- mindroot/docs/_build/html/getting_started.html +423 -0
- mindroot/docs/_build/html/index.html +357 -0
- mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
- mindroot/docs/_build/html/installation.html +330 -0
- mindroot/docs/_build/html/llm_api_key.html +337 -0
- mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
- mindroot/docs/_build/html/objects.inv +0 -0
- mindroot/docs/_build/html/programming_task.html +326 -0
- mindroot/docs/_build/html/py-modindex.html +1307 -0
- mindroot/docs/_build/html/search.html +307 -0
- mindroot/docs/_build/html/searchindex.js +1 -0
- mindroot/docs/_build/html/source/ahp.html +302 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
- mindroot/docs/_build/html/source/mindroot.html +811 -0
- mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
- mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
- mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
- mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
- mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
- mindroot/docs/_build/html/source/modules.html +377 -0
- mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
- mindroot/docs/_build/html/starting_mindroot.html +325 -0
- mindroot/docs/_build/html/user_documentation.html +333 -0
- mindroot/docs/_static/custom.css +19 -0
- mindroot/docs/chat_with_assistant.rst +14 -0
- mindroot/docs/conf.py +54 -0
- mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
- mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
- mindroot/docs/data/equivalent_flags.json +1 -0
- mindroot/docs/data/mcp/servers.json +9 -0
- mindroot/docs/data/models.json +57 -0
- mindroot/docs/data/plugin_manifest.json +95 -0
- mindroot/docs/data/preferred_models.json +12 -0
- mindroot/docs/data/providers.json +62 -0
- mindroot/docs/developer_documentation.rst +26 -0
- mindroot/docs/envvar.png +0 -0
- mindroot/docs/files.png +0 -0
- mindroot/docs/getting_started.rst +139 -0
- mindroot/docs/index.rst +38 -0
- mindroot/docs/install_plugins_with_tools.rst +25 -0
- mindroot/docs/installation.rst +21 -0
- mindroot/docs/installopenrouter.png +0 -0
- mindroot/docs/llm_api_key.rst +22 -0
- mindroot/docs/llm_plugin_installation.rst +27 -0
- mindroot/docs/make.bat +35 -0
- mindroot/docs/mood.png +0 -0
- mindroot/docs/moon.png +0 -0
- mindroot/docs/openrouter.png +0 -0
- mindroot/docs/personas/local/Assistant/avatar.png +0 -0
- mindroot/docs/personas/local/Assistant/faceref.png +0 -0
- mindroot/docs/personas/local/Assistant/persona.json +7 -0
- mindroot/docs/programming_task.rst +10 -0
- mindroot/docs/restart.png +0 -0
- mindroot/docs/source/ahp.rst +7 -0
- mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
- mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
- mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
- mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
- mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
- mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.rst +35 -0
- mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
- mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
- mindroot/docs/source/mindroot.lib.auth.rst +29 -0
- mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
- mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
- mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
- mindroot/docs/source/mindroot.lib.providers.rst +61 -0
- mindroot/docs/source/mindroot.lib.rst +152 -0
- mindroot/docs/source/mindroot.registry.rst +29 -0
- mindroot/docs/source/mindroot.rst +54 -0
- mindroot/docs/source/modules.rst +7 -0
- mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
- mindroot/docs/starting_mindroot.rst +12 -0
- mindroot/docs/user_documentation.rst +16 -0
- mindroot/server.py +10 -1
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +415 -8
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html class="writer-html5" lang="en" data-content_root="../../../../">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>mindroot.coreplugins.admin.asset_manager — MindRoot 9.10.0 documentation</title>
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=e59714d7" />
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<script src="../../../../_static/jquery.js?v=5d32c60e"></script>
|
|
14
|
+
<script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
15
|
+
<script src="../../../../_static/documentation_options.js?v=3c16008f"></script>
|
|
16
|
+
<script src="../../../../_static/doctools.js?v=9bcbadda"></script>
|
|
17
|
+
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
18
|
+
<script src="../../../../_static/js/theme.js"></script>
|
|
19
|
+
<link rel="index" title="Index" href="../../../../genindex.html" />
|
|
20
|
+
<link rel="search" title="Search" href="../../../../search.html" />
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body class="wy-body-for-nav">
|
|
24
|
+
<div class="wy-grid-for-nav">
|
|
25
|
+
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
26
|
+
<div class="wy-side-scroll">
|
|
27
|
+
<div class="wy-side-nav-search" style="background: #343131" >
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
<a href="../../../../index.html" class="icon icon-home">
|
|
32
|
+
MindRoot
|
|
33
|
+
</a>
|
|
34
|
+
<div role="search">
|
|
35
|
+
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
|
|
36
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
37
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
|
38
|
+
<input type="hidden" name="area" value="default" />
|
|
39
|
+
</form>
|
|
40
|
+
</div>
|
|
41
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
42
|
+
<!-- Local TOC -->
|
|
43
|
+
<div class="local-toc"></div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #343131" >
|
|
49
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
50
|
+
<a href="../../../../index.html">MindRoot</a>
|
|
51
|
+
</nav>
|
|
52
|
+
|
|
53
|
+
<div class="wy-nav-content">
|
|
54
|
+
<div class="rst-content">
|
|
55
|
+
<div role="navigation" aria-label="Page navigation">
|
|
56
|
+
<ul class="wy-breadcrumbs">
|
|
57
|
+
<li><a href="../../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
58
|
+
<li class="breadcrumb-item"><a href="../../../index.html">Module code</a></li>
|
|
59
|
+
<li class="breadcrumb-item active">mindroot.coreplugins.admin.asset_manager</li>
|
|
60
|
+
<li class="wy-breadcrumbs-aside">
|
|
61
|
+
</li>
|
|
62
|
+
</ul>
|
|
63
|
+
<hr/>
|
|
64
|
+
</div>
|
|
65
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
66
|
+
<div itemprop="articleBody">
|
|
67
|
+
|
|
68
|
+
<h1>Source code for mindroot.coreplugins.admin.asset_manager</h1><div class="highlight"><pre>
|
|
69
|
+
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">hashlib</span>
|
|
70
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">shutil</span>
|
|
71
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
|
72
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span>
|
|
73
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
74
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
75
|
+
|
|
76
|
+
<div class="viewcode-block" id="AssetManager">
|
|
77
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager">[docs]</a>
|
|
78
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">AssetManager</span><span class="p">:</span>
|
|
79
|
+
<span class="w"> </span><span class="sd">"""Manages deduplicated asset storage for personas"""</span>
|
|
80
|
+
|
|
81
|
+
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base_dir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"registry_assets"</span><span class="p">):</span>
|
|
82
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">base_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">base_dir</span><span class="p">)</span>
|
|
83
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_dir</span> <span class="o">/</span> <span class="s2">"assets"</span>
|
|
84
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_dir</span> <span class="o">/</span> <span class="s2">"metadata"</span>
|
|
85
|
+
|
|
86
|
+
<span class="c1"># Create directories</span>
|
|
87
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
88
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
89
|
+
|
|
90
|
+
<div class="viewcode-block" id="AssetManager.calculate_file_hash">
|
|
91
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.calculate_file_hash">[docs]</a>
|
|
92
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">calculate_file_hash</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
93
|
+
<span class="w"> </span><span class="sd">"""Calculate SHA256 hash of a file"""</span>
|
|
94
|
+
<span class="n">sha256_hash</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha256</span><span class="p">()</span>
|
|
95
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
96
|
+
<span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4096</span><span class="p">),</span> <span class="sa">b</span><span class="s2">""</span><span class="p">):</span>
|
|
97
|
+
<span class="n">sha256_hash</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span>
|
|
98
|
+
<span class="k">return</span> <span class="n">sha256_hash</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span></div>
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
<div class="viewcode-block" id="AssetManager.calculate_content_hash">
|
|
102
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.calculate_content_hash">[docs]</a>
|
|
103
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">calculate_content_hash</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
104
|
+
<span class="w"> </span><span class="sd">"""Calculate SHA256 hash of content bytes"""</span>
|
|
105
|
+
<span class="k">return</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha256</span><span class="p">(</span><span class="n">content</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span></div>
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
<div class="viewcode-block" id="AssetManager.store_asset">
|
|
109
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.store_asset">[docs]</a>
|
|
110
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">store_asset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">asset_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"image"</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]:</span>
|
|
111
|
+
<span class="w"> </span><span class="sd">"""Store an asset and return (hash, was_new)"""</span>
|
|
112
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">source_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
113
|
+
<span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Source file not found: </span><span class="si">{</span><span class="n">source_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
114
|
+
|
|
115
|
+
<span class="c1"># Calculate hash</span>
|
|
116
|
+
<span class="n">file_hash</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">calculate_file_hash</span><span class="p">(</span><span class="n">source_path</span><span class="p">)</span>
|
|
117
|
+
<span class="n">asset_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span> <span class="o">/</span> <span class="n">file_hash</span>
|
|
118
|
+
|
|
119
|
+
<span class="c1"># Check if asset already exists</span>
|
|
120
|
+
<span class="k">if</span> <span class="n">asset_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
121
|
+
<span class="c1"># Update reference count</span>
|
|
122
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">_increment_reference_count</span><span class="p">(</span><span class="n">file_hash</span><span class="p">)</span>
|
|
123
|
+
<span class="k">return</span> <span class="n">file_hash</span><span class="p">,</span> <span class="kc">False</span>
|
|
124
|
+
|
|
125
|
+
<span class="c1"># Copy file to assets directory</span>
|
|
126
|
+
<span class="n">shutil</span><span class="o">.</span><span class="n">copy2</span><span class="p">(</span><span class="n">source_path</span><span class="p">,</span> <span class="n">asset_path</span><span class="p">)</span>
|
|
127
|
+
|
|
128
|
+
<span class="c1"># Create metadata</span>
|
|
129
|
+
<span class="n">metadata</span> <span class="o">=</span> <span class="p">{</span>
|
|
130
|
+
<span class="s2">"hash"</span><span class="p">:</span> <span class="n">file_hash</span><span class="p">,</span>
|
|
131
|
+
<span class="s2">"type"</span><span class="p">:</span> <span class="n">asset_type</span><span class="p">,</span>
|
|
132
|
+
<span class="s2">"size"</span><span class="p">:</span> <span class="n">source_path</span><span class="o">.</span><span class="n">stat</span><span class="p">()</span><span class="o">.</span><span class="n">st_size</span><span class="p">,</span>
|
|
133
|
+
<span class="s2">"original_name"</span><span class="p">:</span> <span class="n">source_path</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
|
134
|
+
<span class="s2">"reference_count"</span><span class="p">:</span> <span class="mi">1</span>
|
|
135
|
+
<span class="p">}</span>
|
|
136
|
+
|
|
137
|
+
<span class="n">metadata_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_hash</span><span class="si">}</span><span class="s2">.json"</span>
|
|
138
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">metadata_path</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
139
|
+
<span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">metadata</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
|
140
|
+
|
|
141
|
+
<span class="k">return</span> <span class="n">file_hash</span><span class="p">,</span> <span class="kc">True</span></div>
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
<div class="viewcode-block" id="AssetManager.store_content">
|
|
145
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.store_content">[docs]</a>
|
|
146
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">store_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">filename</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">asset_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"image"</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]:</span>
|
|
147
|
+
<span class="w"> </span><span class="sd">"""Store content bytes and return (hash, was_new)"""</span>
|
|
148
|
+
<span class="n">file_hash</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">calculate_content_hash</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
|
149
|
+
<span class="n">asset_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span> <span class="o">/</span> <span class="n">file_hash</span>
|
|
150
|
+
|
|
151
|
+
<span class="c1"># Check if asset already exists</span>
|
|
152
|
+
<span class="k">if</span> <span class="n">asset_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
153
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">_increment_reference_count</span><span class="p">(</span><span class="n">file_hash</span><span class="p">)</span>
|
|
154
|
+
<span class="k">return</span> <span class="n">file_hash</span><span class="p">,</span> <span class="kc">False</span>
|
|
155
|
+
|
|
156
|
+
<span class="c1"># Write content to assets directory</span>
|
|
157
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">asset_path</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
158
|
+
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
|
159
|
+
|
|
160
|
+
<span class="c1"># Create metadata</span>
|
|
161
|
+
<span class="n">metadata</span> <span class="o">=</span> <span class="p">{</span>
|
|
162
|
+
<span class="s2">"hash"</span><span class="p">:</span> <span class="n">file_hash</span><span class="p">,</span>
|
|
163
|
+
<span class="s2">"type"</span><span class="p">:</span> <span class="n">asset_type</span><span class="p">,</span>
|
|
164
|
+
<span class="s2">"size"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">content</span><span class="p">),</span>
|
|
165
|
+
<span class="s2">"original_name"</span><span class="p">:</span> <span class="n">filename</span><span class="p">,</span>
|
|
166
|
+
<span class="s2">"reference_count"</span><span class="p">:</span> <span class="mi">1</span>
|
|
167
|
+
<span class="p">}</span>
|
|
168
|
+
|
|
169
|
+
<span class="n">metadata_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_hash</span><span class="si">}</span><span class="s2">.json"</span>
|
|
170
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">metadata_path</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
171
|
+
<span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">metadata</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
|
172
|
+
|
|
173
|
+
<span class="k">return</span> <span class="n">file_hash</span><span class="p">,</span> <span class="kc">True</span></div>
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
<div class="viewcode-block" id="AssetManager.get_asset_path">
|
|
177
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.get_asset_path">[docs]</a>
|
|
178
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_asset_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_hash</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Path</span><span class="p">]:</span>
|
|
179
|
+
<span class="w"> </span><span class="sd">"""Get the path to an asset by hash"""</span>
|
|
180
|
+
<span class="n">asset_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span> <span class="o">/</span> <span class="n">file_hash</span>
|
|
181
|
+
<span class="k">return</span> <span class="n">asset_path</span> <span class="k">if</span> <span class="n">asset_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="k">else</span> <span class="kc">None</span></div>
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
<div class="viewcode-block" id="AssetManager.get_asset_metadata">
|
|
185
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.get_asset_metadata">[docs]</a>
|
|
186
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_asset_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_hash</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]:</span>
|
|
187
|
+
<span class="w"> </span><span class="sd">"""Get metadata for an asset"""</span>
|
|
188
|
+
<span class="n">metadata_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_hash</span><span class="si">}</span><span class="s2">.json"</span>
|
|
189
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">metadata_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
190
|
+
<span class="k">return</span> <span class="kc">None</span>
|
|
191
|
+
|
|
192
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">metadata_path</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
193
|
+
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span></div>
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_increment_reference_count</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_hash</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
197
|
+
<span class="w"> </span><span class="sd">"""Increment reference count for an asset"""</span>
|
|
198
|
+
<span class="n">metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_asset_metadata</span><span class="p">(</span><span class="n">file_hash</span><span class="p">)</span>
|
|
199
|
+
<span class="k">if</span> <span class="n">metadata</span><span class="p">:</span>
|
|
200
|
+
<span class="n">metadata</span><span class="p">[</span><span class="s1">'reference_count'</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
201
|
+
<span class="n">metadata_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_hash</span><span class="si">}</span><span class="s2">.json"</span>
|
|
202
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">metadata_path</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
203
|
+
<span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">metadata</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
|
204
|
+
|
|
205
|
+
<div class="viewcode-block" id="AssetManager.decrement_reference_count">
|
|
206
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.decrement_reference_count">[docs]</a>
|
|
207
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">decrement_reference_count</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_hash</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
208
|
+
<span class="w"> </span><span class="sd">"""Decrement reference count and delete if zero. Returns True if deleted."""</span>
|
|
209
|
+
<span class="n">metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_asset_metadata</span><span class="p">(</span><span class="n">file_hash</span><span class="p">)</span>
|
|
210
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">metadata</span><span class="p">:</span>
|
|
211
|
+
<span class="k">return</span> <span class="kc">False</span>
|
|
212
|
+
|
|
213
|
+
<span class="n">metadata</span><span class="p">[</span><span class="s1">'reference_count'</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">1</span>
|
|
214
|
+
|
|
215
|
+
<span class="k">if</span> <span class="n">metadata</span><span class="p">[</span><span class="s1">'reference_count'</span><span class="p">]</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
|
216
|
+
<span class="c1"># Delete asset and metadata</span>
|
|
217
|
+
<span class="n">asset_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span> <span class="o">/</span> <span class="n">file_hash</span>
|
|
218
|
+
<span class="n">metadata_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_hash</span><span class="si">}</span><span class="s2">.json"</span>
|
|
219
|
+
|
|
220
|
+
<span class="k">if</span> <span class="n">asset_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
221
|
+
<span class="n">asset_path</span><span class="o">.</span><span class="n">unlink</span><span class="p">()</span>
|
|
222
|
+
<span class="k">if</span> <span class="n">metadata_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
223
|
+
<span class="n">metadata_path</span><span class="o">.</span><span class="n">unlink</span><span class="p">()</span>
|
|
224
|
+
|
|
225
|
+
<span class="k">return</span> <span class="kc">True</span>
|
|
226
|
+
<span class="k">else</span><span class="p">:</span>
|
|
227
|
+
<span class="c1"># Update metadata</span>
|
|
228
|
+
<span class="n">metadata_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_hash</span><span class="si">}</span><span class="s2">.json"</span>
|
|
229
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">metadata_path</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
230
|
+
<span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">metadata</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
|
231
|
+
|
|
232
|
+
<span class="k">return</span> <span class="kc">False</span></div>
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
<div class="viewcode-block" id="AssetManager.get_stats">
|
|
236
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.admin.html#mindroot.coreplugins.admin.asset_manager.AssetManager.get_stats">[docs]</a>
|
|
237
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_stats</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">:</span>
|
|
238
|
+
<span class="w"> </span><span class="sd">"""Get storage statistics"""</span>
|
|
239
|
+
<span class="n">total_assets</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s1">'*'</span><span class="p">)))</span>
|
|
240
|
+
<span class="n">total_size</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">stat</span><span class="p">()</span><span class="o">.</span><span class="n">st_size</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">assets_dir</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s1">'*'</span><span class="p">))</span>
|
|
241
|
+
|
|
242
|
+
<span class="c1"># Calculate total references</span>
|
|
243
|
+
<span class="n">total_references</span> <span class="o">=</span> <span class="mi">0</span>
|
|
244
|
+
<span class="k">for</span> <span class="n">metadata_file</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata_dir</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s1">'*.json'</span><span class="p">):</span>
|
|
245
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">metadata_file</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
246
|
+
<span class="n">metadata</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
|
247
|
+
<span class="n">total_references</span> <span class="o">+=</span> <span class="n">metadata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'reference_count'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
|
248
|
+
|
|
249
|
+
<span class="k">return</span> <span class="p">{</span>
|
|
250
|
+
<span class="s1">'total_assets'</span><span class="p">:</span> <span class="n">total_assets</span><span class="p">,</span>
|
|
251
|
+
<span class="s1">'total_size_bytes'</span><span class="p">:</span> <span class="n">total_size</span><span class="p">,</span>
|
|
252
|
+
<span class="s1">'total_references'</span><span class="p">:</span> <span class="n">total_references</span><span class="p">,</span>
|
|
253
|
+
<span class="s1">'deduplication_ratio'</span><span class="p">:</span> <span class="n">total_references</span> <span class="o">/</span> <span class="nb">max</span><span class="p">(</span><span class="n">total_assets</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
254
|
+
<span class="p">}</span></div>
|
|
255
|
+
</div>
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
<span class="c1"># Global asset manager instance</span>
|
|
259
|
+
<span class="n">asset_manager</span> <span class="o">=</span> <span class="n">AssetManager</span><span class="p">()</span>
|
|
260
|
+
</pre></div>
|
|
261
|
+
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
<footer>
|
|
265
|
+
|
|
266
|
+
<hr/>
|
|
267
|
+
|
|
268
|
+
<div role="contentinfo">
|
|
269
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
273
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
274
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
</footer>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
</section>
|
|
281
|
+
</div>
|
|
282
|
+
<script>
|
|
283
|
+
jQuery(function () {
|
|
284
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
285
|
+
});
|
|
286
|
+
</script>
|
|
287
|
+
|
|
288
|
+
</body>
|
|
289
|
+
</html>
|