open-swarm 0.1.1744937124__tar.gz → 0.1.1744942852__tar.gz
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.
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/PKG-INFO +1 -1
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/pyproject.toml +1 -1
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/chatbot/blueprint_chatbot.py +13 -3
- open_swarm-0.1.1744942852/src/swarm/blueprints/codey/blueprint_codey.py +188 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/gaggle/blueprint_gaggle.py +21 -4
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +33 -3
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/__init__.py +1 -2
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/cli_handler.py +20 -4
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/agent_utils.py +0 -21
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/blueprint_base.py +0 -333
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/blueprint_discovery.py +0 -128
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/blueprint_utils.py +0 -17
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/common_utils.py +0 -12
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/config_loader.py +0 -122
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/output_utils.py +0 -173
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/slash_commands.py +0 -17
- open_swarm-0.1.1744937124/src/swarm/extensions/blueprint/spinner.py +0 -100
- open_swarm-0.1.1744937124/src/swarm/extensions/config/config_manager.py +0 -258
- open_swarm-0.1.1744937124/src/swarm/extensions/config/server_config.py +0 -49
- open_swarm-0.1.1744937124/src/swarm/extensions/config/setup_wizard.py +0 -103
- open_swarm-0.1.1744937124/src/swarm/extensions/config/utils/logger.py +0 -36
- open_swarm-0.1.1744937124/src/swarm/extensions/launchers/build_launchers.py +0 -14
- open_swarm-0.1.1744937124/src/swarm/extensions/launchers/build_swarm_wrapper.py +0 -12
- open_swarm-0.1.1744937124/src/swarm/extensions/launchers/swarm_api.py +0 -68
- open_swarm-0.1.1744937124/src/swarm/extensions/launchers/swarm_cli.py +0 -216
- open_swarm-0.1.1744937124/src/swarm/extensions/launchers/swarm_wrapper.py +0 -29
- open_swarm-0.1.1744937124/tests/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/.gitignore +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/LICENSE +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/README.md +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/agent/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/apps.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/auth.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/README.md +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/chatbot/templates/chatbot/chatbot.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/digitalbutlers/blueprint_digitalbutlers.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/divine_code/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/divine_code/apps.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/divine_code/blueprint_divine_code.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/django_chat/apps.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/django_chat/blueprint_django_chat.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/django_chat/templates/django_chat/django_chat_webpage.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/django_chat/urls.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/django_chat/views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/echocraft/blueprint_echocraft.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/apps.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/blueprint_family_ties.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/models.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/serializers.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/settings.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/urls.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/family_ties/views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/flock/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/messenger/templates/messenger/messenger.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/omniplex/blueprint_omniplex.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/rue_code/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/rue_code/blueprint_rue_code.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/suggestion/blueprint_suggestion.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/unapologetic_press/blueprint_unapologetic_press.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/whiskeytango_foxtrot/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/blueprints/whiskeytango_foxtrot/apps.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/consumers.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/django_utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/interactive_mode.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/modes/rest_mode.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/runnable_blueprint.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/blueprint_runner.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/cli_args.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/blueprint_management.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/config_management.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/edit_config.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/list_blueprints.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/validate_env.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/commands/validate_envvars.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/interactive_shell.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/main.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/selection.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/utils/discover_commands.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/utils/env_setup.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/cli/utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/config/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/config/config_loader.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/launchers/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/llm/chat_completion.py +0 -0
- {open_swarm-0.1.1744937124/src/swarm/extensions/config/utils → open_swarm-0.1.1744942852/src/swarm/management}/__init__.py +0 -0
- {open_swarm-0.1.1744937124/src/swarm/management → open_swarm-0.1.1744942852/src/swarm/management/commands}/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/management/commands/runserver.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/messages.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/middleware.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/migrations/0010_initial_chat_models.py +0 -0
- {open_swarm-0.1.1744937124/src/swarm/management/commands → open_swarm-0.1.1744942852/src/swarm/migrations}/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/models.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/permissions.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/repl/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/repl/repl.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/serializers.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/settings.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/fonts/fontawesome-webfont.ttf +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/fonts/fontawesome-webfont.woff +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/fonts/fontawesome-webfont.woff2 +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/markedjs/marked.min.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/alert-triangle.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/archive.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/artboard.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/automatic-gearbox.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/box-multiple.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/carambola.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/copy.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/download.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/edit.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/filled/carambola.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/filled/paint.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/headset.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/message-chatbot.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/message-star.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/message-x.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/message.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/paperclip.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/playlist-add.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/robot.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/search.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/settings.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/thumb-down.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/contrib/tabler-icons/thumb-up.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/css/dropdown.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/htmx/htmx.min.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/js/dropdown.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/base.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/chat-history.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/chat.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/chatbot.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/chatgpt.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/colors/corporate.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/colors/pastel.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/colors/tropical.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/general.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/layout.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/layouts/messenger-layout.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/layouts/minimalist-layout.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/layouts/mobile-layout.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/messages.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/messenger.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/settings.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/simple.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/slack.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/style.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/theme.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/css/toast.css +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/auth.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/blueprint.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/blueprintUtils.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/chatLogic.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/debug.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/events.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/main.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/messages.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/messengerLogic.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/apiService.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/blueprintManager.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/chatHistory.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/debugLogger.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/eventHandlers.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/messageProcessor.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/state.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/userInteractions.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/modules/validation.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/rendering.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/settings.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/sidebar.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/simpleLogic.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/slackLogic.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/splash.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/theme.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/toast.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/ui.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/js/validation.js +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/animated_spinner.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/arrow_down.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/arrow_left.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/arrow_right.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/arrow_up.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/attach.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/avatar.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/canvas.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/chat_history.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/close.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/copy.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/dark_mode.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/edit.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/layout.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/logo.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/logout.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/mobile.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/new_chat.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/not_visible.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/plus.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/run_code.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/save.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/search.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/settings.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/speaker.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/stop.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/thumbs_down.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/thumbs_up.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/toggle_off.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/toggle_on.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/trash.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/undo.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/visible.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/static/rest_mode/svg/voice.svg +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/account/login.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/account/signup.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/base.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/chat.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/index.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/components/chat_sidebar.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/components/header.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/components/main_chat_pane.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/components/settings_dialog.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/components/splash_screen.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/components/top_bar.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/message_ui.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/rest_mode/slackbot.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/simple_blueprint_page.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/websocket_partials/final_system_message.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/websocket_partials/system_message.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/templates/websocket_partials/user_message.html +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/tool_executor.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/urls.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/util.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/color_utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/context_utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/general_utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/log_utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/logger.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/logger_setup.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/message_sequence.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/message_utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/utils/redact.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/api_views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/chat_views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/core_views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/message_views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/model_views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/utils.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/views/web_views.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/wsgi.py +0 -0
- {open_swarm-0.1.1744937124/src/swarm/migrations → open_swarm-0.1.1744942852/tests}/__init__.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/api/conftest.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/api/test_chat_completions_auth_async.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/api/test_chat_completions_failing_async.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/api/test_chat_completions_validation_async.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_chatbot.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_digitalbutlers.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_dilbot_universe.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_divine_code.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_echocraft.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_family_ties.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_gaggle.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_gotchaman.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_mcp_demo.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_mission_improbable.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_monkai_magic.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_nebula_shellz.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_omniplex.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_suggestion.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_unapologetic_press.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/blueprints/test_whiskeytangofoxtrot.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/cli/test_launchers.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/cli/test_list_blueprints.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/conftest.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/extensions/launchers/test_swarm_api_launcher.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/swarm_config.json +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_chucks_angels.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_digitalbutlers.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_dilbot_universe.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_divine_code.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_django_chat.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_echocraft.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_family_ties.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_flock.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_gaggle.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_gotchaman.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_monkai-magic.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_nebula_shellz.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_omniplex.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_rue-code.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_suggestion.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_unapologetic_press.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_university.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/system/test_whiskeytango_foxtrot.sh +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_blueprint_loading.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_cli_mode_selection.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_core_filter_duplicate_system_messages.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_core_filter_messages.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_core_truncate_message_history.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_core_update_null_content.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_dummy.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/test_truncate_message_history.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/unit/blueprints/rue_code/test_rue_code_tools.py +0 -0
- {open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/tests/unit/test_blueprint_base_config.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: open-swarm
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.1744942852
|
4
4
|
Summary: Open Swarm: Orchestrating AI Agent Swarms with Django
|
5
5
|
Project-URL: Homepage, https://github.com/yourusername/open-swarm
|
6
6
|
Project-URL: Documentation, https://github.com/yourusername/open-swarm/blob/main/README.md
|
@@ -1,7 +1,11 @@
|
|
1
|
+
import os
|
2
|
+
from dotenv import load_dotenv; load_dotenv(override=True)
|
3
|
+
|
1
4
|
import logging
|
2
5
|
import os
|
3
6
|
import sys
|
4
7
|
from typing import Dict, Any, List, ClassVar, Optional
|
8
|
+
import argparse
|
5
9
|
|
6
10
|
# Set logging to WARNING by default unless SWARM_DEBUG=1
|
7
11
|
if not os.environ.get("SWARM_DEBUG"):
|
@@ -22,7 +26,7 @@ try:
|
|
22
26
|
from agents.models.interface import Model
|
23
27
|
from agents.models.openai_chatcompletions import OpenAIChatCompletionsModel
|
24
28
|
from openai import AsyncOpenAI
|
25
|
-
from swarm.
|
29
|
+
from swarm.core.blueprint_base import BlueprintBase
|
26
30
|
except ImportError as e:
|
27
31
|
print(f"ERROR: Import failed in ChatbotBlueprint: {e}. Check dependencies.")
|
28
32
|
print(f"sys.path: {sys.path}")
|
@@ -141,8 +145,14 @@ if __name__ == "__main__":
|
|
141
145
|
src_path = os.path.join(project_root, 'src')
|
142
146
|
if src_path not in sys.path:
|
143
147
|
sys.path.insert(0, src_path)
|
144
|
-
|
145
|
-
|
148
|
+
parser = argparse.ArgumentParser(description='Chatbot Blueprint Runner')
|
149
|
+
parser.add_argument('instruction', nargs=argparse.REMAINDER, help='Instruction for Chatbot to process (all args after -- are joined as the prompt)')
|
150
|
+
args = parser.parse_args()
|
151
|
+
instruction_args = args.instruction
|
152
|
+
if instruction_args and instruction_args[0] == '--':
|
153
|
+
instruction_args = instruction_args[1:]
|
154
|
+
instruction = ' '.join(instruction_args).strip() if instruction_args else None
|
155
|
+
if instruction:
|
146
156
|
blueprint = ChatbotBlueprint(blueprint_id="chatbot")
|
147
157
|
async def runner():
|
148
158
|
async for chunk in blueprint._run_non_interactive(instruction):
|
@@ -0,0 +1,188 @@
|
|
1
|
+
import os
|
2
|
+
from dotenv import load_dotenv; load_dotenv(override=True)
|
3
|
+
|
4
|
+
import logging
|
5
|
+
from swarm.core.blueprint_base import BlueprintBase
|
6
|
+
from agents import Agent, Tool, function_tool, Runner
|
7
|
+
from agents.mcp import MCPServer
|
8
|
+
from typing import List, Dict, Any, Optional, AsyncGenerator
|
9
|
+
import sys
|
10
|
+
import itertools
|
11
|
+
import threading
|
12
|
+
import time
|
13
|
+
from rich.console import Console
|
14
|
+
import os
|
15
|
+
from swarm.core.blueprint_runner import BlueprintRunner
|
16
|
+
from swarm.core.spinner import Spinner as TerminalSpinner
|
17
|
+
|
18
|
+
# --- Tool Logic Definitions ---
|
19
|
+
def git_status() -> str:
|
20
|
+
return "OK: git status placeholder"
|
21
|
+
def git_diff() -> str:
|
22
|
+
return "OK: git diff placeholder"
|
23
|
+
def git_add() -> str:
|
24
|
+
return "OK: git add placeholder"
|
25
|
+
def git_commit(message: str) -> str:
|
26
|
+
return f"OK: git commit '{message}' placeholder"
|
27
|
+
def git_push() -> str:
|
28
|
+
return "OK: git push placeholder"
|
29
|
+
def run_npm_test(args: str = "") -> str:
|
30
|
+
return "OK: npm test placeholder"
|
31
|
+
def run_pytest(args: str = "") -> str:
|
32
|
+
return "OK: pytest placeholder"
|
33
|
+
|
34
|
+
git_status_tool = function_tool(git_status)
|
35
|
+
git_diff_tool = function_tool(git_diff)
|
36
|
+
git_add_tool = function_tool(git_add)
|
37
|
+
git_commit_tool = function_tool(git_commit)
|
38
|
+
git_push_tool = function_tool(git_push)
|
39
|
+
run_npm_test_tool = function_tool(run_npm_test)
|
40
|
+
run_pytest_tool = function_tool(run_pytest)
|
41
|
+
|
42
|
+
linus_corvalds_instructions = """
|
43
|
+
You are Linus Corvalds, the resolute leader of the Codey creative team.
|
44
|
+
|
45
|
+
Respond directly and naturally to any user prompt that is creative, general, or conversational (for example, if the user asks you to write a poem, haiku, or answer a question, reply in plain language—do NOT invoke any tools or functions).
|
46
|
+
|
47
|
+
Only use your available tools (git_status, git_diff, git_add, git_commit, git_push) if the user specifically requests a git/code operation, or if the request cannot be fulfilled without a tool.
|
48
|
+
|
49
|
+
If you are unsure, prefer a direct response. Never output tool schema, argument names, or placeholders to the user.
|
50
|
+
"""
|
51
|
+
|
52
|
+
fiona_instructions = """
|
53
|
+
You are Fiona Flame, the diligent git ops specialist for the Codey team.
|
54
|
+
|
55
|
+
Respond directly and naturally to creative or conversational prompts. Only use your tools (git_status, git_diff, git_add, git_commit, git_push) for explicit git/code requests.
|
56
|
+
"""
|
57
|
+
|
58
|
+
sammy_instructions = """
|
59
|
+
You are SammyScript, the test runner and automation specialist.
|
60
|
+
|
61
|
+
For creative or general prompts, reply in natural language. Only use your tools (run_npm_test, run_pytest) for explicit test/code requests.
|
62
|
+
"""
|
63
|
+
|
64
|
+
# --- ANSI/Emoji Box Output Helpers ---
|
65
|
+
def ansi_box(title, content, emoji=None, count=None, params=None):
|
66
|
+
box_lines = []
|
67
|
+
header = f"\033[1;36m┏━ {emoji+' ' if emoji else ''}{title} ━{'━'*max(0, 40-len(title))}\033[0m"
|
68
|
+
box_lines.append(header)
|
69
|
+
if params:
|
70
|
+
box_lines.append(f"\033[1;34m┃ Params: {params}\033[0m")
|
71
|
+
if count is not None:
|
72
|
+
box_lines.append(f"\033[1;33m┃ Results: {count}\033[0m")
|
73
|
+
for line in content.split('\n'):
|
74
|
+
box_lines.append(f"┃ {line}")
|
75
|
+
box_lines.append("┗"+"━"*44)
|
76
|
+
return "\n".join(box_lines)
|
77
|
+
|
78
|
+
class CodeyBlueprint(BlueprintBase):
|
79
|
+
def __init__(self, blueprint_id: str, config_path: Optional[str] = None, **kwargs):
|
80
|
+
super().__init__(blueprint_id, config_path, **kwargs)
|
81
|
+
self.logger = logging.getLogger(__name__)
|
82
|
+
self._model_instance_cache = {}
|
83
|
+
self._openai_client_cache = {}
|
84
|
+
|
85
|
+
def create_starting_agent(self, mcp_servers: List[MCPServer]) -> Agent:
|
86
|
+
linus_corvalds = self.make_agent(
|
87
|
+
name="Linus_Corvalds",
|
88
|
+
instructions=linus_corvalds_instructions,
|
89
|
+
tools=[git_status_tool, git_diff_tool],
|
90
|
+
mcp_servers=mcp_servers
|
91
|
+
)
|
92
|
+
fiona_flame = self.make_agent(
|
93
|
+
name="Fiona_Flame",
|
94
|
+
instructions=fiona_instructions,
|
95
|
+
tools=[git_status_tool, git_diff_tool, git_add_tool, git_commit_tool, git_push_tool],
|
96
|
+
mcp_servers=mcp_servers
|
97
|
+
)
|
98
|
+
sammy_script = self.make_agent(
|
99
|
+
name="SammyScript",
|
100
|
+
instructions=sammy_instructions,
|
101
|
+
tools=[run_npm_test_tool, run_pytest_tool],
|
102
|
+
mcp_servers=mcp_servers
|
103
|
+
)
|
104
|
+
linus_corvalds.tools.append(fiona_flame.as_tool(tool_name="Fiona_Flame", tool_description="Delegate git actions to Fiona."))
|
105
|
+
linus_corvalds.tools.append(sammy_script.as_tool(tool_name="SammyScript", tool_description="Delegate testing tasks to Sammy."))
|
106
|
+
return linus_corvalds
|
107
|
+
|
108
|
+
async def run(self, messages: List[dict], **kwargs):
|
109
|
+
self.logger.info("CodeyBlueprint run method called.")
|
110
|
+
instruction = messages[-1].get("content", "") if messages else ""
|
111
|
+
try:
|
112
|
+
mcp_servers = kwargs.get("mcp_servers", [])
|
113
|
+
starting_agent = self.create_starting_agent(mcp_servers=mcp_servers)
|
114
|
+
model_name = os.getenv("LITELLM_MODEL") or os.getenv("DEFAULT_LLM") or "gpt-3.5-turbo"
|
115
|
+
if not starting_agent.model:
|
116
|
+
yield {"messages": [{"role": "assistant", "content": f"Error: No model instance available for Codey agent. Check your LITELLM_MODEL, OPENAI_API_KEY, or DEFAULT_LLM config."}]}
|
117
|
+
return
|
118
|
+
if not starting_agent.tools:
|
119
|
+
yield {"messages": [{"role": "assistant", "content": f"Warning: No tools registered for Codey agent. Only direct LLM output is possible."}]}
|
120
|
+
required_mcps = []
|
121
|
+
if hasattr(self, 'metadata') and self.metadata.get('required_mcp_servers'):
|
122
|
+
required_mcps = self.metadata['required_mcp_servers']
|
123
|
+
missing_mcps = [m for m in required_mcps if m not in [s.name for s in mcp_servers]]
|
124
|
+
if missing_mcps:
|
125
|
+
yield {"messages": [{"role": "assistant", "content": f"Warning: Missing required MCP servers: {', '.join(missing_mcps)}. Some features may not work."}]}
|
126
|
+
show_intermediate = kwargs.get("show_intermediate", False)
|
127
|
+
spinner = None
|
128
|
+
if show_intermediate:
|
129
|
+
spinner = TerminalSpinner(interactive=True, custom_sequence="generating")
|
130
|
+
spinner.start()
|
131
|
+
try:
|
132
|
+
async for chunk in BlueprintRunner.run_agent(starting_agent, instruction):
|
133
|
+
if show_intermediate:
|
134
|
+
for msg in chunk["messages"]:
|
135
|
+
print(msg["content"])
|
136
|
+
yield chunk
|
137
|
+
finally:
|
138
|
+
if spinner:
|
139
|
+
spinner.stop()
|
140
|
+
except Exception as e:
|
141
|
+
yield {"messages": [{"role": "assistant", "content": f"Error: {e}"}]}
|
142
|
+
|
143
|
+
if __name__ == "__main__":
|
144
|
+
import argparse
|
145
|
+
import asyncio
|
146
|
+
parser = argparse.ArgumentParser(description="Run the Codey blueprint.")
|
147
|
+
parser.add_argument('instruction', nargs=argparse.REMAINDER, help='Instruction for Codey to process (all args after -- are joined as the prompt)')
|
148
|
+
parser.add_argument('--show-intermediate', action='store_true', help='Show all intermediate outputs (verbose mode)')
|
149
|
+
args = parser.parse_args()
|
150
|
+
# Join all positional arguments as the instruction
|
151
|
+
instruction_args = args.instruction
|
152
|
+
if instruction_args and instruction_args[0] == '--':
|
153
|
+
instruction_args = instruction_args[1:]
|
154
|
+
instruction = ' '.join(instruction_args).strip() if instruction_args else None
|
155
|
+
show_intermediate = args.show_intermediate
|
156
|
+
blueprint = CodeyBlueprint(blueprint_id="codey")
|
157
|
+
if instruction:
|
158
|
+
# Non-interactive mode: run once and exit
|
159
|
+
async def main():
|
160
|
+
messages = [{"role": "user", "content": instruction}]
|
161
|
+
last_assistant_msg = None
|
162
|
+
async for resp in blueprint.run(messages, show_intermediate=show_intermediate):
|
163
|
+
for msg in resp["messages"]:
|
164
|
+
if show_intermediate:
|
165
|
+
print(msg["content"])
|
166
|
+
elif msg["role"] == "assistant":
|
167
|
+
last_assistant_msg = msg["content"]
|
168
|
+
if not show_intermediate and last_assistant_msg is not None:
|
169
|
+
print(last_assistant_msg)
|
170
|
+
asyncio.run(main())
|
171
|
+
else:
|
172
|
+
# Interactive mode: loop and accept follow-ups
|
173
|
+
async def interactive_loop():
|
174
|
+
messages = []
|
175
|
+
while True:
|
176
|
+
try:
|
177
|
+
user_input = input("User: ").strip()
|
178
|
+
except EOFError:
|
179
|
+
print("Exiting interactive mode.")
|
180
|
+
break
|
181
|
+
if not user_input:
|
182
|
+
print("No input. Exiting.")
|
183
|
+
break
|
184
|
+
messages.append({"role": "user", "content": user_input})
|
185
|
+
async for resp in blueprint.run(messages):
|
186
|
+
for msg in resp["messages"]:
|
187
|
+
print(msg["content"])
|
188
|
+
asyncio.run(interactive_loop())
|
@@ -1,6 +1,8 @@
|
|
1
|
+
import os
|
2
|
+
from dotenv import load_dotenv; load_dotenv(override=True)
|
3
|
+
|
1
4
|
import logging
|
2
5
|
logging.basicConfig(level=logging.INFO, format='[%(levelname)s] %(name)s: %(message)s')
|
3
|
-
import os
|
4
6
|
import sys
|
5
7
|
|
6
8
|
# --- Universal Logging Reset ---
|
@@ -36,8 +38,7 @@ try:
|
|
36
38
|
from agents.models.interface import Model
|
37
39
|
from agents.models.openai_chatcompletions import OpenAIChatCompletionsModel
|
38
40
|
from openai import AsyncOpenAI
|
39
|
-
|
40
|
-
from swarm.extensions.blueprint.blueprint_base import BlueprintBase
|
41
|
+
from swarm.core.blueprint_base import BlueprintBase
|
41
42
|
except ImportError as e:
|
42
43
|
print(f"ERROR: Import failed in blueprint_gaggle: {e}. Check 'openai-agents' install and project structure.")
|
43
44
|
print(f"sys.path: {sys.path}")
|
@@ -283,4 +284,20 @@ class GaggleBlueprint(BlueprintBase):
|
|
283
284
|
|
284
285
|
|
285
286
|
if __name__ == "__main__":
|
286
|
-
|
287
|
+
parser = argparse.ArgumentParser(description='Gaggle Story Writing Team')
|
288
|
+
parser.add_argument('instruction', nargs=argparse.REMAINDER, help='Instruction for Gaggle to process (all args after -- are joined as the prompt)')
|
289
|
+
args = parser.parse_args()
|
290
|
+
instruction_args = args.instruction
|
291
|
+
if instruction_args and instruction_args[0] == '--':
|
292
|
+
instruction_args = instruction_args[1:]
|
293
|
+
instruction = ' '.join(instruction_args).strip() if instruction_args else None
|
294
|
+
blueprint = GaggleBlueprint('gaggle')
|
295
|
+
import asyncio
|
296
|
+
if instruction:
|
297
|
+
async def main():
|
298
|
+
async for chunk in blueprint._run_non_interactive(instruction):
|
299
|
+
print(chunk)
|
300
|
+
asyncio.run(main())
|
301
|
+
else:
|
302
|
+
blueprint.display_splash_screen()
|
303
|
+
blueprint.run_interactive()
|
@@ -5,9 +5,11 @@ A chaotic spy-themed blueprint with a multi-tiered agent hierarchy for tracking
|
|
5
5
|
Uses BlueprintBase and agent-as-tool delegation.
|
6
6
|
"""
|
7
7
|
|
8
|
+
import os
|
9
|
+
from dotenv import load_dotenv; load_dotenv(override=True)
|
10
|
+
|
8
11
|
import logging
|
9
12
|
import sqlite3
|
10
|
-
import os
|
11
13
|
import sys
|
12
14
|
from pathlib import Path
|
13
15
|
from typing import Dict, Any, List, ClassVar, Optional
|
@@ -23,7 +25,7 @@ try:
|
|
23
25
|
from agents.models.interface import Model
|
24
26
|
from agents.models.openai_chatcompletions import OpenAIChatCompletionsModel
|
25
27
|
from openai import AsyncOpenAI
|
26
|
-
from swarm.
|
28
|
+
from swarm.core.blueprint_base import BlueprintBase
|
27
29
|
except ImportError as e:
|
28
30
|
print(f"ERROR: Import failed in WhiskeyTangoFoxtrotBlueprint: {e}. Check dependencies.")
|
29
31
|
print(f"sys.path: {sys.path}")
|
@@ -192,6 +194,35 @@ class WhiskeyTangoFoxtrotBlueprint(BlueprintBase):
|
|
192
194
|
except Exception as e: raise ValueError(f"Failed to init LLM: {e}") from e
|
193
195
|
|
194
196
|
|
197
|
+
async def run(self, messages: List[dict], **kwargs):
|
198
|
+
logger.info("WhiskeyTangoFoxtrotBlueprint run method called.")
|
199
|
+
instruction = messages[-1].get("content", "") if messages else ""
|
200
|
+
try:
|
201
|
+
mcp_servers = kwargs.get("mcp_servers", [])
|
202
|
+
starting_agent = self.create_starting_agent(mcp_servers=mcp_servers)
|
203
|
+
from agents import Runner
|
204
|
+
if not starting_agent.model:
|
205
|
+
yield {"messages": [{"role": "assistant", "content": f"Error: No model instance available for WTF agent. Check your OPENAI_API_KEY, or LITELLM_MODEL/LITELLM_BASE_URL config."}]}
|
206
|
+
return
|
207
|
+
if not starting_agent.tools:
|
208
|
+
yield {"messages": [{"role": "assistant", "content": f"Warning: No tools registered for WTF agent. Only direct LLM output is possible."}]}
|
209
|
+
required_mcps = self.metadata.get('required_mcp_servers', [])
|
210
|
+
missing_mcps = [m for m in required_mcps if m not in [s.name for s in mcp_servers]]
|
211
|
+
if missing_mcps:
|
212
|
+
yield {"messages": [{"role": "assistant", "content": f"Warning: Missing required MCP servers: {', '.join(missing_mcps)}. Some features may not work."}]}
|
213
|
+
from rich.console import Console
|
214
|
+
console = Console()
|
215
|
+
with console.status("Generating...", spinner="dots") as status:
|
216
|
+
async for chunk in Runner.run(starting_agent, instruction):
|
217
|
+
content = chunk.get("content")
|
218
|
+
if content and ("function call" in content or "args" in content):
|
219
|
+
continue
|
220
|
+
yield chunk
|
221
|
+
logger.info("WhiskeyTangoFoxtrotBlueprint run method finished.")
|
222
|
+
except Exception as e:
|
223
|
+
yield {"messages": [{"role": "assistant", "content": f"Error: {e}"}]}
|
224
|
+
|
225
|
+
|
195
226
|
def create_starting_agent(self, mcp_servers: List[MCPServer]) -> Agent:
|
196
227
|
"""Creates the WTF agent hierarchy and returns Valory (Coordinator)."""
|
197
228
|
self.initialize_db() # Ensure DB is ready
|
@@ -253,4 +284,3 @@ class WhiskeyTangoFoxtrotBlueprint(BlueprintBase):
|
|
253
284
|
# Standard Python entry point
|
254
285
|
if __name__ == "__main__":
|
255
286
|
WhiskeyTangoFoxtrotBlueprint.main()
|
256
|
-
|
{open_swarm-0.1.1744937124 → open_swarm-0.1.1744942852}/src/swarm/extensions/blueprint/__init__.py
RENAMED
@@ -6,7 +6,7 @@ and running autonomous agent workflows (blueprints).
|
|
6
6
|
"""
|
7
7
|
|
8
8
|
# Core components
|
9
|
-
from .blueprint_base import BlueprintBase
|
9
|
+
from swarm.core.blueprint_base import BlueprintBase
|
10
10
|
from .blueprint_discovery import discover_blueprints
|
11
11
|
from .blueprint_utils import filter_blueprints
|
12
12
|
|
@@ -48,4 +48,3 @@ __all__ = [
|
|
48
48
|
"validate_message_sequence",
|
49
49
|
"truncate_message_history",
|
50
50
|
]
|
51
|
-
|
@@ -24,6 +24,7 @@ logger = logging.getLogger("swarm.cli")
|
|
24
24
|
project_root = Path(__file__).parent.parent.parent.parent # /home/chatgpt/open-swarm
|
25
25
|
dotenv_path = project_root / ".env"
|
26
26
|
load_dotenv(dotenv_path=dotenv_path, override=True)
|
27
|
+
print("[DEBUG] LITELLM_API_KEY:", os.environ.get("LITELLM_API_KEY"))
|
27
28
|
# print(f"[DEBUG] Loaded .env from: {dotenv_path}")
|
28
29
|
# print(f"[DEBUG] LITELLM_MODEL={os.environ.get('LITELLM_MODEL')}")
|
29
30
|
# print(f"[DEBUG] LITELLM_BASE_URL={os.environ.get('LITELLM_BASE_URL')}")
|
@@ -54,10 +55,12 @@ async def _run_blueprint_async_with_shutdown(blueprint: 'BlueprintBase', instruc
|
|
54
55
|
except Exception as e:
|
55
56
|
logger.error(f"Unexpected error setting fallback signal handler for {sig.name}: {e}", exc_info=True)
|
56
57
|
|
57
|
-
|
58
58
|
# Instead of wrapping in a task and awaiting, use async for to support async generators
|
59
59
|
try:
|
60
|
-
|
60
|
+
# PATCH: Use blueprint.run instead of blueprint._run_non_interactive
|
61
|
+
async for chunk in blueprint.run([
|
62
|
+
{"role": "user", "content": instruction}
|
63
|
+
]):
|
61
64
|
# Print the full JSON chunk
|
62
65
|
print(json.dumps(chunk, ensure_ascii=False))
|
63
66
|
# If chunk contains 'messages', print each assistant message's content for CLI/test UX
|
@@ -90,7 +93,6 @@ def run_blueprint_cli(
|
|
90
93
|
description=metadata.get("description", f"Run {blueprint_cls.__name__}"),
|
91
94
|
formatter_class=argparse.RawTextHelpFormatter
|
92
95
|
)
|
93
|
-
parser.add_argument("--instruction", type=str, required=True, help="Initial instruction for the blueprint.")
|
94
96
|
parser.add_argument("--config-path", type=str, default=None, help=f"Path to swarm_config.json (Default: {default_config_path})")
|
95
97
|
parser.add_argument("--config", type=str, metavar="JSON_FILE_OR_STRING", default=None, help="JSON config overrides (file path or string). Merged last.")
|
96
98
|
parser.add_argument("--profile", type=str, default=None, help="Configuration profile to use.")
|
@@ -98,8 +100,22 @@ def run_blueprint_cli(
|
|
98
100
|
parser.add_argument("--quiet", action="store_true", help="Suppress most logs and headers, print only final output.")
|
99
101
|
parser.add_argument('--markdown', action=argparse.BooleanOptionalAction, default=None, help="Enable/disable markdown output (--markdown / --no-markdown). Overrides config/default.")
|
100
102
|
parser.add_argument("--version", action="version", version=f"%(prog)s (BP: {metadata.get('name', 'N/A')} v{metadata.get('version', 'N/A')}, Core: {swarm_version})")
|
103
|
+
parser.add_argument("instruction", nargs=argparse.REMAINDER, help="Instruction or prompt for the blueprint. All arguments after -- are treated as the prompt.")
|
101
104
|
args = parser.parse_args()
|
102
105
|
|
106
|
+
# Determine instruction string: if '--' is present, treat everything after as prompt
|
107
|
+
instruction_args = args.instruction
|
108
|
+
if instruction_args:
|
109
|
+
# Remove leading '--' if present
|
110
|
+
if instruction_args and instruction_args[0] == '--':
|
111
|
+
instruction_args = instruction_args[1:]
|
112
|
+
instruction = ' '.join(instruction_args).strip()
|
113
|
+
else:
|
114
|
+
instruction = ''
|
115
|
+
|
116
|
+
if not instruction:
|
117
|
+
parser.error("No instruction provided. Pass a prompt after -- or as positional arguments.")
|
118
|
+
|
103
119
|
# --- Load CLI Config Overrides ---
|
104
120
|
cli_config_overrides = {}
|
105
121
|
if args.config:
|
@@ -142,7 +158,7 @@ def run_blueprint_cli(
|
|
142
158
|
)
|
143
159
|
|
144
160
|
# Run the async part with shutdown handling
|
145
|
-
asyncio.run(_run_blueprint_async_with_shutdown(blueprint_instance,
|
161
|
+
asyncio.run(_run_blueprint_async_with_shutdown(blueprint_instance, instruction))
|
146
162
|
|
147
163
|
except (ValueError, TypeError, FileNotFoundError) as config_err:
|
148
164
|
logger.critical(f"[Initialization Error] Configuration problem: {config_err}", exc_info=args.debug)
|
@@ -1,21 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
agent_utils.py
|
3
|
-
|
4
|
-
Utility functions for agent operations used in blueprints.
|
5
|
-
This module has been updated to remove dependency on swarm.types;
|
6
|
-
instead, it now imports Agent from the openai-agents SDK.
|
7
|
-
"""
|
8
|
-
|
9
|
-
from blueprint_agents.agent import Agent # Updated import
|
10
|
-
|
11
|
-
def get_agent_name(agent: Agent) -> str:
|
12
|
-
"""
|
13
|
-
Returns the name of the agent.
|
14
|
-
"""
|
15
|
-
return agent.name
|
16
|
-
|
17
|
-
def initialize_agents(blueprint) -> dict:
|
18
|
-
"""
|
19
|
-
Initializes agents by calling the blueprint's create_agents() method.
|
20
|
-
"""
|
21
|
-
return blueprint.create_agents()
|