mindroot 9.11.0__py3-none-any.whl → 9.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindroot might be problematic. Click here for more details.
- mindroot/coreplugins/home/templates/home.jinja2 +1 -0
- mindroot/docs/Makefile +20 -0
- mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
- mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
- mindroot/docs/_build/doctrees/environment.pickle +0 -0
- mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
- mindroot/docs/_build/doctrees/index.doctree +0 -0
- mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
- mindroot/docs/_build/doctrees/installation.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
- mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
- mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
- mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
- mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
- mindroot/docs/_build/html/.buildinfo +4 -0
- mindroot/docs/_build/html/.buildinfo.bak +4 -0
- mindroot/docs/_build/html/_images/envvar.png +0 -0
- mindroot/docs/_build/html/_images/files.png +0 -0
- mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
- mindroot/docs/_build/html/_images/mood.png +0 -0
- mindroot/docs/_build/html/_images/moon.png +0 -0
- mindroot/docs/_build/html/_images/openrouter.png +0 -0
- mindroot/docs/_build/html/_images/restart.png +0 -0
- mindroot/docs/_build/html/_modules/index.html +425 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
- mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
- mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
- mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
- mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
- mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
- mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
- mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
- mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
- mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
- mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
- mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
- mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
- mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
- mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
- mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
- mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- mindroot/docs/_build/html/_static/basic.css +906 -0
- mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/theme.css +4 -0
- mindroot/docs/_build/html/_static/custom.css +19 -0
- mindroot/docs/_build/html/_static/debug.css +69 -0
- mindroot/docs/_build/html/_static/doctools.js +149 -0
- mindroot/docs/_build/html/_static/documentation_options.js +13 -0
- mindroot/docs/_build/html/_static/file.png +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/jquery.js +2 -0
- mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
- mindroot/docs/_build/html/_static/js/theme.js +1 -0
- mindroot/docs/_build/html/_static/js/versions.js +228 -0
- mindroot/docs/_build/html/_static/language_data.js +192 -0
- mindroot/docs/_build/html/_static/minus.png +0 -0
- mindroot/docs/_build/html/_static/plus.png +0 -0
- mindroot/docs/_build/html/_static/pygments.css +232 -0
- mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
- mindroot/docs/_build/html/_static/searchtools.js +635 -0
- mindroot/docs/_build/html/_static/skeleton.css +296 -0
- mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
- mindroot/docs/_build/html/_static/styles/furo.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
- mindroot/docs/_build/html/chat_with_assistant.html +329 -0
- mindroot/docs/_build/html/developer_documentation.html +338 -0
- mindroot/docs/_build/html/genindex.html +4690 -0
- mindroot/docs/_build/html/getting_started.html +423 -0
- mindroot/docs/_build/html/index.html +357 -0
- mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
- mindroot/docs/_build/html/installation.html +330 -0
- mindroot/docs/_build/html/llm_api_key.html +337 -0
- mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
- mindroot/docs/_build/html/objects.inv +0 -0
- mindroot/docs/_build/html/programming_task.html +326 -0
- mindroot/docs/_build/html/py-modindex.html +1307 -0
- mindroot/docs/_build/html/search.html +307 -0
- mindroot/docs/_build/html/searchindex.js +1 -0
- mindroot/docs/_build/html/source/ahp.html +302 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
- mindroot/docs/_build/html/source/mindroot.html +811 -0
- mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
- mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
- mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
- mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
- mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
- mindroot/docs/_build/html/source/modules.html +377 -0
- mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
- mindroot/docs/_build/html/starting_mindroot.html +325 -0
- mindroot/docs/_build/html/user_documentation.html +333 -0
- mindroot/docs/_static/custom.css +19 -0
- mindroot/docs/chat_with_assistant.rst +14 -0
- mindroot/docs/conf.py +54 -0
- mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
- mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
- mindroot/docs/data/equivalent_flags.json +1 -0
- mindroot/docs/data/mcp/servers.json +9 -0
- mindroot/docs/data/models.json +57 -0
- mindroot/docs/data/plugin_manifest.json +95 -0
- mindroot/docs/data/preferred_models.json +12 -0
- mindroot/docs/data/providers.json +62 -0
- mindroot/docs/developer_documentation.rst +26 -0
- mindroot/docs/envvar.png +0 -0
- mindroot/docs/files.png +0 -0
- mindroot/docs/getting_started.rst +139 -0
- mindroot/docs/index.rst +38 -0
- mindroot/docs/install_plugins_with_tools.rst +25 -0
- mindroot/docs/installation.rst +21 -0
- mindroot/docs/installopenrouter.png +0 -0
- mindroot/docs/llm_api_key.rst +22 -0
- mindroot/docs/llm_plugin_installation.rst +27 -0
- mindroot/docs/make.bat +35 -0
- mindroot/docs/mood.png +0 -0
- mindroot/docs/moon.png +0 -0
- mindroot/docs/openrouter.png +0 -0
- mindroot/docs/personas/local/Assistant/avatar.png +0 -0
- mindroot/docs/personas/local/Assistant/faceref.png +0 -0
- mindroot/docs/personas/local/Assistant/persona.json +7 -0
- mindroot/docs/programming_task.rst +10 -0
- mindroot/docs/restart.png +0 -0
- mindroot/docs/source/ahp.rst +7 -0
- mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
- mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
- mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
- mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
- mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
- mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.rst +35 -0
- mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
- mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
- mindroot/docs/source/mindroot.lib.auth.rst +29 -0
- mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
- mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
- mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
- mindroot/docs/source/mindroot.lib.providers.rst +61 -0
- mindroot/docs/source/mindroot.lib.rst +152 -0
- mindroot/docs/source/mindroot.registry.rst +29 -0
- mindroot/docs/source/mindroot.rst +54 -0
- mindroot/docs/source/modules.rst +7 -0
- mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
- mindroot/docs/starting_mindroot.rst +12 -0
- mindroot/docs/user_documentation.rst +16 -0
- mindroot/server.py +10 -1
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +415 -8
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,645 @@
|
|
|
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.chat.services — 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.chat.services</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.chat.services</h1><div class="highlight"><pre>
|
|
72
|
+
<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">lib.providers.services</span><span class="w"> </span><span class="kn">import</span> <span class="n">service</span><span class="p">,</span> <span class="n">service_manager</span>
|
|
73
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.providers.commands</span><span class="w"> </span><span class="kn">import</span> <span class="n">command_manager</span><span class="p">,</span> <span class="n">command</span>
|
|
74
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.providers.hooks</span><span class="w"> </span><span class="kn">import</span> <span class="n">hook</span>
|
|
75
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.pipelines.pipe</span><span class="w"> </span><span class="kn">import</span> <span class="n">pipeline_manager</span><span class="p">,</span> <span class="n">pipe</span>
|
|
76
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.chatcontext</span><span class="w"> </span><span class="kn">import</span> <span class="n">ChatContext</span>
|
|
77
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.chatlog</span><span class="w"> </span><span class="kn">import</span> <span class="n">ChatLog</span>
|
|
78
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span>
|
|
79
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.utils.dataurl</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataurl_to_pil</span>
|
|
80
|
+
<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">MessageParts</span>
|
|
81
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">coreplugins.agent</span><span class="w"> </span><span class="kn">import</span> <span class="n">agent</span>
|
|
82
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">lib.utils.debug</span><span class="w"> </span><span class="kn">import</span> <span class="n">debug_box</span>
|
|
83
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
84
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
|
85
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">colored</span>
|
|
86
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
|
|
87
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">traceback</span>
|
|
88
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span>
|
|
89
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
90
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">termcolor</span>
|
|
91
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">PIL</span><span class="w"> </span><span class="kn">import</span> <span class="n">Image</span>
|
|
92
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">io</span><span class="w"> </span><span class="kn">import</span> <span class="n">BytesIO</span>
|
|
93
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">base64</span>
|
|
94
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">nanoid</span>
|
|
95
|
+
<span class="n">sse_clients</span> <span class="o">=</span> <span class="p">{}</span>
|
|
96
|
+
|
|
97
|
+
<div class="viewcode-block" id="prompt">
|
|
98
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.prompt">[docs]</a>
|
|
99
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
100
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">prompt</span><span class="p">(</span><span class="n">model</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">instructions</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">temperature</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">max_tokens</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
101
|
+
<span class="n">messages</span> <span class="o">=</span> <span class="p">[</span>
|
|
102
|
+
<span class="p">{</span> <span class="s2">"role"</span><span class="p">:</span> <span class="s2">"system"</span><span class="p">,</span>
|
|
103
|
+
<span class="s2">"content"</span><span class="p">:</span> <span class="s2">"Respond to prompt with no extraneous commentary."</span>
|
|
104
|
+
<span class="p">},</span>
|
|
105
|
+
<span class="p">{</span> <span class="s2">"role"</span><span class="p">:</span> <span class="s2">"user"</span><span class="p">,</span>
|
|
106
|
+
<span class="s2">"content"</span><span class="p">:</span> <span class="n">instructions</span>
|
|
107
|
+
<span class="p">}]</span>
|
|
108
|
+
|
|
109
|
+
<span class="n">stream</span> <span class="o">=</span> <span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">stream_chat</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">,</span>
|
|
110
|
+
<span class="n">max_tokens</span><span class="o">=</span><span class="n">max_tokens</span><span class="p">,</span>
|
|
111
|
+
<span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span>
|
|
112
|
+
<span class="n">json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
113
|
+
<span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
|
|
114
|
+
<span class="n">text</span> <span class="o">=</span> <span class="s2">""</span>
|
|
115
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"AH_DEBUG"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"True"</span><span class="p">:</span>
|
|
116
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Prompting, instructions "</span><span class="p">,</span> <span class="n">instructions</span><span class="p">)</span>
|
|
117
|
+
<span class="k">async</span> <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">stream</span><span class="p">:</span>
|
|
118
|
+
<span class="c1">#print("Chunk received: ", chunk)</span>
|
|
119
|
+
<span class="k">if</span> <span class="n">chunk</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">chunk</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
|
120
|
+
<span class="k">continue</span>
|
|
121
|
+
<span class="k">else</span><span class="p">:</span>
|
|
122
|
+
<span class="n">text</span> <span class="o">+=</span> <span class="n">chunk</span>
|
|
123
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"AH_DEBUG"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"True"</span><span class="p">:</span>
|
|
124
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">chunk</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">flush</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
125
|
+
|
|
126
|
+
<span class="k">return</span> <span class="n">text</span></div>
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
<div class="viewcode-block" id="results_text">
|
|
131
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.results_text">[docs]</a>
|
|
132
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">results_text</span><span class="p">(</span><span class="n">results</span><span class="p">):</span>
|
|
133
|
+
<span class="n">text</span> <span class="o">=</span> <span class="s2">""</span>
|
|
134
|
+
<span class="k">for</span> <span class="n">result</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
|
135
|
+
<span class="k">if</span> <span class="s1">'text'</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">]:</span>
|
|
136
|
+
<span class="n">text</span> <span class="o">+=</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">][</span><span class="s1">'text'</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
|
137
|
+
<span class="k">elif</span> <span class="s1">'markdown'</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">]:</span>
|
|
138
|
+
<span class="n">text</span> <span class="o">+=</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">][</span><span class="s1">'markdown'</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
|
139
|
+
<span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span>
|
|
140
|
+
<span class="k">return</span> <span class="n">text</span></div>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
<div class="viewcode-block" id="results_output">
|
|
144
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.results_output">[docs]</a>
|
|
145
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">results_output</span><span class="p">(</span><span class="n">results</span><span class="p">):</span>
|
|
146
|
+
<span class="n">text</span> <span class="o">=</span> <span class="s2">""</span>
|
|
147
|
+
<span class="k">for</span> <span class="n">result</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
|
148
|
+
<span class="k">if</span> <span class="s1">'output'</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">]:</span>
|
|
149
|
+
<span class="k">return</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">][</span><span class="s1">'output'</span><span class="p">]</span></div>
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
<div class="viewcode-block" id="results_text_output">
|
|
153
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.results_text_output">[docs]</a>
|
|
154
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">results_text_output</span><span class="p">(</span><span class="n">results</span><span class="p">):</span>
|
|
155
|
+
<span class="n">text</span> <span class="o">=</span> <span class="s2">""</span>
|
|
156
|
+
<span class="k">for</span> <span class="n">result</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
|
157
|
+
<span class="k">if</span> <span class="s1">'output'</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">]:</span>
|
|
158
|
+
<span class="k">return</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">][</span><span class="s1">'output'</span><span class="p">]</span>
|
|
159
|
+
<span class="n">text</span> <span class="o">+=</span> <span class="n">result</span><span class="p">[</span><span class="s1">'args'</span><span class="p">][</span><span class="s1">'output'</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
|
160
|
+
<span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span>
|
|
161
|
+
<span class="k">return</span> <span class="n">text</span></div>
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
<div class="viewcode-block" id="run_task">
|
|
166
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.run_task">[docs]</a>
|
|
167
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
168
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">run_task</span><span class="p">(</span><span class="n">instructions</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="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">user</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">log_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
169
|
+
<span class="n">parent_log_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">llm</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">retries</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
170
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
171
|
+
<span class="sd"> Run a task with the given instructions</span>
|
|
172
|
+
<span class="sd"> IMPORTANT NOTE: agent must have the task_result() command enabled.</span>
|
|
173
|
+
<span class="sd"> """</span>
|
|
174
|
+
|
|
175
|
+
<span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
176
|
+
<span class="n">debug_box</span><span class="p">(</span><span class="s2">"Context is none"</span><span class="p">)</span>
|
|
177
|
+
<span class="n">debug_box</span><span class="p">(</span><span class="s2">"agent_name: "</span> <span class="o">+</span> <span class="n">agent_name</span><span class="p">)</span>
|
|
178
|
+
<span class="k">if</span> <span class="n">log_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
179
|
+
<span class="n">log_id</span> <span class="o">=</span> <span class="n">nanoid</span><span class="o">.</span><span class="n">generate</span><span class="p">()</span>
|
|
180
|
+
<span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
181
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"chat: run_task: user required"</span><span class="p">)</span>
|
|
182
|
+
<span class="k">if</span> <span class="n">agent_name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
183
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"chat: run_task: agent_name required"</span><span class="p">)</span>
|
|
184
|
+
<span class="n">context</span> <span class="o">=</span> <span class="n">ChatContext</span><span class="p">(</span><span class="n">command_manager</span><span class="p">,</span> <span class="n">service_manager</span><span class="p">,</span> <span class="n">user</span><span class="p">)</span>
|
|
185
|
+
<span class="n">context</span><span class="o">.</span><span class="n">agent_name</span> <span class="o">=</span> <span class="n">agent_name</span>
|
|
186
|
+
<span class="n">context</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">user</span>
|
|
187
|
+
<span class="n">context</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">agent_name</span>
|
|
188
|
+
<span class="n">context</span><span class="o">.</span><span class="n">log_id</span> <span class="o">=</span> <span class="n">log_id</span>
|
|
189
|
+
<span class="n">context</span><span class="o">.</span><span class="n">parent_log_id</span> <span class="o">=</span> <span class="n">parent_log_id</span>
|
|
190
|
+
<span class="n">context</span><span class="o">.</span><span class="n">agent</span> <span class="o">=</span> <span class="k">await</span> <span class="n">service_manager</span><span class="o">.</span><span class="n">get_agent_data</span><span class="p">(</span><span class="n">agent_name</span><span class="p">)</span>
|
|
191
|
+
<span class="n">context</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="s1">'llm'</span><span class="p">]</span> <span class="o">=</span> <span class="n">llm</span>
|
|
192
|
+
<span class="n">context</span><span class="o">.</span><span class="n">current_model</span> <span class="o">=</span> <span class="n">llm</span>
|
|
193
|
+
<span class="n">context</span><span class="o">.</span><span class="n">chat_log</span> <span class="o">=</span> <span class="n">ChatLog</span><span class="p">(</span><span class="n">log_id</span><span class="o">=</span><span class="n">log_id</span><span class="p">,</span> <span class="n">agent</span><span class="o">=</span><span class="n">agent_name</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="n">user</span><span class="p">,</span> <span class="n">parent_log_id</span><span class="o">=</span><span class="n">parent_log_id</span><span class="p">)</span>
|
|
194
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">save_context</span><span class="p">()</span>
|
|
195
|
+
<span class="k">else</span><span class="p">:</span>
|
|
196
|
+
<span class="n">debug_box</span><span class="p">(</span><span class="s2">"Context is not none"</span><span class="p">)</span>
|
|
197
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"run_task: "</span><span class="p">,</span> <span class="n">instructions</span><span class="p">,</span> <span class="s2">"log_id: "</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">log_id</span><span class="p">)</span>
|
|
201
|
+
|
|
202
|
+
<span class="k">await</span> <span class="n">init_chat_session</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">username</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_name</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">log_id</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
|
|
203
|
+
|
|
204
|
+
<span class="n">retried</span> <span class="o">=</span> <span class="mi">0</span>
|
|
205
|
+
|
|
206
|
+
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"""</span>
|
|
207
|
+
<span class="s2"> # SYSTEM NOTE</span>
|
|
208
|
+
<span class="s2"> </span>
|
|
209
|
+
<span class="s2"> This task is being run via API and requires a textual or structured output.</span>
|
|
210
|
+
<span class="s2"> If your instructions indicate multiple steps with multiple function calls,</span>
|
|
211
|
+
<span class="s2"> wait for the system results as you process each step in turn, then</span>
|
|
212
|
+
<span class="s2"> call task_result() with the final output after all steps are truly complete.</span>
|
|
213
|
+
<span class="s2"> You MUST call task_result() with the final output if you are completing the task.</span>
|
|
214
|
+
<span class="s2"> For multi-stage tasks, do not call task_result until the final step is complete.</span>
|
|
215
|
+
|
|
216
|
+
<span class="s2"> """</span>
|
|
217
|
+
|
|
218
|
+
<span class="n">instructions</span> <span class="o">=</span> <span class="n">instructions</span> <span class="o">+</span> <span class="n">msg</span>
|
|
219
|
+
|
|
220
|
+
<span class="k">while</span> <span class="n">retried</span> <span class="o"><</span> <span class="n">retries</span><span class="p">:</span>
|
|
221
|
+
<span class="p">[</span><span class="n">results</span><span class="p">,</span> <span class="n">full_results</span><span class="p">]</span> <span class="o">=</span> <span class="k">await</span> <span class="n">send_message_to_agent</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">log_id</span><span class="p">,</span> <span class="n">instructions</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
|
|
222
|
+
<span class="n">text</span> <span class="o">=</span> <span class="n">results_output</span><span class="p">(</span><span class="n">full_results</span><span class="p">)</span>
|
|
223
|
+
<span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
|
224
|
+
<span class="n">retried</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
225
|
+
<span class="n">debug_box</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No output found, retrying task: </span><span class="si">{</span><span class="n">retried</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
226
|
+
<span class="n">instructions</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">Not output found (call task_result()!), retrying task: </span><span class="si">{</span><span class="n">retried</span><span class="si">}</span><span class="s2">"</span>
|
|
227
|
+
<span class="k">else</span><span class="p">:</span>
|
|
228
|
+
<span class="n">debug_box</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Task output found: </span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
229
|
+
<span class="k">break</span>
|
|
230
|
+
|
|
231
|
+
<span class="k">return</span> <span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">full_results</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">log_id</span><span class="p">)</span></div>
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
<div class="viewcode-block" id="init_chat_session">
|
|
236
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.init_chat_session">[docs]</a>
|
|
237
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
238
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">init_chat_session</span><span class="p">(</span><span class="n">user</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> <span class="n">log_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
239
|
+
<span class="k">if</span> <span class="n">agent_name</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">agent_name</span> <span class="o">==</span> <span class="s2">""</span> <span class="ow">or</span> <span class="n">log_id</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">log_id</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
|
240
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Invalid agent_name or log_id"</span><span class="p">)</span>
|
|
241
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"agent_name: "</span><span class="p">,</span> <span class="n">agent_name</span><span class="p">)</span>
|
|
242
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"log_id: "</span><span class="p">,</span> <span class="n">log_id</span><span class="p">)</span>
|
|
243
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Invalid agent_name or log_id"</span><span class="p">)</span>
|
|
244
|
+
|
|
245
|
+
<span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
246
|
+
<span class="n">context</span> <span class="o">=</span> <span class="n">ChatContext</span><span class="p">(</span><span class="n">command_manager</span><span class="p">,</span> <span class="n">service_manager</span><span class="p">,</span> <span class="n">user</span><span class="p">)</span>
|
|
247
|
+
<span class="n">context</span><span class="o">.</span><span class="n">agent_name</span> <span class="o">=</span> <span class="n">agent_name</span>
|
|
248
|
+
<span class="n">context</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">agent_name</span>
|
|
249
|
+
<span class="n">context</span><span class="o">.</span><span class="n">log_id</span> <span class="o">=</span> <span class="n">log_id</span>
|
|
250
|
+
<span class="n">context</span><span class="o">.</span><span class="n">agent</span> <span class="o">=</span> <span class="k">await</span> <span class="n">service_manager</span><span class="o">.</span><span class="n">get_agent_data</span><span class="p">(</span><span class="n">agent_name</span><span class="p">)</span>
|
|
251
|
+
<span class="n">context</span><span class="o">.</span><span class="n">chat_log</span> <span class="o">=</span> <span class="n">ChatLog</span><span class="p">(</span><span class="n">log_id</span><span class="o">=</span><span class="n">log_id</span><span class="p">,</span> <span class="n">agent</span><span class="o">=</span><span class="n">agent_name</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="n">user</span><span class="p">)</span>
|
|
252
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"context.agent_name: "</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_name</span><span class="p">)</span>
|
|
253
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">save_context</span><span class="p">()</span>
|
|
254
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"initiated_chat_session: "</span><span class="p">,</span> <span class="n">log_id</span><span class="p">,</span> <span class="n">agent_name</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_name</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">agent</span><span class="p">)</span>
|
|
255
|
+
<span class="k">return</span> <span class="n">log_id</span></div>
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
<div class="viewcode-block" id="get_chat_history">
|
|
259
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.get_chat_history">[docs]</a>
|
|
260
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
261
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_chat_history</span><span class="p">(</span><span class="n">agent_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">session_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user</span><span class="p">:</span><span class="nb">str</span><span class="p">):</span>
|
|
262
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"-----------------"</span><span class="p">)</span>
|
|
263
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"get_chat_history: "</span><span class="p">,</span> <span class="n">agent_name</span><span class="p">,</span> <span class="n">session_id</span><span class="p">)</span>
|
|
264
|
+
<span class="c1">#context = ChatContext(command_manager, service_manager)</span>
|
|
265
|
+
<span class="c1">#await context.load_context(session_id)</span>
|
|
266
|
+
<span class="n">agent</span> <span class="o">=</span> <span class="k">await</span> <span class="n">service_manager</span><span class="o">.</span><span class="n">get_agent_data</span><span class="p">(</span><span class="n">agent_name</span><span class="p">)</span>
|
|
267
|
+
|
|
268
|
+
<span class="n">persona</span> <span class="o">=</span> <span class="n">agent</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span>
|
|
269
|
+
<span class="n">chat_log</span> <span class="o">=</span> <span class="n">ChatLog</span><span class="p">(</span><span class="n">log_id</span><span class="o">=</span><span class="n">session_id</span><span class="p">,</span> <span class="n">agent</span><span class="o">=</span><span class="n">agent_name</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="n">user</span><span class="p">)</span>
|
|
270
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Got chat chat log"</span><span class="p">)</span>
|
|
271
|
+
<span class="n">messages</span> <span class="o">=</span> <span class="n">chat_log</span><span class="o">.</span><span class="n">get_recent</span><span class="p">()</span>
|
|
272
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"messages length: "</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">))</span>
|
|
273
|
+
<span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span><span class="p">:</span>
|
|
274
|
+
<span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">'role'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'user'</span><span class="p">:</span>
|
|
275
|
+
<span class="n">message</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'user'</span>
|
|
276
|
+
<span class="k">else</span><span class="p">:</span>
|
|
277
|
+
<span class="n">message</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">]</span> <span class="o">=</span> <span class="n">persona</span>
|
|
278
|
+
<span class="k">return</span> <span class="n">messages</span></div>
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
<div class="viewcode-block" id="process_result">
|
|
282
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.process_result">[docs]</a>
|
|
283
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">process_result</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">formatted_results</span><span class="p">):</span>
|
|
284
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"type of result is "</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">result</span><span class="p">))</span>
|
|
285
|
+
<span class="k">if</span> <span class="s1">'result'</span> <span class="ow">in</span> <span class="n">result</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">dict</span> <span class="ow">and</span> <span class="s1">'type'</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]</span> <span class="ow">and</span> <span class="s1">'image'</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">][</span><span class="s1">'type'</span><span class="p">]:</span>
|
|
286
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"A"</span><span class="p">)</span>
|
|
287
|
+
<span class="n">img_data</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]</span>
|
|
288
|
+
<span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'...'</span>
|
|
289
|
+
<span class="n">new_result</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"type"</span><span class="p">:</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">:</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="p">}</span>
|
|
290
|
+
<span class="n">formatted_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_result</span><span class="p">)</span>
|
|
291
|
+
<span class="n">formatted_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">img_data</span><span class="p">)</span>
|
|
292
|
+
<span class="k">elif</span> <span class="s1">'result'</span> <span class="ow">in</span> <span class="n">result</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">list</span><span class="p">:</span>
|
|
293
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"B"</span><span class="p">)</span>
|
|
294
|
+
<span class="n">found_image</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">])</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'"image"'</span><span class="p">)</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span>
|
|
295
|
+
<span class="k">if</span> <span class="n">found_image</span><span class="p">:</span>
|
|
296
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Found image"</span><span class="p">)</span>
|
|
297
|
+
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]:</span>
|
|
298
|
+
<span class="n">process_result</span><span class="p">({</span> <span class="s2">"result"</span><span class="p">:</span> <span class="n">item</span><span class="p">},</span> <span class="n">formatted_results</span><span class="p">)</span>
|
|
299
|
+
<span class="k">else</span><span class="p">:</span>
|
|
300
|
+
<span class="n">new_result</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"type"</span><span class="p">:</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">:</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">])</span> <span class="p">}</span>
|
|
301
|
+
<span class="n">formatted_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_result</span><span class="p">)</span>
|
|
302
|
+
<span class="k">else</span><span class="p">:</span>
|
|
303
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"C"</span><span class="p">)</span>
|
|
304
|
+
<span class="n">new_result</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"type"</span><span class="p">:</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">:</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="p">}</span>
|
|
305
|
+
<span class="n">formatted_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_result</span><span class="p">)</span>
|
|
306
|
+
|
|
307
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"length of results is "</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">formatted_results</span><span class="p">))</span>
|
|
308
|
+
<span class="c1">#with open("output/processed_results.json", "w") as f: </span>
|
|
309
|
+
<span class="c1"># f.write(json.dumps(formatted_results) + "\n")</span>
|
|
310
|
+
|
|
311
|
+
<span class="k">return</span> <span class="n">formatted_results</span></div>
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
<div class="viewcode-block" id="send_message_to_agent">
|
|
315
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.send_message_to_agent">[docs]</a>
|
|
316
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
317
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_message_to_agent</span><span class="p">(</span><span class="n">session_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">List</span><span class="p">[</span><span class="n">MessageParts</span><span class="p">],</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">35</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
318
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"MR_MAX_ITERATIONS"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
319
|
+
<span class="n">max_iterations</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"MR_MAX_ITERATIONS"</span><span class="p">))</span>
|
|
320
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">user</span><span class="p">:</span>
|
|
321
|
+
<span class="c1"># check context</span>
|
|
322
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">context</span><span class="o">.</span><span class="n">username</span><span class="p">:</span>
|
|
323
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"User required"</span><span class="p">)</span>
|
|
324
|
+
<span class="k">else</span><span class="p">:</span>
|
|
325
|
+
<span class="n">user</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"user"</span><span class="p">:</span> <span class="n">context</span><span class="o">.</span><span class="n">username</span> <span class="p">}</span>
|
|
326
|
+
<span class="k">else</span><span class="p">:</span>
|
|
327
|
+
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="s2">"dict"</span><span class="p">):</span>
|
|
328
|
+
<span class="n">user</span> <span class="o">=</span> <span class="n">user</span><span class="o">.</span><span class="n">dict</span><span class="p">()</span>
|
|
329
|
+
|
|
330
|
+
<span class="k">try</span><span class="p">:</span>
|
|
331
|
+
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span><span class="p">:</span>
|
|
332
|
+
<span class="n">message</span> <span class="o">=</span> <span class="p">[</span><span class="n">m</span><span class="o">.</span><span class="n">dict</span><span class="p">()</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="n">message</span><span class="p">]</span>
|
|
333
|
+
|
|
334
|
+
<span class="k">if</span> <span class="n">session_id</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">session_id</span> <span class="o">==</span> <span class="s2">""</span> <span class="ow">or</span> <span class="n">message</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">message</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
|
335
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Invalid session_id or message"</span><span class="p">)</span>
|
|
336
|
+
<span class="k">return</span> <span class="p">[]</span>
|
|
337
|
+
|
|
338
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"send_message_to_agent: "</span><span class="p">,</span> <span class="n">session_id</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">max_iterations</span><span class="p">)</span>
|
|
339
|
+
<span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
340
|
+
<span class="n">context</span> <span class="o">=</span> <span class="n">ChatContext</span><span class="p">(</span><span class="n">command_manager</span><span class="p">,</span> <span class="n">service_manager</span><span class="p">,</span> <span class="n">user</span><span class="p">)</span>
|
|
341
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">load_context</span><span class="p">(</span><span class="n">session_id</span><span class="p">)</span>
|
|
342
|
+
|
|
343
|
+
<span class="n">agent_</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">Agent</span><span class="p">(</span><span class="n">agent</span><span class="o">=</span><span class="n">context</span><span class="o">.</span><span class="n">agent</span><span class="p">)</span>
|
|
344
|
+
<span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="s2">"keys"</span><span class="p">):</span>
|
|
345
|
+
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">user</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
346
|
+
<span class="n">context</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">user</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
|
347
|
+
|
|
348
|
+
<span class="n">context</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="s1">'finished_conversation'</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
|
|
349
|
+
|
|
350
|
+
<span class="n">tmp_data</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"message"</span><span class="p">:</span> <span class="n">message</span> <span class="p">}</span>
|
|
351
|
+
<span class="n">tmp_data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">pipeline_manager</span><span class="o">.</span><span class="n">pre_process_msg</span><span class="p">(</span><span class="n">tmp_data</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
|
|
352
|
+
<span class="n">message</span> <span class="o">=</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">'message'</span><span class="p">]</span>
|
|
353
|
+
|
|
354
|
+
<span class="n">termcolor</span><span class="o">.</span><span class="n">cprint</span><span class="p">(</span><span class="s2">"Final message: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">message</span><span class="p">),</span> <span class="s2">"yellow"</span><span class="p">)</span>
|
|
355
|
+
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">str</span><span class="p">:</span>
|
|
356
|
+
<span class="c1">#context.chat_log.add_message({"role": "user", "content": [{"type": "text", "text": message}]})</span>
|
|
357
|
+
<span class="n">context</span><span class="o">.</span><span class="n">chat_log</span><span class="o">.</span><span class="n">add_message</span><span class="p">({</span><span class="s2">"role"</span><span class="p">:</span> <span class="s2">"user"</span><span class="p">,</span> <span class="s2">"content"</span><span class="p">:</span> <span class="n">message</span> <span class="p">})</span>
|
|
358
|
+
<span class="k">else</span><span class="p">:</span>
|
|
359
|
+
<span class="n">new_parts</span> <span class="o">=</span> <span class="p">[]</span>
|
|
360
|
+
<span class="n">has_image</span> <span class="o">=</span> <span class="kc">False</span>
|
|
361
|
+
<span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">message</span><span class="p">:</span>
|
|
362
|
+
<span class="k">if</span> <span class="n">part</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'image'</span><span class="p">:</span>
|
|
363
|
+
<span class="n">has_image</span> <span class="o">=</span> <span class="kc">True</span>
|
|
364
|
+
<span class="n">img</span> <span class="o">=</span> <span class="n">dataurl_to_pil</span><span class="p">(</span><span class="n">part</span><span class="p">[</span><span class="s1">'data'</span><span class="p">])</span>
|
|
365
|
+
<span class="n">img_msg</span> <span class="o">=</span> <span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">format_image_message</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
|
|
366
|
+
<span class="n">new_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">img_msg</span><span class="p">)</span>
|
|
367
|
+
<span class="k">elif</span> <span class="n">part</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'text'</span> <span class="ow">and</span> <span class="s1">'[UPLOADED FILE]'</span> <span class="ow">in</span> <span class="n">part</span><span class="p">[</span><span class="s1">'text'</span><span class="p">]:</span>
|
|
368
|
+
<span class="c1"># Ensure we don't duplicate file entries</span>
|
|
369
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="s1">'[UPLOADED FILE]'</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'text'</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">new_parts</span><span class="p">):</span>
|
|
370
|
+
<span class="n">new_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span>
|
|
371
|
+
<span class="k">else</span><span class="p">:</span>
|
|
372
|
+
<span class="n">new_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span>
|
|
373
|
+
<span class="n">msg_to_add</span><span class="o">=</span> <span class="p">{</span><span class="s2">"role"</span><span class="p">:</span> <span class="s2">"user"</span><span class="p">,</span> <span class="s2">"content"</span><span class="p">:</span> <span class="n">new_parts</span> <span class="p">}</span>
|
|
374
|
+
<span class="n">has_image</span> <span class="o">=</span> <span class="n">has_image</span> <span class="ow">or</span> <span class="nb">str</span><span class="p">(</span><span class="n">msg_to_add</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"image"</span><span class="p">)</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span>
|
|
375
|
+
<span class="n">context</span><span class="o">.</span><span class="n">chat_log</span><span class="o">.</span><span class="n">add_message</span><span class="p">(</span><span class="n">msg_to_add</span><span class="p">)</span>
|
|
376
|
+
|
|
377
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">save_context</span><span class="p">()</span>
|
|
378
|
+
|
|
379
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">True</span>
|
|
380
|
+
<span class="n">iterations</span> <span class="o">=</span> <span class="mi">0</span>
|
|
381
|
+
<span class="n">results</span> <span class="o">=</span> <span class="p">[]</span>
|
|
382
|
+
<span class="n">full_results</span> <span class="o">=</span> <span class="p">[]</span>
|
|
383
|
+
|
|
384
|
+
<span class="n">invalid</span> <span class="o">=</span> <span class="s2">"ERROR, invalid response format."</span>
|
|
385
|
+
|
|
386
|
+
<span class="n">consecutive_parse_errors</span> <span class="o">=</span> <span class="mi">0</span>
|
|
387
|
+
|
|
388
|
+
<span class="k">while</span> <span class="n">continue_processing</span> <span class="ow">and</span> <span class="n">iterations</span> <span class="o"><</span> <span class="n">max_iterations</span><span class="p">:</span>
|
|
389
|
+
<span class="n">iterations</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
390
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">False</span>
|
|
391
|
+
<span class="k">try</span><span class="p">:</span>
|
|
392
|
+
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">current_model</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
393
|
+
<span class="k">if</span> <span class="s1">'llm'</span> <span class="ow">in</span> <span class="n">context</span><span class="o">.</span><span class="n">data</span><span class="p">:</span>
|
|
394
|
+
<span class="n">context</span><span class="o">.</span><span class="n">current_model</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="s1">'llm'</span><span class="p">]</span>
|
|
395
|
+
|
|
396
|
+
<span class="n">parse_error</span> <span class="o">=</span> <span class="kc">False</span>
|
|
397
|
+
|
|
398
|
+
<span class="n">results</span><span class="p">,</span> <span class="n">full_cmds</span> <span class="o">=</span> <span class="k">await</span> <span class="n">agent_</span><span class="o">.</span><span class="n">chat_commands</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">current_model</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">messages</span><span class="o">=</span><span class="n">context</span><span class="o">.</span><span class="n">chat_log</span><span class="o">.</span><span class="n">get_recent</span><span class="p">())</span>
|
|
399
|
+
<span class="k">if</span> <span class="n">results</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
400
|
+
<span class="k">try</span><span class="p">:</span>
|
|
401
|
+
<span class="k">for</span> <span class="n">result</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
|
402
|
+
<span class="k">if</span> <span class="n">result</span><span class="p">[</span><span class="s1">'cmd'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'UNKNOWN'</span><span class="p">:</span>
|
|
403
|
+
<span class="n">consecutive_parse_errors</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
404
|
+
<span class="n">parse_error</span> <span class="o">=</span> <span class="kc">True</span>
|
|
405
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
406
|
+
<span class="k">pass</span>
|
|
407
|
+
|
|
408
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">parse_error</span><span class="p">:</span>
|
|
409
|
+
<span class="n">consecutive_parse_errors</span> <span class="o">=</span> <span class="mi">0</span>
|
|
410
|
+
<span class="k">else</span><span class="p">:</span>
|
|
411
|
+
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
412
|
+
|
|
413
|
+
<span class="k">if</span> <span class="n">consecutive_parse_errors</span> <span class="o">></span> <span class="mi">6</span><span class="p">:</span>
|
|
414
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Too many consecutive parse errors, stopping processing."</span><span class="p">)</span>
|
|
415
|
+
|
|
416
|
+
<span class="k">elif</span> <span class="n">consecutive_parse_errors</span> <span class="o">></span> <span class="mi">3</span><span class="p">:</span>
|
|
417
|
+
<span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"cmd"</span><span class="p">:</span> <span class="s2">"UNKNOWN"</span><span class="p">,</span> <span class="s2">"args"</span><span class="p">:</span> <span class="p">{</span> <span class="s2">"SYSTEM WARNING: Issue valid command list or task; processing will be halted. Simplify output."</span><span class="p">}})</span>
|
|
418
|
+
|
|
419
|
+
<span class="k">try</span><span class="p">:</span>
|
|
420
|
+
<span class="n">tmp_data3</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"results"</span><span class="p">:</span> <span class="n">full_cmds</span> <span class="p">}</span>
|
|
421
|
+
<span class="n">tmp_data3</span> <span class="o">=</span> <span class="k">await</span> <span class="n">pipeline_manager</span><span class="o">.</span><span class="n">process_results</span><span class="p">(</span><span class="n">tmp_data3</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
|
|
422
|
+
<span class="n">out_results</span> <span class="o">=</span> <span class="n">tmp_data3</span><span class="p">[</span><span class="s1">'results'</span><span class="p">]</span>
|
|
423
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
424
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Error processing results: "</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
|
|
425
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
|
|
426
|
+
|
|
427
|
+
<span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">full_cmds</span><span class="p">:</span>
|
|
428
|
+
<span class="n">full_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
|
|
429
|
+
<span class="n">out_results</span> <span class="o">=</span> <span class="p">[]</span>
|
|
430
|
+
<span class="n">stop_requested</span><span class="o">=</span> <span class="kc">False</span>
|
|
431
|
+
<span class="n">actual_results</span> <span class="o">=</span> <span class="kc">False</span>
|
|
432
|
+
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span>
|
|
433
|
+
<span class="k">for</span> <span class="n">result</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
|
434
|
+
<span class="k">if</span> <span class="s1">'result'</span> <span class="ow">in</span> <span class="n">result</span> <span class="ow">and</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
435
|
+
<span class="k">if</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'continue'</span><span class="p">:</span>
|
|
436
|
+
<span class="n">out_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
437
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">True</span>
|
|
438
|
+
<span class="k">elif</span> <span class="n">result</span><span class="p">[</span><span class="s1">'result'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'stop'</span><span class="p">:</span>
|
|
439
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">False</span>
|
|
440
|
+
<span class="n">stop_requested</span> <span class="o">=</span> <span class="kc">True</span>
|
|
441
|
+
<span class="k">else</span><span class="p">:</span>
|
|
442
|
+
<span class="n">out_results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
443
|
+
<span class="c1"># only print up to 200 characters</span>
|
|
444
|
+
<span class="n">truncated_result</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="mi">200</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'...'</span>
|
|
445
|
+
<span class="n">termcolor</span><span class="o">.</span><span class="n">cprint</span><span class="p">(</span><span class="s2">"Found result: "</span> <span class="o">+</span> <span class="n">truncated_result</span><span class="p">,</span> <span class="s2">"magenta"</span><span class="p">)</span>
|
|
446
|
+
<span class="n">actual_results</span> <span class="o">=</span> <span class="kc">True</span>
|
|
447
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">True</span>
|
|
448
|
+
<span class="k">else</span><span class="p">:</span>
|
|
449
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">False</span>
|
|
450
|
+
|
|
451
|
+
<span class="k">if</span> <span class="n">actual_results</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">stop_requested</span><span class="p">:</span>
|
|
452
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">True</span>
|
|
453
|
+
|
|
454
|
+
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">out_results</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
455
|
+
<span class="k">try</span><span class="p">:</span>
|
|
456
|
+
<span class="n">tmp_data2</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"results"</span><span class="p">:</span> <span class="n">out_results</span> <span class="p">}</span>
|
|
457
|
+
<span class="n">tmp_data2</span> <span class="o">=</span> <span class="k">await</span> <span class="n">pipeline_manager</span><span class="o">.</span><span class="n">process_results</span><span class="p">(</span><span class="n">tmp_data2</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
|
|
458
|
+
<span class="n">out_results</span> <span class="o">=</span> <span class="n">tmp_data2</span><span class="p">[</span><span class="s1">'results'</span><span class="p">]</span>
|
|
459
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
460
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Error processing results: "</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
|
|
461
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
|
|
462
|
+
|
|
463
|
+
<span class="n">formatted_results</span> <span class="o">=</span> <span class="p">[]</span>
|
|
464
|
+
<span class="n">st_process</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
|
465
|
+
<span class="k">for</span> <span class="n">result</span> <span class="ow">in</span> <span class="n">out_results</span><span class="p">:</span>
|
|
466
|
+
<span class="n">process_result</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">formatted_results</span><span class="p">)</span>
|
|
467
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Time to process results: "</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">st_process</span><span class="p">)</span>
|
|
468
|
+
|
|
469
|
+
<span class="n">context</span><span class="o">.</span><span class="n">chat_log</span><span class="o">.</span><span class="n">add_message</span><span class="p">({</span><span class="s2">"role"</span><span class="p">:</span> <span class="s2">"user"</span><span class="p">,</span> <span class="s2">"content"</span><span class="p">:</span> <span class="n">formatted_results</span><span class="p">})</span>
|
|
470
|
+
<span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">out_results</span><span class="p">)</span>
|
|
471
|
+
<span class="k">else</span><span class="p">:</span>
|
|
472
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Processing iteration: "</span><span class="p">,</span> <span class="n">iterations</span><span class="p">,</span> <span class="s2">"no message added"</span><span class="p">)</span>
|
|
473
|
+
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'finished_conversation'</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
|
474
|
+
<span class="n">termcolor</span><span class="o">.</span><span class="n">cprint</span><span class="p">(</span><span class="s2">"Finished conversation, exiting send_message_to_agent"</span><span class="p">,</span> <span class="s2">"red"</span><span class="p">)</span>
|
|
475
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">False</span>
|
|
476
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
477
|
+
<span class="n">continue_processing</span> <span class="o">=</span> <span class="kc">False</span>
|
|
478
|
+
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
479
|
+
<span class="n">trace</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
|
|
480
|
+
<span class="n">msg</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
481
|
+
<span class="n">descr</span> <span class="o">=</span> <span class="n">msg</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">trace</span>
|
|
482
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">descr</span><span class="p">)</span>
|
|
483
|
+
|
|
484
|
+
<span class="nb">print</span><span class="p">(</span><span class="s1">'------'</span><span class="p">)</span>
|
|
485
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
|
486
|
+
<span class="k">try</span><span class="p">:</span>
|
|
487
|
+
<span class="n">persona</span> <span class="o">=</span> <span class="n">agent_</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span>
|
|
488
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
489
|
+
<span class="n">persona</span> <span class="o">=</span> <span class="s2">"System error"</span>
|
|
490
|
+
<span class="n">context</span><span class="o">.</span><span class="n">chat_log</span><span class="o">.</span><span class="n">add_message</span><span class="p">({</span><span class="s2">"role"</span><span class="p">:</span> <span class="s2">"user"</span><span class="p">,</span> <span class="s2">"content"</span><span class="p">:</span> <span class="n">msg</span> <span class="p">})</span>
|
|
491
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_output</span><span class="p">(</span><span class="s2">"system_error"</span><span class="p">,</span> <span class="p">{</span> <span class="s2">"error"</span><span class="p">:</span> <span class="n">msg</span> <span class="p">})</span>
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span>
|
|
495
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Exiting send_message_to_agent: "</span><span class="p">,</span> <span class="n">session_id</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">max_iterations</span><span class="p">)</span>
|
|
496
|
+
|
|
497
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">finished_chat</span><span class="p">()</span>
|
|
498
|
+
<span class="k">return</span> <span class="p">[</span><span class="n">results</span><span class="p">,</span> <span class="n">full_results</span><span class="p">]</span>
|
|
499
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
500
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Error in send_message_to_agent: "</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
|
|
501
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
|
|
502
|
+
<span class="k">return</span> <span class="p">[]</span></div>
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
<div class="viewcode-block" id="add_current_time">
|
|
506
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.add_current_time">[docs]</a>
|
|
507
|
+
<span class="nd">@pipe</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'process_results'</span><span class="p">,</span> <span class="n">priority</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
|
|
508
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">add_current_time</span><span class="p">(</span><span class="n">data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
509
|
+
<span class="n">data</span><span class="p">[</span><span class="s1">'results'</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s1">'results'</span><span class="p">]</span>
|
|
510
|
+
<span class="k">return</span> <span class="n">data</span></div>
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
<div class="viewcode-block" id="finished_chat">
|
|
515
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.finished_chat">[docs]</a>
|
|
516
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
517
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">finished_chat</span><span class="p">(</span><span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
518
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_output</span><span class="p">(</span><span class="s2">"finished_chat"</span><span class="p">,</span> <span class="p">{</span> <span class="s2">"persona"</span><span class="p">:</span> <span class="n">context</span><span class="o">.</span><span class="n">agent</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> <span class="p">})</span></div>
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
<div class="viewcode-block" id="quit">
|
|
522
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.quit">[docs]</a>
|
|
523
|
+
<span class="nd">@hook</span><span class="p">()</span>
|
|
524
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">quit</span><span class="p">(</span><span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
525
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Chat service is quitting.."</span><span class="p">)</span>
|
|
526
|
+
<span class="c1"># Close all existing SSE connections</span>
|
|
527
|
+
<span class="k">for</span> <span class="n">session_id</span><span class="p">,</span> <span class="n">queues</span> <span class="ow">in</span> <span class="n">sse_clients</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
528
|
+
<span class="k">for</span> <span class="n">queue</span> <span class="ow">in</span> <span class="n">queues</span><span class="o">.</span><span class="n">copy</span><span class="p">():</span> <span class="c1"># Use copy to avoid modification during iteration</span>
|
|
529
|
+
<span class="k">try</span><span class="p">:</span>
|
|
530
|
+
<span class="k">await</span> <span class="n">queue</span><span class="o">.</span><span class="n">put</span><span class="p">({</span><span class="s1">'event'</span><span class="p">:</span> <span class="s1">'close'</span><span class="p">,</span> <span class="s1">'data'</span><span class="p">:</span> <span class="s1">'Server shutting down'</span><span class="p">})</span>
|
|
531
|
+
<span class="k">except</span><span class="p">:</span>
|
|
532
|
+
<span class="k">pass</span>
|
|
533
|
+
|
|
534
|
+
<span class="c1"># Clear the global sse_clients</span>
|
|
535
|
+
<span class="n">sse_clients</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
536
|
+
|
|
537
|
+
<span class="c1"># Give clients a moment to receive the close message</span>
|
|
538
|
+
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
539
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Chat service finished."</span><span class="p">)</span>
|
|
540
|
+
<span class="k">return</span> <span class="p">{</span><span class="s2">"status"</span><span class="p">:</span> <span class="s2">"shutdown_complete"</span><span class="p">}</span></div>
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
<div class="viewcode-block" id="subscribe_to_agent_messages">
|
|
544
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.subscribe_to_agent_messages">[docs]</a>
|
|
545
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
546
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">subscribe_to_agent_messages</span><span class="p">(</span><span class="n">session_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
547
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">event_generator</span><span class="p">():</span>
|
|
548
|
+
<span class="n">queue</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Queue</span><span class="p">()</span>
|
|
549
|
+
<span class="k">if</span> <span class="n">session_id</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sse_clients</span><span class="p">:</span>
|
|
550
|
+
<span class="n">sse_clients</span><span class="p">[</span><span class="n">session_id</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
551
|
+
<span class="n">sse_clients</span><span class="p">[</span><span class="n">session_id</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">queue</span><span class="p">)</span>
|
|
552
|
+
<span class="k">try</span><span class="p">:</span>
|
|
553
|
+
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
|
554
|
+
<span class="n">data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">queue</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
|
555
|
+
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span>
|
|
556
|
+
<span class="nb">print</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">flush</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
557
|
+
<span class="k">yield</span> <span class="n">data</span>
|
|
558
|
+
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">CancelledError</span><span class="p">:</span>
|
|
559
|
+
<span class="n">sse_clients</span><span class="p">[</span><span class="n">session_id</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">queue</span><span class="p">)</span>
|
|
560
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">sse_clients</span><span class="p">[</span><span class="n">session_id</span><span class="p">]:</span>
|
|
561
|
+
<span class="k">del</span> <span class="n">sse_clients</span><span class="p">[</span><span class="n">session_id</span><span class="p">]</span>
|
|
562
|
+
<span class="k">return</span> <span class="n">event_generator</span><span class="p">()</span></div>
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
<div class="viewcode-block" id="close_chat_session">
|
|
566
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.close_chat_session">[docs]</a>
|
|
567
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
568
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">close_chat_session</span><span class="p">(</span><span class="n">session_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
569
|
+
<span class="k">if</span> <span class="n">session_id</span> <span class="ow">in</span> <span class="n">sse_clients</span><span class="p">:</span>
|
|
570
|
+
<span class="k">del</span> <span class="n">sse_clients</span><span class="p">[</span><span class="n">session_id</span><span class="p">]</span></div>
|
|
571
|
+
|
|
572
|
+
<span class="c1"># Any additional cleanup needed</span>
|
|
573
|
+
|
|
574
|
+
<div class="viewcode-block" id="agent_output">
|
|
575
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.agent_output">[docs]</a>
|
|
576
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
577
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">agent_output</span><span class="p">(</span><span class="n">event</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
578
|
+
<span class="n">log_id</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">log_id</span>
|
|
579
|
+
<span class="k">if</span> <span class="n">log_id</span> <span class="ow">in</span> <span class="n">sse_clients</span><span class="p">:</span>
|
|
580
|
+
<span class="k">for</span> <span class="n">queue</span> <span class="ow">in</span> <span class="n">sse_clients</span><span class="p">[</span><span class="n">log_id</span><span class="p">]:</span>
|
|
581
|
+
<span class="k">await</span> <span class="n">queue</span><span class="o">.</span><span class="n">put</span><span class="p">({</span><span class="s2">"event"</span><span class="p">:</span> <span class="n">event</span><span class="p">,</span> <span class="s2">"data"</span><span class="p">:</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">data</span><span class="p">)})</span></div>
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
<div class="viewcode-block" id="append_message">
|
|
585
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.append_message">[docs]</a>
|
|
586
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
587
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">append_message</span><span class="p">(</span><span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">content</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
588
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">chat_log</span><span class="o">.</span><span class="n">add_message</span><span class="p">({</span><span class="s2">"role"</span><span class="p">:</span> <span class="n">role</span><span class="p">,</span> <span class="s2">"content"</span><span class="p">:</span> <span class="n">content</span><span class="p">})</span></div>
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
<div class="viewcode-block" id="partial_command">
|
|
592
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.partial_command">[docs]</a>
|
|
593
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
594
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">partial_command</span><span class="p">(</span><span class="n">command</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">chunk</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
595
|
+
<span class="n">agent_</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">agent</span>
|
|
596
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_output</span><span class="p">(</span><span class="s2">"partial_command"</span><span class="p">,</span> <span class="p">{</span> <span class="s2">"command"</span><span class="p">:</span> <span class="n">command</span><span class="p">,</span> <span class="s2">"chunk"</span><span class="p">:</span> <span class="n">chunk</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="n">params</span><span class="p">,</span>
|
|
597
|
+
<span class="s2">"persona"</span><span class="p">:</span> <span class="n">agent_</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> <span class="p">})</span></div>
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
<div class="viewcode-block" id="running_command">
|
|
601
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.running_command">[docs]</a>
|
|
602
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
603
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">running_command</span><span class="p">(</span><span class="n">command</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
604
|
+
<span class="n">agent_</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">agent</span>
|
|
605
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_output</span><span class="p">(</span><span class="s2">"running_command"</span><span class="p">,</span> <span class="p">{</span> <span class="s2">"command"</span><span class="p">:</span> <span class="n">command</span><span class="p">,</span> <span class="s2">"args"</span><span class="p">:</span> <span class="n">args</span><span class="p">,</span> <span class="s2">"persona"</span><span class="p">:</span> <span class="n">agent_</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> <span class="p">})</span></div>
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
<div class="viewcode-block" id="command_result">
|
|
609
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.chat.html#mindroot.coreplugins.chat.services.command_result">[docs]</a>
|
|
610
|
+
<span class="nd">@service</span><span class="p">()</span>
|
|
611
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">command_result</span><span class="p">(</span><span class="n">command</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
612
|
+
<span class="n">agent_</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">agent</span>
|
|
613
|
+
<span class="k">await</span> <span class="n">context</span><span class="o">.</span><span class="n">agent_output</span><span class="p">(</span><span class="s2">"command_result"</span><span class="p">,</span> <span class="p">{</span> <span class="s2">"command"</span><span class="p">:</span> <span class="n">command</span><span class="p">,</span> <span class="s2">"result"</span><span class="p">:</span> <span class="n">result</span><span class="p">,</span> <span class="s2">"persona"</span><span class="p">:</span> <span class="n">agent_</span><span class="p">[</span><span class="s1">'persona'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> <span class="p">})</span></div>
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
</pre></div>
|
|
617
|
+
|
|
618
|
+
</div>
|
|
619
|
+
</div>
|
|
620
|
+
<footer>
|
|
621
|
+
|
|
622
|
+
<hr/>
|
|
623
|
+
|
|
624
|
+
<div role="contentinfo">
|
|
625
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
626
|
+
</div>
|
|
627
|
+
|
|
628
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
629
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
630
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
</footer>
|
|
634
|
+
</div>
|
|
635
|
+
</div>
|
|
636
|
+
</section>
|
|
637
|
+
</div>
|
|
638
|
+
<script>
|
|
639
|
+
jQuery(function () {
|
|
640
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
641
|
+
});
|
|
642
|
+
</script>
|
|
643
|
+
|
|
644
|
+
</body>
|
|
645
|
+
</html>
|