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.

Files changed (418) hide show
  1. mindroot/__init__.py +1 -0
  2. mindroot/coreplugins/__init__.py +2 -0
  3. mindroot/coreplugins/home/templates/home.jinja2 +1 -0
  4. mindroot/docs/Makefile +20 -0
  5. mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
  6. mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
  7. mindroot/docs/_build/doctrees/environment.pickle +0 -0
  8. mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
  9. mindroot/docs/_build/doctrees/index.doctree +0 -0
  10. mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
  11. mindroot/docs/_build/doctrees/installation.doctree +0 -0
  12. mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
  13. mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
  14. mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
  15. mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
  16. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
  17. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
  18. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
  19. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
  20. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
  21. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
  22. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
  23. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
  24. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
  25. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
  26. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
  27. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
  28. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
  29. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
  30. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
  31. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
  32. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
  33. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
  34. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
  35. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
  36. mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
  37. mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
  38. mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
  39. mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
  40. mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
  41. mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
  42. mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
  43. mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
  44. mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
  45. mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
  46. mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
  47. mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
  48. mindroot/docs/_build/html/.buildinfo +4 -0
  49. mindroot/docs/_build/html/.buildinfo.bak +4 -0
  50. mindroot/docs/_build/html/_images/envvar.png +0 -0
  51. mindroot/docs/_build/html/_images/files.png +0 -0
  52. mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
  53. mindroot/docs/_build/html/_images/mood.png +0 -0
  54. mindroot/docs/_build/html/_images/moon.png +0 -0
  55. mindroot/docs/_build/html/_images/openrouter.png +0 -0
  56. mindroot/docs/_build/html/_images/restart.png +0 -0
  57. mindroot/docs/_build/html/_modules/index.html +425 -0
  58. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
  59. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
  60. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
  61. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
  62. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
  63. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
  64. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
  65. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
  66. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
  67. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
  68. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
  69. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
  70. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
  71. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
  72. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
  73. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
  74. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
  75. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
  76. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
  77. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
  78. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
  79. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
  80. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
  81. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
  82. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
  83. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
  84. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
  85. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
  86. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
  87. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
  88. mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
  89. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
  90. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
  91. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
  92. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
  93. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
  94. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
  95. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
  96. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
  97. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
  98. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
  99. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
  100. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
  101. mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
  102. mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
  103. mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
  104. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
  105. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
  106. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
  107. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
  108. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
  109. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
  110. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
  111. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
  112. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
  113. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
  114. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
  115. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
  116. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
  117. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
  118. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
  119. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
  120. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
  121. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
  122. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
  123. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
  124. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
  125. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
  126. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
  127. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
  128. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
  129. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
  130. mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
  131. mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
  132. mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
  133. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
  134. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
  135. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
  136. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
  137. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
  138. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
  139. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
  140. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
  141. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
  142. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
  143. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
  144. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
  145. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
  146. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
  147. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
  148. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
  149. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
  150. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
  151. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
  152. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
  153. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
  154. mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
  155. mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
  156. mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
  157. mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
  158. mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
  159. mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
  160. mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
  161. mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
  162. mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
  163. mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
  164. mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
  165. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
  166. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
  167. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
  168. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
  169. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
  170. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
  171. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
  172. mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
  173. mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
  174. mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
  175. mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
  176. mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
  177. mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
  178. mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
  179. mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
  180. mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
  181. mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
  182. mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
  183. mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
  184. mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
  185. mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
  186. mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
  187. mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
  188. mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
  189. mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
  190. mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
  191. mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
  192. mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
  193. mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
  194. mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
  195. mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
  196. mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
  197. mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
  198. mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
  199. mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
  200. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
  201. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
  202. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
  203. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
  204. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
  205. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
  206. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
  207. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
  208. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
  209. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
  210. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
  211. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
  212. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
  213. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
  214. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
  215. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
  216. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
  217. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
  218. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
  219. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
  220. mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
  221. mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
  222. mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
  223. mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
  224. mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
  225. mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
  226. mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
  227. mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
  228. mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
  229. mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
  230. mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
  231. mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
  232. mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  233. mindroot/docs/_build/html/_static/basic.css +906 -0
  234. mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
  235. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  236. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  237. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  238. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  239. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  240. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  241. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  242. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  243. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  244. mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  245. mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  246. mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  247. mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  248. mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  249. mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  250. mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  251. mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  252. mindroot/docs/_build/html/_static/css/theme.css +4 -0
  253. mindroot/docs/_build/html/_static/custom.css +19 -0
  254. mindroot/docs/_build/html/_static/debug.css +69 -0
  255. mindroot/docs/_build/html/_static/doctools.js +149 -0
  256. mindroot/docs/_build/html/_static/documentation_options.js +13 -0
  257. mindroot/docs/_build/html/_static/file.png +0 -0
  258. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  259. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  260. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  261. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  262. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  263. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  264. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  265. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  266. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  267. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  268. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  269. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  270. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  271. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  272. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  273. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  274. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  275. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  276. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  277. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  278. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  279. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  280. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  281. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  282. mindroot/docs/_build/html/_static/jquery.js +2 -0
  283. mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
  284. mindroot/docs/_build/html/_static/js/theme.js +1 -0
  285. mindroot/docs/_build/html/_static/js/versions.js +228 -0
  286. mindroot/docs/_build/html/_static/language_data.js +192 -0
  287. mindroot/docs/_build/html/_static/minus.png +0 -0
  288. mindroot/docs/_build/html/_static/plus.png +0 -0
  289. mindroot/docs/_build/html/_static/pygments.css +232 -0
  290. mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  291. mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
  292. mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
  293. mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
  294. mindroot/docs/_build/html/_static/searchtools.js +635 -0
  295. mindroot/docs/_build/html/_static/skeleton.css +296 -0
  296. mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
  297. mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
  298. mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
  299. mindroot/docs/_build/html/_static/styles/furo.css +2 -0
  300. mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
  301. mindroot/docs/_build/html/chat_with_assistant.html +329 -0
  302. mindroot/docs/_build/html/developer_documentation.html +338 -0
  303. mindroot/docs/_build/html/genindex.html +4690 -0
  304. mindroot/docs/_build/html/getting_started.html +423 -0
  305. mindroot/docs/_build/html/index.html +357 -0
  306. mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
  307. mindroot/docs/_build/html/installation.html +330 -0
  308. mindroot/docs/_build/html/llm_api_key.html +337 -0
  309. mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
  310. mindroot/docs/_build/html/objects.inv +0 -0
  311. mindroot/docs/_build/html/programming_task.html +326 -0
  312. mindroot/docs/_build/html/py-modindex.html +1307 -0
  313. mindroot/docs/_build/html/search.html +307 -0
  314. mindroot/docs/_build/html/searchindex.js +1 -0
  315. mindroot/docs/_build/html/source/ahp.html +302 -0
  316. mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
  317. mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
  318. mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
  319. mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
  320. mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
  321. mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
  322. mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
  323. mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
  324. mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
  325. mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
  326. mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
  327. mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
  328. mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
  329. mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
  330. mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
  331. mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
  332. mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
  333. mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
  334. mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
  335. mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
  336. mindroot/docs/_build/html/source/mindroot.html +811 -0
  337. mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
  338. mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
  339. mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
  340. mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
  341. mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
  342. mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
  343. mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
  344. mindroot/docs/_build/html/source/modules.html +377 -0
  345. mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
  346. mindroot/docs/_build/html/starting_mindroot.html +325 -0
  347. mindroot/docs/_build/html/user_documentation.html +333 -0
  348. mindroot/docs/_static/custom.css +19 -0
  349. mindroot/docs/chat_with_assistant.rst +14 -0
  350. mindroot/docs/conf.py +54 -0
  351. mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
  352. mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
  353. mindroot/docs/data/equivalent_flags.json +1 -0
  354. mindroot/docs/data/mcp/servers.json +9 -0
  355. mindroot/docs/data/models.json +57 -0
  356. mindroot/docs/data/plugin_manifest.json +95 -0
  357. mindroot/docs/data/preferred_models.json +12 -0
  358. mindroot/docs/data/providers.json +62 -0
  359. mindroot/docs/developer_documentation.rst +26 -0
  360. mindroot/docs/envvar.png +0 -0
  361. mindroot/docs/files.png +0 -0
  362. mindroot/docs/getting_started.rst +139 -0
  363. mindroot/docs/index.rst +38 -0
  364. mindroot/docs/install_plugins_with_tools.rst +25 -0
  365. mindroot/docs/installation.rst +21 -0
  366. mindroot/docs/installopenrouter.png +0 -0
  367. mindroot/docs/llm_api_key.rst +22 -0
  368. mindroot/docs/llm_plugin_installation.rst +27 -0
  369. mindroot/docs/make.bat +35 -0
  370. mindroot/docs/mood.png +0 -0
  371. mindroot/docs/moon.png +0 -0
  372. mindroot/docs/openrouter.png +0 -0
  373. mindroot/docs/personas/local/Assistant/avatar.png +0 -0
  374. mindroot/docs/personas/local/Assistant/faceref.png +0 -0
  375. mindroot/docs/personas/local/Assistant/persona.json +7 -0
  376. mindroot/docs/programming_task.rst +10 -0
  377. mindroot/docs/restart.png +0 -0
  378. mindroot/docs/source/ahp.rst +7 -0
  379. mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
  380. mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
  381. mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
  382. mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
  383. mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
  384. mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
  385. mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
  386. mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
  387. mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
  388. mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
  389. mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
  390. mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
  391. mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
  392. mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
  393. mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
  394. mindroot/docs/source/mindroot.coreplugins.rst +35 -0
  395. mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
  396. mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
  397. mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
  398. mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
  399. mindroot/docs/source/mindroot.lib.auth.rst +29 -0
  400. mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
  401. mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
  402. mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
  403. mindroot/docs/source/mindroot.lib.providers.rst +61 -0
  404. mindroot/docs/source/mindroot.lib.rst +152 -0
  405. mindroot/docs/source/mindroot.registry.rst +29 -0
  406. mindroot/docs/source/mindroot.rst +54 -0
  407. mindroot/docs/source/modules.rst +7 -0
  408. mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
  409. mindroot/docs/starting_mindroot.rst +12 -0
  410. mindroot/docs/user_documentation.rst +16 -0
  411. mindroot/lib/plugins/default_plugin_manifest.json +1 -1
  412. mindroot/server.py +10 -1
  413. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
  414. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +418 -10
  415. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
  416. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
  417. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
  418. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,127 @@
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.lib.plugins.mapping &mdash; 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.lib.plugins.mapping</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.lib.plugins.mapping</h1><div class="highlight"><pre>
69
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
70
+ <span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
71
+ <span class="kn">from</span><span class="w"> </span><span class="nn">.manifest</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_plugin_manifest</span>
72
+
73
+ <div class="viewcode-block" id="get_command_plugin_mapping">
74
+ <a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.mapping.get_command_plugin_mapping">[docs]</a>
75
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_command_plugin_mapping</span><span class="p">(</span><span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
76
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
77
+ <span class="sd"> Get a mapping of commands to the plugins that provide them.</span>
78
+ <span class="sd"> </span>
79
+ <span class="sd"> Returns:</span>
80
+ <span class="sd"> dict: Mapping of command names to lists of plugin names</span>
81
+ <span class="sd"> &quot;&quot;&quot;</span>
82
+ <span class="n">mapping</span> <span class="o">=</span> <span class="p">{}</span>
83
+ <span class="n">manifest</span> <span class="o">=</span> <span class="n">load_plugin_manifest</span><span class="p">()</span>
84
+
85
+ <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">]:</span>
86
+ <span class="k">for</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">plugin_info</span> <span class="ow">in</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">][</span><span class="n">category</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
87
+ <span class="k">for</span> <span class="n">command</span> <span class="ow">in</span> <span class="n">plugin_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;commands&#39;</span><span class="p">,</span> <span class="p">[]):</span>
88
+ <span class="k">if</span> <span class="n">command</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">:</span>
89
+ <span class="n">mapping</span><span class="p">[</span><span class="n">command</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
90
+ <span class="n">mapping</span><span class="p">[</span><span class="n">command</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
91
+ <span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="n">plugin_name</span><span class="p">,</span>
92
+ <span class="s1">&#39;category&#39;</span><span class="p">:</span> <span class="n">category</span><span class="p">,</span>
93
+ <span class="s1">&#39;enabled&#39;</span><span class="p">:</span> <span class="n">plugin_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;enabled&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
94
+ <span class="p">})</span>
95
+
96
+ <span class="k">return</span> <span class="n">mapping</span></div>
97
+
98
+ </pre></div>
99
+
100
+ </div>
101
+ </div>
102
+ <footer>
103
+
104
+ <hr/>
105
+
106
+ <div role="contentinfo">
107
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
108
+ </div>
109
+
110
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
111
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
112
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
113
+
114
+
115
+ </footer>
116
+ </div>
117
+ </div>
118
+ </section>
119
+ </div>
120
+ <script>
121
+ jQuery(function () {
122
+ SphinxRtdTheme.Navigation.enable(true);
123
+ });
124
+ </script>
125
+
126
+ </body>
127
+ </html>
@@ -0,0 +1,215 @@
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.lib.plugins.paths &mdash; 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.lib.plugins.paths</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.lib.plugins.paths</h1><div class="highlight"><pre>
69
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
70
+ <span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
71
+ <span class="kn">from</span><span class="w"> </span><span class="nn">importlib.util</span><span class="w"> </span><span class="kn">import</span> <span class="n">find_spec</span>
72
+ <span class="kn">from</span><span class="w"> </span><span class="nn">.manifest</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_plugin_manifest</span>
73
+
74
+ <span class="k">def</span><span class="w"> </span><span class="nf">_get_project_root</span><span class="p">():</span>
75
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get the absolute path to the project root directory.</span>
76
+ <span class="sd"> </span>
77
+ <span class="sd"> Returns:</span>
78
+ <span class="sd"> str: Absolute path to project root</span>
79
+ <span class="sd"> &quot;&quot;&quot;</span>
80
+ <span class="n">current_dir</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">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">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">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))))</span>
81
+ <span class="k">return</span> <span class="n">current_dir</span>
82
+
83
+ <span class="k">def</span><span class="w"> </span><span class="nf">_find_core_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">):</span>
84
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Find the correct path for a core plugin, checking both development and installed locations.</span>
85
+ <span class="sd"> </span>
86
+ <span class="sd"> Args:</span>
87
+ <span class="sd"> plugin_name (str): Name of the core plugin</span>
88
+ <span class="sd"> </span>
89
+ <span class="sd"> Returns:</span>
90
+ <span class="sd"> str: Absolute path to the plugin directory or None if not found</span>
91
+ <span class="sd"> &quot;&quot;&quot;</span>
92
+ <span class="c1"># Try development path first</span>
93
+ <span class="n">dev_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">join</span><span class="p">(</span><span class="n">_get_project_root</span><span class="p">(),</span> <span class="s1">&#39;coreplugins&#39;</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">)</span>
94
+ <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">dev_path</span><span class="p">):</span>
95
+ <span class="c1">#print(f&quot;Found core plugin {plugin_name} in development path: {dev_path}&quot;)</span>
96
+ <span class="k">return</span> <span class="n">dev_path</span>
97
+
98
+ <span class="c1"># Try to find installed package</span>
99
+ <span class="k">try</span><span class="p">:</span>
100
+ <span class="kn">import</span><span class="w"> </span><span class="nn">mindroot</span>
101
+ <span class="n">pkg_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">mindroot</span><span class="o">.</span><span class="vm">__file__</span><span class="p">)</span>
102
+ <span class="n">installed_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">join</span><span class="p">(</span><span class="n">pkg_path</span><span class="p">,</span> <span class="s1">&#39;coreplugins&#39;</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">)</span>
103
+ <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">installed_path</span><span class="p">):</span>
104
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Found core plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> in installed path: </span><span class="si">{</span><span class="n">installed_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
105
+ <span class="k">return</span> <span class="n">installed_path</span>
106
+ <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
107
+ <span class="k">pass</span>
108
+
109
+ <span class="c1"># Try site-packages directly</span>
110
+ <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
111
+ <span class="k">if</span> <span class="s1">&#39;site-packages&#39;</span> <span class="ow">in</span> <span class="n">path</span> <span class="ow">or</span> <span class="s1">&#39;dist-packages&#39;</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
112
+ <span class="n">potential_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">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s1">&#39;mindroot&#39;</span><span class="p">,</span> <span class="s1">&#39;coreplugins&#39;</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">)</span>
113
+ <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">potential_path</span><span class="p">):</span>
114
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Found core plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> in site-packages: </span><span class="si">{</span><span class="n">potential_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
115
+ <span class="k">return</span> <span class="n">potential_path</span>
116
+
117
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Warning: Could not find core plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> in any location&quot;</span><span class="p">)</span>
118
+ <span class="k">return</span> <span class="kc">None</span>
119
+
120
+ <div class="viewcode-block" id="get_plugin_path">
121
+ <a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.get_plugin_path">[docs]</a>
122
+ <span class="k">def</span><span class="w"> </span><span class="nf">get_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">):</span>
123
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get the filesystem path for a plugin.</span>
124
+ <span class="sd"> </span>
125
+ <span class="sd"> Args:</span>
126
+ <span class="sd"> plugin_name (str): Name of the plugin</span>
127
+ <span class="sd"> </span>
128
+ <span class="sd"> Returns:</span>
129
+ <span class="sd"> str: Absolute path to the plugin directory or None if not found</span>
130
+ <span class="sd"> &quot;&quot;&quot;</span>
131
+ <span class="c1">#print(f&quot;Get plugin path: {plugin_name}&quot;)</span>
132
+ <span class="n">manifest</span> <span class="o">=</span> <span class="n">load_plugin_manifest</span><span class="p">()</span>
133
+ <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">]:</span>
134
+ <span class="k">if</span> <span class="n">plugin_name</span> <span class="ow">in</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">][</span><span class="n">category</span><span class="p">]:</span>
135
+ <span class="n">plugin_info</span> <span class="o">=</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">][</span><span class="n">category</span><span class="p">][</span><span class="n">plugin_name</span><span class="p">]</span>
136
+
137
+ <span class="k">if</span> <span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;core&#39;</span><span class="p">:</span>
138
+ <span class="k">return</span> <span class="n">_find_core_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
139
+ <span class="k">elif</span> <span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;local&#39;</span><span class="p">,</span> <span class="s1">&#39;github&#39;</span><span class="p">]:</span>
140
+ <span class="c1"># source_path should already be absolute</span>
141
+ <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">plugin_info</span><span class="p">[</span><span class="s1">&#39;source_path&#39;</span><span class="p">]):</span>
142
+ <span class="k">return</span> <span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source_path&#39;</span><span class="p">]</span>
143
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Warning: Plugin path does not exist: </span><span class="si">{</span><span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source_path&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
144
+ <span class="k">else</span><span class="p">:</span>
145
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Calling find_spec to get plugin path for </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
146
+ <span class="n">spec</span> <span class="o">=</span> <span class="n">find_spec</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
147
+ <span class="k">if</span> <span class="n">spec</span><span class="p">:</span>
148
+ <span class="k">return</span> <span class="n">spec</span><span class="o">.</span><span class="n">origin</span>
149
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Warning: Could not find spec for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
150
+ <span class="k">return</span> <span class="kc">None</span></div>
151
+
152
+
153
+ <div class="viewcode-block" id="get_plugin_import_path">
154
+ <a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.get_plugin_import_path">[docs]</a>
155
+ <span class="k">def</span><span class="w"> </span><span class="nf">get_plugin_import_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">):</span>
156
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get the Python import path for a plugin.</span>
157
+ <span class="sd"> </span>
158
+ <span class="sd"> Args:</span>
159
+ <span class="sd"> plugin_name (str): Name of the plugin</span>
160
+ <span class="sd"> </span>
161
+ <span class="sd"> Returns:</span>
162
+ <span class="sd"> str: Import path for the plugin or None if not found</span>
163
+ <span class="sd"> &quot;&quot;&quot;</span>
164
+ <span class="n">manifest</span> <span class="o">=</span> <span class="n">load_plugin_manifest</span><span class="p">()</span>
165
+ <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">]:</span>
166
+ <span class="k">if</span> <span class="n">plugin_name</span> <span class="ow">in</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">][</span><span class="n">category</span><span class="p">]:</span>
167
+ <span class="n">plugin_info</span> <span class="o">=</span> <span class="n">manifest</span><span class="p">[</span><span class="s1">&#39;plugins&#39;</span><span class="p">][</span><span class="n">category</span><span class="p">][</span><span class="n">plugin_name</span><span class="p">]</span>
168
+
169
+ <span class="k">if</span> <span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;core&#39;</span><span class="p">:</span>
170
+ <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;coreplugins.</span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">&quot;</span>
171
+ <span class="k">elif</span> <span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;local&#39;</span><span class="p">,</span> <span class="s1">&#39;github&#39;</span><span class="p">]:</span>
172
+ <span class="n">source_path</span> <span class="o">=</span> <span class="n">plugin_info</span><span class="p">[</span><span class="s1">&#39;source_path&#39;</span><span class="p">]</span>
173
+ <span class="k">if</span> <span class="ow">not</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">source_path</span><span class="p">):</span>
174
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Warning: Plugin path does not exist: </span><span class="si">{</span><span class="n">source_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
175
+ <span class="k">return</span> <span class="kc">None</span>
176
+
177
+ <span class="n">parent_dir</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">source_path</span><span class="p">)</span>
178
+ <span class="k">if</span> <span class="n">parent_dir</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
179
+ <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parent_dir</span><span class="p">)</span>
180
+ <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">source_path</span><span class="p">)</span>
181
+ <span class="k">else</span><span class="p">:</span>
182
+ <span class="n">spec</span> <span class="o">=</span> <span class="n">find_spec</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
183
+ <span class="k">return</span> <span class="n">spec</span><span class="o">.</span><span class="n">origin</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="kc">None</span>
184
+ <span class="k">return</span> <span class="kc">None</span></div>
185
+
186
+ </pre></div>
187
+
188
+ </div>
189
+ </div>
190
+ <footer>
191
+
192
+ <hr/>
193
+
194
+ <div role="contentinfo">
195
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
196
+ </div>
197
+
198
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
199
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
200
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
201
+
202
+
203
+ </footer>
204
+ </div>
205
+ </div>
206
+ </section>
207
+ </div>
208
+ <script>
209
+ jQuery(function () {
210
+ SphinxRtdTheme.Navigation.enable(true);
211
+ });
212
+ </script>
213
+
214
+ </body>
215
+ </html>
@@ -0,0 +1,171 @@
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.lib.plugins_install &mdash; 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.lib.plugins_install</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.lib.plugins_install</h1><div class="highlight"><pre>
69
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
70
+ <span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span>
71
+ <span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
72
+ <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>
73
+
74
+ <div class="viewcode-block" id="install_plugins">
75
+ <a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.plugins_install.install_plugins">[docs]</a>
76
+ <span class="k">def</span><span class="w"> </span><span class="nf">install_plugins</span><span class="p">(</span><span class="n">plugin_list</span><span class="p">):</span>
77
+ <span class="k">try</span><span class="p">:</span>
78
+ <span class="n">poetry_cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span><span class="p">,</span> <span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;poetry&quot;</span><span class="p">,</span> <span class="s2">&quot;add&quot;</span><span class="p">]</span>
79
+ <span class="k">for</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="n">plugin_list</span><span class="p">:</span>
80
+ <span class="n">poetry_cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">plugin</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">plugin</span><span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
81
+
82
+ <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>
83
+ <span class="n">poetry_cmd</span><span class="p">,</span>
84
+ <span class="n">check</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
85
+ <span class="n">capture_output</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
86
+ <span class="n">text</span><span class="o">=</span><span class="kc">True</span>
87
+ <span class="p">)</span>
88
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Successfully installed plugins:&quot;</span><span class="p">)</span>
89
+ <span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">stdout</span><span class="p">)</span>
90
+ <span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="n">plugin_list</span>
91
+ <span class="k">except</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
92
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Error installing plugins:&quot;</span><span class="p">)</span>
93
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error message: </span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">stderr</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
94
+ <span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="p">[]</span></div>
95
+
96
+
97
+ <div class="viewcode-block" id="update_plugins_json">
98
+ <a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.plugins_install.update_plugins_json">[docs]</a>
99
+ <span class="k">def</span><span class="w"> </span><span class="nf">update_plugins_json</span><span class="p">(</span><span class="n">installed_plugins</span><span class="p">,</span> <span class="n">json_path</span><span class="p">):</span>
100
+ <span class="k">try</span><span class="p">:</span>
101
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">json_path</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
102
+ <span class="n">existing_plugins</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>
103
+ <span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
104
+ <span class="n">existing_plugins</span> <span class="o">=</span> <span class="p">[]</span>
105
+
106
+ <span class="k">for</span> <span class="n">new_plugin</span> <span class="ow">in</span> <span class="n">installed_plugins</span><span class="p">:</span>
107
+ <span class="n">existing</span> <span class="o">=</span> <span class="nb">next</span><span class="p">((</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">existing_plugins</span> <span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">new_plugin</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]),</span> <span class="kc">None</span><span class="p">)</span>
108
+ <span class="k">if</span> <span class="n">existing</span><span class="p">:</span>
109
+ <span class="n">existing</span><span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_plugin</span><span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">]</span>
110
+ <span class="k">else</span><span class="p">:</span>
111
+ <span class="n">existing_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
112
+ <span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="n">new_plugin</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">],</span>
113
+ <span class="s1">&#39;version&#39;</span><span class="p">:</span> <span class="n">new_plugin</span><span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">],</span>
114
+ <span class="s1">&#39;enabled&#39;</span><span class="p">:</span> <span class="kc">False</span>
115
+ <span class="p">})</span>
116
+
117
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">json_path</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
118
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">existing_plugins</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></div>
119
+
120
+
121
+ <div class="viewcode-block" id="main">
122
+ <a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.plugins_install.main">[docs]</a>
123
+ <span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
124
+ <span class="n">json_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s1">&#39;/files/ah/plugins.json&#39;</span><span class="p">)</span>
125
+
126
+ <span class="c1"># In a real scenario, you might get this list from user input or another file</span>
127
+ <span class="n">plugins_to_install</span> <span class="o">=</span> <span class="p">[</span>
128
+ <span class="p">{</span><span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;requests&quot;</span><span class="p">,</span> <span class="s2">&quot;version&quot;</span><span class="p">:</span> <span class="s2">&quot;2.26.0&quot;</span><span class="p">},</span>
129
+ <span class="p">{</span><span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;beautifulsoup4&quot;</span><span class="p">,</span> <span class="s2">&quot;version&quot;</span><span class="p">:</span> <span class="s2">&quot;4.9.3&quot;</span><span class="p">}</span>
130
+ <span class="p">]</span>
131
+
132
+ <span class="n">success</span><span class="p">,</span> <span class="n">installed_plugins</span> <span class="o">=</span> <span class="n">install_plugins</span><span class="p">(</span><span class="n">plugins_to_install</span><span class="p">)</span>
133
+ <span class="k">if</span> <span class="n">success</span><span class="p">:</span>
134
+ <span class="n">update_plugins_json</span><span class="p">(</span><span class="n">installed_plugins</span><span class="p">,</span> <span class="n">json_path</span><span class="p">)</span>
135
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Updated </span><span class="si">{</span><span class="n">json_path</span><span class="si">}</span><span class="s2"> with newly installed plugins.&quot;</span><span class="p">)</span>
136
+ <span class="k">else</span><span class="p">:</span>
137
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Failed to install plugins. No changes made to plugins.json.&quot;</span><span class="p">)</span></div>
138
+
139
+
140
+ <span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
141
+ <span class="n">main</span><span class="p">()</span>
142
+ </pre></div>
143
+
144
+ </div>
145
+ </div>
146
+ <footer>
147
+
148
+ <hr/>
149
+
150
+ <div role="contentinfo">
151
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
152
+ </div>
153
+
154
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
155
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
156
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
157
+
158
+
159
+ </footer>
160
+ </div>
161
+ </div>
162
+ </section>
163
+ </div>
164
+ <script>
165
+ jQuery(function () {
166
+ SphinxRtdTheme.Navigation.enable(true);
167
+ });
168
+ </script>
169
+
170
+ </body>
171
+ </html>