mindroot 9.10.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/__init__.py +1 -0
- mindroot/coreplugins/__init__.py +2 -0
- 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/lib/plugins/default_plugin_manifest.json +1 -1
- mindroot/server.py +10 -1
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +418 -10
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,409 @@
|
|
|
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.env_manager.mod — 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
|
+
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
|
43
|
+
<ul>
|
|
44
|
+
<li class="toctree-l1"><a class="reference internal" href="../../../../getting_started.html">Getting Started</a></li>
|
|
45
|
+
</ul>
|
|
46
|
+
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</nav>
|
|
50
|
+
|
|
51
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #343131" >
|
|
52
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
53
|
+
<a href="../../../../index.html">MindRoot</a>
|
|
54
|
+
</nav>
|
|
55
|
+
|
|
56
|
+
<div class="wy-nav-content">
|
|
57
|
+
<div class="rst-content">
|
|
58
|
+
<div role="navigation" aria-label="Page navigation">
|
|
59
|
+
<ul class="wy-breadcrumbs">
|
|
60
|
+
<li><a href="../../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
61
|
+
<li class="breadcrumb-item"><a href="../../../index.html">Module code</a></li>
|
|
62
|
+
<li class="breadcrumb-item active">mindroot.coreplugins.env_manager.mod</li>
|
|
63
|
+
<li class="wy-breadcrumbs-aside">
|
|
64
|
+
</li>
|
|
65
|
+
</ul>
|
|
66
|
+
<hr/>
|
|
67
|
+
</div>
|
|
68
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
69
|
+
<div itemprop="articleBody">
|
|
70
|
+
|
|
71
|
+
<h1>Source code for mindroot.coreplugins.env_manager.mod</h1><div class="highlight"><pre>
|
|
72
|
+
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
73
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
74
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
75
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span>
|
|
76
|
+
<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>
|
|
77
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.providers.services</span><span class="w"> </span><span class="kn">import</span> <span class="n">service</span>
|
|
78
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">lib</span>
|
|
79
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.plugins</span><span class="w"> </span><span class="kn">import</span> <span class="n">list_enabled</span><span class="p">,</span> <span class="n">get_plugin_path</span>
|
|
80
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">mindroot.coreplugins</span>
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
<div class="viewcode-block" id="should_skip_directory">
|
|
84
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.env_manager.html#mindroot.coreplugins.env_manager.mod.should_skip_directory">[docs]</a>
|
|
85
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">should_skip_directory</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
|
|
86
|
+
<span class="w"> </span><span class="sd">"""Check if a directory should be skipped during scanning.</span>
|
|
87
|
+
<span class="sd"> </span>
|
|
88
|
+
<span class="sd"> Args:</span>
|
|
89
|
+
<span class="sd"> directory (str): Path to check</span>
|
|
90
|
+
<span class="sd"> </span>
|
|
91
|
+
<span class="sd"> Returns:</span>
|
|
92
|
+
<span class="sd"> bool: True if the directory should be skipped, False otherwise</span>
|
|
93
|
+
<span class="sd"> """</span>
|
|
94
|
+
<span class="c1"># Directories to skip</span>
|
|
95
|
+
<span class="n">skip_dirs</span> <span class="o">=</span> <span class="p">[</span>
|
|
96
|
+
<span class="s1">'__pycache__'</span><span class="p">,</span>
|
|
97
|
+
<span class="s1">'node_modules'</span><span class="p">,</span>
|
|
98
|
+
<span class="s1">'static/js'</span><span class="p">,</span>
|
|
99
|
+
<span class="s1">'static/css'</span><span class="p">,</span>
|
|
100
|
+
<span class="s1">'venv'</span><span class="p">,</span>
|
|
101
|
+
<span class="s1">'env'</span><span class="p">,</span>
|
|
102
|
+
<span class="s1">'.env'</span><span class="p">,</span>
|
|
103
|
+
<span class="s1">'virtualenv'</span><span class="p">,</span>
|
|
104
|
+
<span class="s1">'dist-packages'</span><span class="p">,</span>
|
|
105
|
+
<span class="s1">'.git'</span><span class="p">,</span>
|
|
106
|
+
<span class="s1">'.idea'</span><span class="p">,</span>
|
|
107
|
+
<span class="s1">'.vscode'</span><span class="p">,</span>
|
|
108
|
+
<span class="s1">'build'</span><span class="p">,</span>
|
|
109
|
+
<span class="s1">'dist'</span><span class="p">,</span>
|
|
110
|
+
<span class="s1">'egg-info'</span>
|
|
111
|
+
<span class="p">]</span>
|
|
112
|
+
|
|
113
|
+
<span class="c1"># Special handling for site-packages - only skip if it's not mindroot related</span>
|
|
114
|
+
<span class="k">if</span> <span class="s1">'site-packages'</span> <span class="ow">in</span> <span class="n">directory</span><span class="p">:</span>
|
|
115
|
+
<span class="c1"># Allow mindroot core plugins in site-packages</span>
|
|
116
|
+
<span class="k">if</span> <span class="s1">'mindroot/coreplugins'</span> <span class="ow">in</span> <span class="n">directory</span> <span class="ow">or</span> <span class="s1">'mindroot/lib'</span> <span class="ow">in</span> <span class="n">directory</span><span class="p">:</span>
|
|
117
|
+
<span class="k">return</span> <span class="kc">False</span>
|
|
118
|
+
<span class="c1"># Skip other site-packages content</span>
|
|
119
|
+
<span class="k">return</span> <span class="kc">True</span>
|
|
120
|
+
|
|
121
|
+
<span class="c1"># Check if any part of the path contains a directory to skip</span>
|
|
122
|
+
<span class="n">path_parts</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span><span class="o">.</span><span class="n">parts</span>
|
|
123
|
+
<span class="k">for</span> <span class="n">skip_dir</span> <span class="ow">in</span> <span class="n">skip_dirs</span><span class="p">:</span>
|
|
124
|
+
<span class="k">if</span> <span class="n">skip_dir</span> <span class="ow">in</span> <span class="n">path_parts</span><span class="p">:</span>
|
|
125
|
+
<span class="k">return</span> <span class="kc">True</span>
|
|
126
|
+
|
|
127
|
+
<span class="k">return</span> <span class="kc">False</span></div>
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
<div class="viewcode-block" id="scan_directory_for_env_vars">
|
|
132
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.env_manager.html#mindroot.coreplugins.env_manager.mod.scan_directory_for_env_vars">[docs]</a>
|
|
133
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">scan_directory_for_env_vars</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
|
|
134
|
+
<span class="w"> </span><span class="sd">"""Scan a directory for environment variable references using grep.</span>
|
|
135
|
+
<span class="sd"> </span>
|
|
136
|
+
<span class="sd"> Args:</span>
|
|
137
|
+
<span class="sd"> directory (str): Path to the directory to scan</span>
|
|
138
|
+
<span class="sd"> </span>
|
|
139
|
+
<span class="sd"> Returns:</span>
|
|
140
|
+
<span class="sd"> set: Set of environment variable names found</span>
|
|
141
|
+
<span class="sd"> """</span>
|
|
142
|
+
<span class="n">env_vars</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
143
|
+
|
|
144
|
+
<span class="c1"># Skip if this is a directory we should ignore</span>
|
|
145
|
+
<span class="k">if</span> <span class="n">should_skip_directory</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
|
|
146
|
+
<span class="k">return</span> <span class="n">env_vars</span>
|
|
147
|
+
|
|
148
|
+
<span class="k">try</span><span class="p">:</span>
|
|
149
|
+
<span class="c1"># Use grep to find os.environ references - much faster than parsing each file</span>
|
|
150
|
+
<span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span>
|
|
151
|
+
<span class="s1">'grep'</span><span class="p">,</span> <span class="s1">'-r'</span><span class="p">,</span>
|
|
152
|
+
<span class="s1">'-E'</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"(os\.environ(\.get\(|\[)|os\.getenv\(|getenv\()"</span><span class="p">,</span>
|
|
153
|
+
<span class="s1">'--include=*.py'</span><span class="p">,</span>
|
|
154
|
+
<span class="s1">'--exclude-dir=venv'</span><span class="p">,</span>
|
|
155
|
+
<span class="s1">'--exclude-dir=env'</span><span class="p">,</span>
|
|
156
|
+
<span class="s1">'--exclude-dir=.env'</span><span class="p">,</span>
|
|
157
|
+
<span class="s1">'--exclude-dir=site-packages'</span><span class="p">,</span>
|
|
158
|
+
<span class="s1">'--exclude-dir=dist-packages'</span><span class="p">,</span>
|
|
159
|
+
<span class="s1">'--exclude-dir=__pycache__'</span><span class="p">,</span>
|
|
160
|
+
<span class="s1">'--exclude-dir=node_modules'</span><span class="p">,</span>
|
|
161
|
+
<span class="n">directory</span>
|
|
162
|
+
<span class="p">]</span>
|
|
163
|
+
|
|
164
|
+
<span class="n">result</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">capture_output</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
165
|
+
|
|
166
|
+
<span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">returncode</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]:</span> <span class="c1"># 0 = matches found, 1 = no matches</span>
|
|
167
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error running grep on </span><span class="si">{</span><span class="n">directory</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">stderr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
168
|
+
<span class="k">return</span> <span class="n">env_vars</span>
|
|
169
|
+
|
|
170
|
+
<span class="c1"># Extract variable names using regex</span>
|
|
171
|
+
<span class="n">patterns</span> <span class="o">=</span> <span class="p">[</span>
|
|
172
|
+
<span class="sa">r</span><span class="s2">"os\.environ\.get\(['</span><span class="se">\"</span><span class="s2">]([A-Za-z0-9_]+)['</span><span class="se">\"</span><span class="s2">]"</span><span class="p">,</span> <span class="c1"># os.environ.get('VAR_NAME')</span>
|
|
173
|
+
<span class="sa">r</span><span class="s2">"os\.environ\[['</span><span class="se">\"</span><span class="s2">]([A-Za-z0-9_]+)['</span><span class="se">\"</span><span class="s2">]\]"</span><span class="p">,</span> <span class="c1"># os.environ['VAR_NAME']</span>
|
|
174
|
+
<span class="sa">r</span><span class="s2">"os\.getenv\(['</span><span class="se">\"</span><span class="s2">]([A-Za-z0-9_]+)['</span><span class="se">\"</span><span class="s2">]"</span><span class="p">,</span> <span class="c1"># os.getenv('VAR_NAME')</span>
|
|
175
|
+
<span class="sa">r</span><span class="s2">"(?<!os\.)getenv\(['</span><span class="se">\"</span><span class="s2">]([A-Za-z0-9_]+)['</span><span class="se">\"</span><span class="s2">]"</span><span class="p">,</span> <span class="c1"># getenv('VAR_NAME') without os. prefix</span>
|
|
176
|
+
<span class="p">]</span>
|
|
177
|
+
|
|
178
|
+
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">splitlines</span><span class="p">():</span>
|
|
179
|
+
<span class="c1"># Skip lines that are comments containing example patterns</span>
|
|
180
|
+
<span class="k">if</span> <span class="s1">'# os.environ.get('</span> <span class="ow">in</span> <span class="n">line</span> <span class="ow">or</span> <span class="s1">'# os.environ['</span> <span class="ow">in</span> <span class="n">line</span> <span class="ow">or</span> <span class="s1">'# os.getenv('</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
|
|
181
|
+
<span class="k">continue</span>
|
|
182
|
+
|
|
183
|
+
<span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">patterns</span><span class="p">:</span>
|
|
184
|
+
<span class="k">for</span> <span class="n">match</span> <span class="ow">in</span> <span class="n">re</span><span class="o">.</span><span class="n">finditer</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">line</span><span class="p">):</span>
|
|
185
|
+
<span class="n">var_name</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
186
|
+
<span class="c1"># Filter out obvious false positives</span>
|
|
187
|
+
<span class="k">if</span> <span class="n">var_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'VAR_NAME'</span><span class="p">,</span> <span class="s1">'VARIABLE_NAME'</span><span class="p">,</span> <span class="s1">'ENV_VAR'</span><span class="p">]:</span>
|
|
188
|
+
<span class="n">env_vars</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">var_name</span><span class="p">)</span>
|
|
189
|
+
|
|
190
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
191
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error scanning directory </span><span class="si">{</span><span class="n">directory</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
192
|
+
|
|
193
|
+
<span class="k">return</span> <span class="n">env_vars</span></div>
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
<div class="viewcode-block" id="scan_env_vars">
|
|
197
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.env_manager.html#mindroot.coreplugins.env_manager.mod.scan_env_vars">[docs]</a>
|
|
198
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
199
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">scan_env_vars</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
200
|
+
<span class="w"> </span><span class="sd">"""Scan all enabled plugins for environment variable references.</span>
|
|
201
|
+
<span class="sd"> </span>
|
|
202
|
+
<span class="sd"> Debug logs added to help troubleshoot path resolution and scanning.</span>
|
|
203
|
+
<span class="sd"> </span>
|
|
204
|
+
<span class="sd"> Returns:</span>
|
|
205
|
+
<span class="sd"> dict: Dictionary with plugin names as keys and environment variable info as values</span>
|
|
206
|
+
<span class="sd"> """</span>
|
|
207
|
+
<span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
|
|
208
|
+
<span class="n">all_env_vars</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
209
|
+
|
|
210
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"[ENV_MANAGER DEBUG] Starting scan_env_vars"</span><span class="p">)</span>
|
|
211
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Current working directory: </span><span class="si">{</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
212
|
+
|
|
213
|
+
<span class="c1"># Get all enabled plugins</span>
|
|
214
|
+
<span class="n">enabled_plugins</span> <span class="o">=</span> <span class="n">list_enabled</span><span class="p">()</span>
|
|
215
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Found </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">enabled_plugins</span><span class="p">)</span><span class="si">}</span><span class="s2"> enabled plugins: </span><span class="si">{</span><span class="p">[</span><span class="n">name</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">cat</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">enabled_plugins</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
216
|
+
|
|
217
|
+
<span class="k">for</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">enabled_plugins</span><span class="p">:</span>
|
|
218
|
+
<span class="n">plugin_path</span> <span class="o">=</span> <span class="n">get_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
219
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: path = </span><span class="si">{</span><span class="n">plugin_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
220
|
+
<span class="k">if</span> <span class="n">plugin_path</span><span class="p">:</span>
|
|
221
|
+
<span class="c1"># If plugin_path is a file, get its directory</span>
|
|
222
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">):</span>
|
|
223
|
+
<span class="n">plugin_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">)</span>
|
|
224
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: converted to directory = </span><span class="si">{</span><span class="n">plugin_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
225
|
+
|
|
226
|
+
<span class="c1"># Skip scanning if this is a directory we should ignore</span>
|
|
227
|
+
<span class="k">if</span> <span class="n">should_skip_directory</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">):</span>
|
|
228
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: skipping directory </span><span class="si">{</span><span class="n">plugin_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
229
|
+
<span class="k">continue</span>
|
|
230
|
+
|
|
231
|
+
<span class="c1"># Scan the plugin directory for environment variable references</span>
|
|
232
|
+
<span class="n">env_vars</span> <span class="o">=</span> <span class="n">scan_directory_for_env_vars</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">)</span>
|
|
233
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: found </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">env_vars</span><span class="p">)</span><span class="si">}</span><span class="s2"> env vars: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="n">env_vars</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
234
|
+
|
|
235
|
+
<span class="k">if</span> <span class="n">env_vars</span><span class="p">:</span>
|
|
236
|
+
<span class="n">results</span><span class="p">[</span><span class="n">plugin_name</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
|
237
|
+
<span class="s1">'plugin_name'</span><span class="p">:</span> <span class="n">plugin_name</span><span class="p">,</span>
|
|
238
|
+
<span class="s1">'category'</span><span class="p">:</span> <span class="n">category</span><span class="p">,</span>
|
|
239
|
+
<span class="s1">'env_vars'</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">env_vars</span><span class="p">)</span>
|
|
240
|
+
<span class="p">}</span>
|
|
241
|
+
<span class="n">all_env_vars</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">env_vars</span><span class="p">)</span>
|
|
242
|
+
<span class="k">else</span><span class="p">:</span>
|
|
243
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: no path found"</span><span class="p">)</span>
|
|
244
|
+
|
|
245
|
+
<span class="c1"># Also scan the lib directory (but not coreplugins since individual plugins are already scanned)</span>
|
|
246
|
+
<span class="n">lib_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">lib</span><span class="o">.</span><span class="vm">__file__</span><span class="p">)</span>
|
|
247
|
+
|
|
248
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] lib.__file__ = </span><span class="si">{</span><span class="n">lib</span><span class="o">.</span><span class="vm">__file__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
249
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] lib_path = </span><span class="si">{</span><span class="n">lib_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
250
|
+
|
|
251
|
+
<span class="c1"># Scan lib directory for additional core variables</span>
|
|
252
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">lib_path</span><span class="p">):</span>
|
|
253
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Scanning lib directory: </span><span class="si">{</span><span class="n">lib_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
254
|
+
<span class="n">lib_vars</span> <span class="o">=</span> <span class="n">scan_directory_for_env_vars</span><span class="p">(</span><span class="n">lib_path</span><span class="p">)</span>
|
|
255
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Lib vars found: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="n">lib_vars</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
256
|
+
|
|
257
|
+
<span class="k">if</span> <span class="n">lib_vars</span><span class="p">:</span>
|
|
258
|
+
<span class="n">results</span><span class="p">[</span><span class="s1">'lib'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
|
259
|
+
<span class="s1">'plugin_name'</span><span class="p">:</span> <span class="s1">'lib'</span><span class="p">,</span>
|
|
260
|
+
<span class="s1">'category'</span><span class="p">:</span> <span class="s1">'core'</span><span class="p">,</span>
|
|
261
|
+
<span class="s1">'env_vars'</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">lib_vars</span><span class="p">))</span>
|
|
262
|
+
<span class="p">}</span>
|
|
263
|
+
<span class="n">all_env_vars</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">lib_vars</span><span class="p">)</span>
|
|
264
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Added lib section to results"</span><span class="p">)</span>
|
|
265
|
+
<span class="k">else</span><span class="p">:</span>
|
|
266
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Lib directory not found: </span><span class="si">{</span><span class="n">lib_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
267
|
+
|
|
268
|
+
<span class="c1"># Note: We don't scan the entire coreplugins directory separately because</span>
|
|
269
|
+
<span class="c1"># individual core plugins are already being scanned above in the enabled_plugins loop.</span>
|
|
270
|
+
<span class="c1"># This prevents duplicate entries that would show up as "Multiple Plugins".</span>
|
|
271
|
+
|
|
272
|
+
<span class="c1"># Get current environment variables</span>
|
|
273
|
+
<span class="n">current_env</span> <span class="o">=</span> <span class="p">{}</span>
|
|
274
|
+
<span class="k">for</span> <span class="n">var_name</span> <span class="ow">in</span> <span class="n">all_env_vars</span><span class="p">:</span>
|
|
275
|
+
<span class="k">if</span> <span class="n">var_name</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
|
|
276
|
+
<span class="c1"># Mask sensitive values</span>
|
|
277
|
+
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">sensitive</span> <span class="ow">in</span> <span class="n">var_name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">sensitive</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'key'</span><span class="p">,</span> <span class="s1">'secret'</span><span class="p">,</span> <span class="s1">'password'</span><span class="p">,</span> <span class="s1">'token'</span><span class="p">]):</span>
|
|
278
|
+
<span class="n">current_env</span><span class="p">[</span><span class="n">var_name</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'********'</span>
|
|
279
|
+
<span class="k">else</span><span class="p">:</span>
|
|
280
|
+
<span class="n">current_env</span><span class="p">[</span><span class="n">var_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">var_name</span><span class="p">]</span>
|
|
281
|
+
<span class="k">else</span><span class="p">:</span>
|
|
282
|
+
<span class="c1"># Include variables not in environment with empty value</span>
|
|
283
|
+
<span class="n">current_env</span><span class="p">[</span><span class="n">var_name</span><span class="p">]</span> <span class="o">=</span> <span class="s1">''</span>
|
|
284
|
+
|
|
285
|
+
<span class="c1"># Add current environment variables to results</span>
|
|
286
|
+
<span class="n">results</span><span class="p">[</span><span class="s1">'current_env'</span><span class="p">]</span> <span class="o">=</span> <span class="n">current_env</span>
|
|
287
|
+
|
|
288
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Results structure: </span><span class="si">{</span><span class="p">[(</span><span class="n">k</span><span class="p">,</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'env_vars'</span><span class="p">,</span><span class="w"> </span><span class="p">[]))</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="nb">dict</span><span class="p">)</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="s1">'env_vars'</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'N/A'</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="p">,</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">results</span><span class="o">.</span><span class="n">items</span><span class="p">()]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
289
|
+
|
|
290
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Final results keys: </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">results</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
291
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[ENV_MANAGER DEBUG] Total unique env vars: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">all_env_vars</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
292
|
+
<span class="k">return</span> <span class="n">results</span></div>
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
<div class="viewcode-block" id="load_env_file">
|
|
297
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.env_manager.html#mindroot.coreplugins.env_manager.mod.load_env_file">[docs]</a>
|
|
298
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">load_env_file</span><span class="p">():</span>
|
|
299
|
+
<span class="w"> </span><span class="sd">"""Load environment variables from .env file.</span>
|
|
300
|
+
<span class="sd"> </span>
|
|
301
|
+
<span class="sd"> Returns:</span>
|
|
302
|
+
<span class="sd"> dict: Dictionary of environment variables from .env file</span>
|
|
303
|
+
<span class="sd"> """</span>
|
|
304
|
+
<span class="n">env_vars</span> <span class="o">=</span> <span class="p">{}</span>
|
|
305
|
+
<span class="n">env_file</span> <span class="o">=</span> <span class="s1">'.env'</span>
|
|
306
|
+
|
|
307
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">env_file</span><span class="p">):</span>
|
|
308
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">env_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>
|
|
309
|
+
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="p">:</span>
|
|
310
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
311
|
+
<span class="k">if</span> <span class="n">line</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'#'</span><span class="p">):</span>
|
|
312
|
+
<span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'='</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
313
|
+
<span class="n">env_vars</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">strip</span><span class="p">()]</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">'"</span><span class="se">\'</span><span class="s1">'</span><span class="p">)</span>
|
|
314
|
+
|
|
315
|
+
<span class="k">return</span> <span class="n">env_vars</span></div>
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
<div class="viewcode-block" id="save_env_file">
|
|
320
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.env_manager.html#mindroot.coreplugins.env_manager.mod.save_env_file">[docs]</a>
|
|
321
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">save_env_file</span><span class="p">(</span><span class="n">env_vars</span><span class="p">):</span>
|
|
322
|
+
<span class="w"> </span><span class="sd">"""Save environment variables to .env file.</span>
|
|
323
|
+
<span class="sd"> </span>
|
|
324
|
+
<span class="sd"> Args:</span>
|
|
325
|
+
<span class="sd"> env_vars (dict): Dictionary of environment variables to save</span>
|
|
326
|
+
<span class="sd"> </span>
|
|
327
|
+
<span class="sd"> Returns:</span>
|
|
328
|
+
<span class="sd"> bool: True if successful, False otherwise</span>
|
|
329
|
+
<span class="sd"> """</span>
|
|
330
|
+
<span class="k">try</span><span class="p">:</span>
|
|
331
|
+
<span class="c1"># Load existing .env file to preserve variables not being updated</span>
|
|
332
|
+
<span class="n">existing_vars</span> <span class="o">=</span> <span class="n">load_env_file</span><span class="p">()</span>
|
|
333
|
+
|
|
334
|
+
<span class="c1"># Update with new values</span>
|
|
335
|
+
<span class="n">existing_vars</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">env_vars</span><span class="p">)</span>
|
|
336
|
+
|
|
337
|
+
<span class="c1"># Write to .env file</span>
|
|
338
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'.env'</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>
|
|
339
|
+
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">existing_vars</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
340
|
+
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
341
|
+
|
|
342
|
+
<span class="k">return</span> <span class="kc">True</span>
|
|
343
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
344
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error saving .env file: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
345
|
+
<span class="k">return</span> <span class="kc">False</span></div>
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
<div class="viewcode-block" id="update_env_var">
|
|
350
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.env_manager.html#mindroot.coreplugins.env_manager.mod.update_env_var">[docs]</a>
|
|
351
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
352
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">update_env_var</span><span class="p">(</span><span class="n">var_name</span><span class="p">,</span> <span class="n">var_value</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
353
|
+
<span class="w"> </span><span class="sd">"""Update an environment variable.</span>
|
|
354
|
+
<span class="sd"> </span>
|
|
355
|
+
<span class="sd"> Args:</span>
|
|
356
|
+
<span class="sd"> var_name (str): Name of the environment variable</span>
|
|
357
|
+
<span class="sd"> var_value (str): Value to set</span>
|
|
358
|
+
<span class="sd"> </span>
|
|
359
|
+
<span class="sd"> Returns:</span>
|
|
360
|
+
<span class="sd"> dict: Status of the operation</span>
|
|
361
|
+
<span class="sd"> """</span>
|
|
362
|
+
<span class="k">try</span><span class="p">:</span>
|
|
363
|
+
<span class="c1"># Update the environment variable in the current process</span>
|
|
364
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">var_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">var_value</span>
|
|
365
|
+
|
|
366
|
+
<span class="c1"># Save to .env file for persistence across restarts</span>
|
|
367
|
+
<span class="n">save_success</span> <span class="o">=</span> <span class="n">save_env_file</span><span class="p">({</span><span class="n">var_name</span><span class="p">:</span> <span class="n">var_value</span><span class="p">})</span>
|
|
368
|
+
|
|
369
|
+
<span class="k">return</span> <span class="p">{</span>
|
|
370
|
+
<span class="s1">'success'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
371
|
+
<span class="s1">'message'</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Environment variable </span><span class="si">{</span><span class="n">var_name</span><span class="si">}</span><span class="s2"> updated successfully"</span> <span class="o">+</span>
|
|
372
|
+
<span class="p">(</span><span class="s2">" and saved to .env file"</span> <span class="k">if</span> <span class="n">save_success</span> <span class="k">else</span> <span class="s2">""</span><span class="p">)</span>
|
|
373
|
+
<span class="p">}</span>
|
|
374
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
375
|
+
<span class="k">return</span> <span class="p">{</span>
|
|
376
|
+
<span class="s1">'success'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
|
377
|
+
<span class="s1">'message'</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Error updating environment variable: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
|
378
|
+
<span class="p">}</span></div>
|
|
379
|
+
|
|
380
|
+
</pre></div>
|
|
381
|
+
|
|
382
|
+
</div>
|
|
383
|
+
</div>
|
|
384
|
+
<footer>
|
|
385
|
+
|
|
386
|
+
<hr/>
|
|
387
|
+
|
|
388
|
+
<div role="contentinfo">
|
|
389
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
390
|
+
</div>
|
|
391
|
+
|
|
392
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
393
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
394
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
</footer>
|
|
398
|
+
</div>
|
|
399
|
+
</div>
|
|
400
|
+
</section>
|
|
401
|
+
</div>
|
|
402
|
+
<script>
|
|
403
|
+
jQuery(function () {
|
|
404
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
405
|
+
});
|
|
406
|
+
</script>
|
|
407
|
+
|
|
408
|
+
</body>
|
|
409
|
+
</html>
|