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,195 @@
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.index.handlers.agent_ops &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
+ <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.index.handlers.agent_ops</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.index.handlers.agent_ops</h1><div class="highlight"><pre>
72
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
73
+ <span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">datetime</span>
74
+ <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>
75
+ <span class="kn">from</span><span class="w"> </span><span class="nn">fastapi.responses</span><span class="w"> </span><span class="kn">import</span> <span class="n">JSONResponse</span>
76
+ <span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTPException</span>
77
+ <span class="kn">from</span><span class="w"> </span><span class="nn">..models</span><span class="w"> </span><span class="kn">import</span> <span class="n">AgentEntry</span>
78
+ <span class="kn">from</span><span class="w"> </span><span class="nn">..utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_agent_data</span>
79
+
80
+ <div class="viewcode-block" id="add_agent">
81
+ <a class="viewcode-back" href="../../../../../source/mindroot.coreplugins.index.handlers.html#mindroot.coreplugins.index.handlers.agent_ops.add_agent">[docs]</a>
82
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">add_agent</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">AgentEntry</span><span class="p">):</span>
83
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Add an agent to an index&quot;&quot;&quot;</span>
84
+ <span class="k">try</span><span class="p">:</span>
85
+ <span class="n">index_dir</span> <span class="o">=</span> <span class="n">INDEX_DIR</span> <span class="o">/</span> <span class="n">index_name</span>
86
+ <span class="n">index_file</span> <span class="o">=</span> <span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;index.json&#39;</span>
87
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">index_file</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
88
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="s1">&#39;Index not found&#39;</span><span class="p">})</span>
89
+
90
+ <span class="k">try</span><span class="p">:</span>
91
+ <span class="n">agent_data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">load_agent_data</span><span class="p">(</span><span class="n">agent</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
92
+ <span class="k">except</span> <span class="ne">FileNotFoundError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
93
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)})</span>
94
+ <span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
95
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)})</span>
96
+
97
+ <span class="n">agent_data</span><span class="p">[</span><span class="s1">&#39;added_at&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
98
+
99
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
100
+ <span class="n">index_data</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>
101
+
102
+ <span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">agent</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;agents&#39;</span><span class="p">]):</span>
103
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="s1">&#39;Agent already in index&#39;</span><span class="p">})</span>
104
+
105
+ <span class="c1"># If agent has a persona, copy persona files</span>
106
+ <span class="k">if</span> <span class="s1">&#39;persona&#39;</span> <span class="ow">in</span> <span class="n">agent_data</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agent_data</span><span class="p">[</span><span class="s1">&#39;persona&#39;</span><span class="p">],</span> <span class="nb">dict</span><span class="p">):</span>
107
+ <span class="n">persona_name</span> <span class="o">=</span> <span class="n">agent_data</span><span class="p">[</span><span class="s1">&#39;persona&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">)</span>
108
+ <span class="k">if</span> <span class="n">persona_name</span><span class="p">:</span>
109
+ <span class="n">persona_source</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s1">&#39;personas/local&#39;</span><span class="p">)</span> <span class="o">/</span> <span class="n">persona_name</span>
110
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">persona_source</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
111
+ <span class="n">persona_source</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s1">&#39;personas/shared&#39;</span><span class="p">)</span> <span class="o">/</span> <span class="n">persona_name</span>
112
+ <span class="k">if</span> <span class="n">persona_source</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
113
+ <span class="n">persona_target</span> <span class="o">=</span> <span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;personas&#39;</span> <span class="o">/</span> <span class="n">persona_name</span>
114
+ <span class="k">if</span> <span class="n">persona_target</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
115
+ <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">persona_target</span><span class="p">)</span>
116
+ <span class="n">persona_target</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
117
+ <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">persona_source</span><span class="p">,</span> <span class="n">persona_target</span><span class="p">)</span>
118
+
119
+ <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;agents&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agent_data</span><span class="p">)</span>
120
+
121
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
122
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">index_data</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>
123
+
124
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">&#39;data&#39;</span><span class="p">:</span> <span class="n">index_data</span><span class="p">})</span>
125
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
126
+ <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span></div>
127
+
128
+
129
+ <div class="viewcode-block" id="remove_agent">
130
+ <a class="viewcode-back" href="../../../../../source/mindroot.coreplugins.index.handlers.html#mindroot.coreplugins.index.handlers.agent_ops.remove_agent">[docs]</a>
131
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">remove_agent</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">agent_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
132
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Remove an agent from an index&quot;&quot;&quot;</span>
133
+ <span class="k">try</span><span class="p">:</span>
134
+ <span class="n">index_dir</span> <span class="o">=</span> <span class="n">INDEX_DIR</span> <span class="o">/</span> <span class="n">index_name</span>
135
+ <span class="n">index_file</span> <span class="o">=</span> <span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;index.json&#39;</span>
136
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">index_file</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
137
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="s1">&#39;Index not found&#39;</span><span class="p">})</span>
138
+
139
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
140
+ <span class="n">index_data</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>
141
+
142
+ <span class="c1"># Get agent data before removal to handle persona cleanup</span>
143
+ <span class="n">agent_data</span> <span class="o">=</span> <span class="nb">next</span><span class="p">((</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;agents&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">a</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">agent_name</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span>
144
+ <span class="k">if</span> <span class="n">agent_data</span> <span class="ow">and</span> <span class="s1">&#39;persona&#39;</span> <span class="ow">in</span> <span class="n">agent_data</span><span class="p">:</span>
145
+ <span class="n">persona_name</span> <span class="o">=</span> <span class="n">agent_data</span><span class="p">[</span><span class="s1">&#39;persona&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">)</span>
146
+ <span class="k">if</span> <span class="n">persona_name</span><span class="p">:</span>
147
+ <span class="n">persona_dir</span> <span class="o">=</span> <span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;personas&#39;</span> <span class="o">/</span> <span class="n">persona_name</span>
148
+ <span class="k">if</span> <span class="n">persona_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
149
+ <span class="c1"># Check if persona is used by other agents before removing</span>
150
+ <span class="n">other_agents_with_persona</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;agents&#39;</span><span class="p">]</span>
151
+ <span class="k">if</span> <span class="n">a</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="n">agent_name</span>
152
+ <span class="ow">and</span> <span class="n">a</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;persona&#39;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="n">persona_name</span><span class="p">]</span>
153
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">other_agents_with_persona</span><span class="p">:</span>
154
+ <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">persona_dir</span><span class="p">)</span>
155
+
156
+ <span class="c1"># Remove from index data</span>
157
+ <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;agents&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;agents&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">a</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="n">agent_name</span><span class="p">]</span>
158
+
159
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
160
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">index_data</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>
161
+
162
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">&#39;data&#39;</span><span class="p">:</span> <span class="n">index_data</span><span class="p">})</span>
163
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
164
+ <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span></div>
165
+
166
+ </pre></div>
167
+
168
+ </div>
169
+ </div>
170
+ <footer>
171
+
172
+ <hr/>
173
+
174
+ <div role="contentinfo">
175
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
176
+ </div>
177
+
178
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
179
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
180
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
181
+
182
+
183
+ </footer>
184
+ </div>
185
+ </div>
186
+ </section>
187
+ </div>
188
+ <script>
189
+ jQuery(function () {
190
+ SphinxRtdTheme.Navigation.enable(true);
191
+ });
192
+ </script>
193
+
194
+ </body>
195
+ </html>
@@ -0,0 +1,214 @@
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.index.handlers.index_ops &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
+ <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.index.handlers.index_ops</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.index.handlers.index_ops</h1><div class="highlight"><pre>
72
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
73
+ <span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">datetime</span>
74
+ <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>
75
+ <span class="kn">from</span><span class="w"> </span><span class="nn">fastapi.responses</span><span class="w"> </span><span class="kn">import</span> <span class="n">JSONResponse</span>
76
+ <span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTPException</span>
77
+ <span class="kn">from</span><span class="w"> </span><span class="nn">..models</span><span class="w"> </span><span class="kn">import</span> <span class="n">IndexMetadata</span>
78
+ <span class="kn">from</span><span class="w"> </span><span class="nn">..utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">ensure_index_structure</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">load_plugin_manifest</span>
80
+ <span class="kn">import</span><span class="w"> </span><span class="nn">shutil</span>
81
+
82
+ <div class="viewcode-block" id="list_indices">
83
+ <a class="viewcode-back" href="../../../../../source/mindroot.coreplugins.index.handlers.html#mindroot.coreplugins.index.handlers.index_ops.list_indices">[docs]</a>
84
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_indices</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
85
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;List all available indices&quot;&quot;&quot;</span>
86
+ <span class="k">try</span><span class="p">:</span>
87
+ <span class="n">indices</span> <span class="o">=</span> <span class="p">[]</span>
88
+
89
+ <span class="c1"># Check if index directory exists and has content</span>
90
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">INDEX_DIR</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">)):</span>
91
+ <span class="c1"># If INDEX_DIR exists but is empty, remove it first</span>
92
+ <span class="k">if</span> <span class="n">INDEX_DIR</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
93
+ <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="p">)</span>
94
+
95
+ <span class="c1"># Copy default indices</span>
96
+ <span class="n">this_script_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span>
97
+ <span class="n">default_indices_path</span> <span class="o">=</span> <span class="n">this_script_path</span> <span class="o">/</span> <span class="s1">&#39;indices&#39;</span>
98
+ <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">default_indices_path</span><span class="p">,</span> <span class="n">INDEX_DIR</span><span class="p">)</span>
99
+
100
+ <span class="c1"># List all index directories</span>
101
+ <span class="k">for</span> <span class="n">index_dir</span> <span class="ow">in</span> <span class="n">INDEX_DIR</span><span class="o">.</span><span class="n">iterdir</span><span class="p">():</span>
102
+ <span class="k">if</span> <span class="n">index_dir</span><span class="o">.</span><span class="n">is_dir</span><span class="p">():</span>
103
+ <span class="n">index_file</span> <span class="o">=</span> <span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;index.json&#39;</span>
104
+ <span class="k">if</span> <span class="n">index_file</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
105
+ <span class="k">try</span><span class="p">:</span>
106
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
107
+ <span class="n">index_data</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>
108
+ <span class="n">manifest</span> <span class="o">=</span> <span class="n">load_plugin_manifest</span><span class="p">()</span>
109
+ <span class="n">index_data</span><span class="p">[</span><span class="s1">&#39;installed&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">index_dir</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">manifest</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;indices&#39;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;installed&#39;</span><span class="p">,</span> <span class="p">{})</span>
110
+ <span class="n">indices</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index_data</span><span class="p">)</span>
111
+ <span class="k">except</span> <span class="n">json</span><span class="o">.</span><span class="n">JSONDecodeError</span><span class="p">:</span>
112
+ <span class="k">continue</span> <span class="c1"># Skip invalid JSON files</span>
113
+
114
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">&#39;data&#39;</span><span class="p">:</span> <span class="n">indices</span><span class="p">})</span>
115
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
116
+ <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span></div>
117
+
118
+
119
+ <div class="viewcode-block" id="create_index">
120
+ <a class="viewcode-back" href="../../../../../source/mindroot.coreplugins.index.handlers.html#mindroot.coreplugins.index.handlers.index_ops.create_index">[docs]</a>
121
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_index</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">IndexMetadata</span><span class="p">):</span>
122
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Create a new index directory with metadata&quot;&quot;&quot;</span>
123
+ <span class="k">try</span><span class="p">:</span>
124
+ <span class="n">index_dir</span> <span class="o">=</span> <span class="n">INDEX_DIR</span> <span class="o">/</span> <span class="n">metadata</span><span class="o">.</span><span class="n">name</span>
125
+ <span class="k">if</span> <span class="n">index_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
126
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="s1">&#39;Index already exists&#39;</span><span class="p">})</span>
127
+
128
+ <span class="c1"># Create index directory structure</span>
129
+ <span class="n">index_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
130
+ <span class="n">ensure_index_structure</span><span class="p">(</span><span class="n">index_dir</span><span class="p">)</span>
131
+
132
+ <span class="n">index_data</span> <span class="o">=</span> <span class="p">{</span>
133
+ <span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
134
+ <span class="s1">&#39;description&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">description</span><span class="p">,</span>
135
+ <span class="s1">&#39;version&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">version</span><span class="p">,</span>
136
+ <span class="s1">&#39;url&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">url</span><span class="p">,</span>
137
+ <span class="s1">&#39;trusted&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">trusted</span><span class="p">,</span>
138
+ <span class="s1">&#39;created_at&#39;</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(),</span>
139
+ <span class="s1">&#39;plugins&#39;</span><span class="p">:</span> <span class="p">[],</span>
140
+ <span class="s1">&#39;agents&#39;</span><span class="p">:</span> <span class="p">[]</span>
141
+ <span class="p">}</span>
142
+
143
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;index.json&#39;</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>
144
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">index_data</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>
145
+
146
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">&#39;data&#39;</span><span class="p">:</span> <span class="n">index_data</span><span class="p">})</span>
147
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
148
+ <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span></div>
149
+
150
+
151
+ <div class="viewcode-block" id="update_index">
152
+ <a class="viewcode-back" href="../../../../../source/mindroot.coreplugins.index.handlers.html#mindroot.coreplugins.index.handlers.index_ops.update_index">[docs]</a>
153
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">update_index</span><span class="p">(</span><span class="n">INDEX_DIR</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n">IndexMetadata</span><span class="p">):</span>
154
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Update index metadata&quot;&quot;&quot;</span>
155
+ <span class="k">try</span><span class="p">:</span>
156
+ <span class="n">index_dir</span> <span class="o">=</span> <span class="n">INDEX_DIR</span> <span class="o">/</span> <span class="n">index_name</span>
157
+ <span class="n">index_file</span> <span class="o">=</span> <span class="n">index_dir</span> <span class="o">/</span> <span class="s1">&#39;index.json&#39;</span>
158
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">index_file</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
159
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">&#39;message&#39;</span><span class="p">:</span> <span class="s1">&#39;Index not found&#39;</span><span class="p">})</span>
160
+
161
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
162
+ <span class="n">index_data</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>
163
+
164
+ <span class="n">index_data</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
165
+ <span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
166
+ <span class="s1">&#39;description&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">description</span><span class="p">,</span>
167
+ <span class="s1">&#39;version&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">version</span><span class="p">,</span>
168
+ <span class="s1">&#39;url&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">url</span><span class="p">,</span>
169
+ <span class="s1">&#39;trusted&#39;</span><span class="p">:</span> <span class="n">metadata</span><span class="o">.</span><span class="n">trusted</span><span class="p">,</span>
170
+ <span class="s1">&#39;updated_at&#39;</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
171
+ <span class="p">})</span>
172
+
173
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">index_file</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>
174
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">index_data</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>
175
+
176
+ <span class="c1"># If name changed, rename the directory</span>
177
+ <span class="k">if</span> <span class="n">metadata</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">index_name</span><span class="p">:</span>
178
+ <span class="n">new_index_dir</span> <span class="o">=</span> <span class="n">INDEX_DIR</span> <span class="o">/</span> <span class="n">metadata</span><span class="o">.</span><span class="n">name</span>
179
+ <span class="n">index_dir</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">new_index_dir</span><span class="p">)</span>
180
+
181
+ <span class="k">return</span> <span class="n">JSONResponse</span><span class="p">({</span><span class="s1">&#39;success&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">&#39;data&#39;</span><span class="p">:</span> <span class="n">index_data</span><span class="p">})</span>
182
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
183
+ <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span></div>
184
+
185
+ </pre></div>
186
+
187
+ </div>
188
+ </div>
189
+ <footer>
190
+
191
+ <hr/>
192
+
193
+ <div role="contentinfo">
194
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
195
+ </div>
196
+
197
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
198
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
199
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
200
+
201
+
202
+ </footer>
203
+ </div>
204
+ </div>
205
+ </section>
206
+ </div>
207
+ <script>
208
+ jQuery(function () {
209
+ SphinxRtdTheme.Navigation.enable(true);
210
+ });
211
+ </script>
212
+
213
+ </body>
214
+ </html>