open-swarm 0.1.1743070217__tar.gz → 0.1.1743362777__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.1743362777/.gitignore +197 -0
- open_swarm-0.1.1743362777/PKG-INFO +217 -0
- open_swarm-0.1.1743362777/README.md +131 -0
- open_swarm-0.1.1743362777/pyproject.toml +159 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/__init__.py +0 -2
- open_swarm-0.1.1743362777/src/swarm/auth.py +60 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/README.md +67 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/burnt_noodles/blueprint_burnt_noodles.py +412 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/chatbot/blueprint_chatbot.py +98 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/chatbot/templates/chatbot/chatbot.html +33 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/digitalbutlers/blueprint_digitalbutlers.py +183 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/dilbot_universe/blueprint_dilbot_universe.py +285 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/divine_code/apps.py +11 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/divine_code/blueprint_divine_code.py +219 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/django_chat/apps.py +6 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/django_chat/blueprint_django_chat.py +84 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/django_chat/templates/django_chat/django_chat_webpage.html +37 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/django_chat/urls.py +8 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/django_chat/views.py +32 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/echocraft/blueprint_echocraft.py +44 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/apps.py +11 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/blueprint_family_ties.py +152 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/models.py +19 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/serializers.py +7 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/settings.py +16 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/urls.py +10 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/family_ties/views.py +26 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/gaggle/blueprint_gaggle.py +184 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/gotchaman/blueprint_gotchaman.py +232 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +133 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/messenger/templates/messenger/messenger.html +46 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +234 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +248 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +156 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/omniplex/blueprint_omniplex.py +221 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/rue_code/blueprint_rue_code.py +291 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/suggestion/blueprint_suggestion.py +110 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/unapologetic_press/blueprint_unapologetic_press.py +298 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/whiskeytango_foxtrot/apps.py +11 -0
- open_swarm-0.1.1743362777/src/swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +256 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/__init__.py +51 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/agent_utils.py +21 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/blueprint_base.py +160 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/blueprint_discovery.py +126 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/cli_handler.py +185 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/config_loader.py +122 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/blueprint/django_utils.py +305 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/blueprint/interactive_mode.py +1 -1
- open_swarm-0.1.1743362777/src/swarm/extensions/cli/__init__.py +0 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/cli/commands/__init__.py +0 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/config/config_loader.py +91 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/config/utils/__init__.py +0 -0
- open_swarm-0.1.1743362777/src/swarm/extensions/launchers/swarm_cli.py +216 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/llm/chat_completion.py +26 -55
- open_swarm-0.1.1743362777/src/swarm/management/__init__.py +0 -0
- open_swarm-0.1.1743362777/src/swarm/management/commands/__init__.py +0 -0
- open_swarm-0.1.1743362777/src/swarm/management/commands/runserver.py +58 -0
- open_swarm-0.1.1743362777/src/swarm/migrations/__init__.py +0 -0
- open_swarm-0.1.1743362777/src/swarm/permissions.py +38 -0
- open_swarm-0.1.1743362777/src/swarm/serializers.py +103 -0
- open_swarm-0.1.1743362777/src/swarm/settings.py +174 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/fonts/fontawesome-webfont.ttf +7 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/fonts/fontawesome-webfont.woff +7 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/fonts/fontawesome-webfont.woff2 +7 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/markedjs/marked.min.js +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +27 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/alert-triangle.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/archive.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/artboard.svg +27 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/automatic-gearbox.svg +23 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/box-multiple.svg +19 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/carambola.svg +19 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/copy.svg +20 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/download.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/edit.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/filled/carambola.svg +13 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/filled/paint.svg +13 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/headset.svg +22 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/message-chatbot.svg +22 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/message-star.svg +22 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/message-x.svg +23 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/message.svg +21 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/paperclip.svg +18 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/playlist-add.svg +22 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/robot.svg +26 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/search.svg +19 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/settings.svg +20 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/thumb-down.svg +19 -0
- open_swarm-0.1.1743362777/src/swarm/static/contrib/tabler-icons/thumb-up.svg +19 -0
- open_swarm-0.1.1743362777/src/swarm/static/css/dropdown.css +22 -0
- open_swarm-0.1.1743362777/src/swarm/static/htmx/htmx.min.js +0 -0
- open_swarm-0.1.1743362777/src/swarm/static/js/dropdown.js +23 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/base.css +470 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/chat-history.css +286 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/chat.css +251 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/chatbot.css +74 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/chatgpt.css +62 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/colors/corporate.css +74 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/colors/pastel.css +81 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/colors/tropical.css +82 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/general.css +142 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/layout.css +167 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/layouts/messenger-layout.css +17 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/layouts/minimalist-layout.css +57 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/layouts/mobile-layout.css +8 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/messages.css +84 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/messenger.css +135 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/settings.css +91 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/simple.css +44 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/slack.css +58 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/style.css +156 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/theme.css +30 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/css/toast.css +40 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/auth.js +9 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/blueprint.js +41 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/blueprintUtils.js +12 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/chatLogic.js +79 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/debug.js +63 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/events.js +98 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/main.js +19 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/messages.js +264 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/messengerLogic.js +355 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/apiService.js +84 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/blueprintManager.js +162 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/chatHistory.js +110 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/debugLogger.js +14 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/eventHandlers.js +107 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/messageProcessor.js +120 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/state.js +7 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/userInteractions.js +29 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/modules/validation.js +23 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/rendering.js +119 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/settings.js +130 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/sidebar.js +94 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/simpleLogic.js +37 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/slackLogic.js +66 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/splash.js +76 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/theme.js +111 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/toast.js +36 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/ui.js +265 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/js/validation.js +57 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/animated_spinner.svg +12 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/arrow_down.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/arrow_left.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/arrow_right.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/arrow_up.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/attach.svg +8 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/avatar.svg +7 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/canvas.svg +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/chat_history.svg +4 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/close.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/copy.svg +4 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/dark_mode.svg +3 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/edit.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/layout.svg +9 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/logo.svg +29 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/logout.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/mobile.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/new_chat.svg +4 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/not_visible.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/plus.svg +7 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/run_code.svg +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/save.svg +4 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/search.svg +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/settings.svg +4 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/speaker.svg +5 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/stop.svg +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/thumbs_down.svg +3 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/thumbs_up.svg +3 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/toggle_off.svg +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/toggle_on.svg +6 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/trash.svg +10 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/undo.svg +3 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/visible.svg +8 -0
- open_swarm-0.1.1743362777/src/swarm/static/rest_mode/svg/voice.svg +10 -0
- open_swarm-0.1.1743362777/src/swarm/templates/account/login.html +22 -0
- open_swarm-0.1.1743362777/src/swarm/templates/account/signup.html +32 -0
- open_swarm-0.1.1743362777/src/swarm/templates/base.html +30 -0
- open_swarm-0.1.1743362777/src/swarm/templates/chat.html +43 -0
- open_swarm-0.1.1743362777/src/swarm/templates/index.html +35 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/components/chat_sidebar.html +55 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/components/header.html +45 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/components/main_chat_pane.html +41 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/components/settings_dialog.html +97 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/components/splash_screen.html +7 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/components/top_bar.html +28 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/message_ui.html +50 -0
- open_swarm-0.1.1743362777/src/swarm/templates/rest_mode/slackbot.html +30 -0
- open_swarm-0.1.1743362777/src/swarm/templates/simple_blueprint_page.html +24 -0
- open_swarm-0.1.1743362777/src/swarm/templates/websocket_partials/final_system_message.html +3 -0
- open_swarm-0.1.1743362777/src/swarm/templates/websocket_partials/system_message.html +4 -0
- open_swarm-0.1.1743362777/src/swarm/templates/websocket_partials/user_message.html +5 -0
- open_swarm-0.1.1743362777/src/swarm/urls.py +72 -0
- open_swarm-0.1.1743362777/src/swarm/utils/log_utils.py +63 -0
- open_swarm-0.1.1743362777/src/swarm/views/api_views.py +55 -0
- open_swarm-0.1.1743362777/src/swarm/views/chat_views.py +162 -0
- open_swarm-0.1.1743362777/src/swarm/views/core_views.py +113 -0
- open_swarm-0.1.1743362777/src/swarm/views/model_views.py +78 -0
- open_swarm-0.1.1743362777/src/swarm/views/utils.py +81 -0
- open_swarm-0.1.1743362777/tests/__init__.py +0 -0
- open_swarm-0.1.1743362777/tests/api/test_chat_completions_auth_async.py +178 -0
- open_swarm-0.1.1743362777/tests/api/test_chat_completions_failing_async.py +161 -0
- open_swarm-0.1.1743362777/tests/api/test_chat_completions_validation_async.py +179 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_burnt_noodles.py +177 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_chatbot.py +57 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_digitalbutlers.py +31 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_dilbot_universe.py +74 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_divine_code.py +67 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_echocraft.py +75 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_family_ties.py +48 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_gaggle.py +75 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_gotchaman.py +71 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_mcp_demo.py +87 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_mission_improbable.py +61 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_monkai_magic.py +67 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_nebula_shellz.py +25 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_omniplex.py +87 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_suggestion.py +62 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_unapologetic_press.py +61 -0
- open_swarm-0.1.1743362777/tests/blueprints/test_whiskeytangofoxtrot.py +101 -0
- open_swarm-0.1.1743362777/tests/cli/test_launchers.py +174 -0
- open_swarm-0.1.1743362777/tests/cli/test_list_blueprints.py +24 -0
- open_swarm-0.1.1743362777/tests/conftest.py +78 -0
- open_swarm-0.1.1743362777/tests/swarm_config.json +242 -0
- open_swarm-0.1.1743362777/tests/system/test_burnt_noodles.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_chucks_angels.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_digitalbutlers.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_dilbot_universe.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_divine_code.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_django_chat.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_echocraft.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_family_ties.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_flock.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_gaggle.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_gotchaman.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_monkai-magic.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_nebula_shellz.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_omniplex.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_rue-code.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_suggestion.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_unapologetic_press.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_university.sh +2 -0
- open_swarm-0.1.1743362777/tests/system/test_whiskeytango_foxtrot.sh +2 -0
- open_swarm-0.1.1743362777/tests/unit/blueprints/rue_code/test_rue_code_tools.py +78 -0
- open_swarm-0.1.1743362777/tests/unit/test_blueprint_base_config.py +112 -0
- open_swarm-0.1.1743070217/PKG-INFO +0 -258
- open_swarm-0.1.1743070217/README.md +0 -215
- open_swarm-0.1.1743070217/pyproject.toml +0 -61
- open_swarm-0.1.1743070217/setup.cfg +0 -4
- open_swarm-0.1.1743070217/src/open_swarm.egg-info/PKG-INFO +0 -258
- open_swarm-0.1.1743070217/src/open_swarm.egg-info/SOURCES.txt +0 -124
- open_swarm-0.1.1743070217/src/open_swarm.egg-info/dependency_links.txt +0 -1
- open_swarm-0.1.1743070217/src/open_swarm.egg-info/entry_points.txt +0 -3
- open_swarm-0.1.1743070217/src/open_swarm.egg-info/requires.txt +0 -35
- open_swarm-0.1.1743070217/src/open_swarm.egg-info/top_level.txt +0 -1
- open_swarm-0.1.1743070217/src/swarm/agent/agent.py +0 -49
- open_swarm-0.1.1743070217/src/swarm/auth.py +0 -56
- open_swarm-0.1.1743070217/src/swarm/core.py +0 -326
- open_swarm-0.1.1743070217/src/swarm/extensions/blueprint/__init__.py +0 -36
- open_swarm-0.1.1743070217/src/swarm/extensions/blueprint/agent_utils.py +0 -45
- open_swarm-0.1.1743070217/src/swarm/extensions/blueprint/blueprint_base.py +0 -562
- open_swarm-0.1.1743070217/src/swarm/extensions/blueprint/blueprint_discovery.py +0 -112
- open_swarm-0.1.1743070217/src/swarm/extensions/blueprint/django_utils.py +0 -203
- open_swarm-0.1.1743070217/src/swarm/extensions/config/config_loader.py +0 -208
- open_swarm-0.1.1743070217/src/swarm/extensions/launchers/swarm_cli.py +0 -304
- open_swarm-0.1.1743070217/src/swarm/extensions/mcp/__init__.py +0 -1
- open_swarm-0.1.1743070217/src/swarm/extensions/mcp/cache_utils.py +0 -36
- open_swarm-0.1.1743070217/src/swarm/extensions/mcp/mcp_client.py +0 -341
- open_swarm-0.1.1743070217/src/swarm/extensions/mcp/mcp_constants.py +0 -7
- open_swarm-0.1.1743070217/src/swarm/extensions/mcp/mcp_tool_provider.py +0 -110
- open_swarm-0.1.1743070217/src/swarm/serializers.py +0 -12
- open_swarm-0.1.1743070217/src/swarm/settings.py +0 -189
- open_swarm-0.1.1743070217/src/swarm/types.py +0 -126
- open_swarm-0.1.1743070217/src/swarm/urls.py +0 -89
- open_swarm-0.1.1743070217/src/swarm/views/api_views.py +0 -46
- open_swarm-0.1.1743070217/src/swarm/views/chat_views.py +0 -76
- open_swarm-0.1.1743070217/src/swarm/views/core_views.py +0 -118
- open_swarm-0.1.1743070217/src/swarm/views/model_views.py +0 -135
- open_swarm-0.1.1743070217/src/swarm/views/utils.py +0 -457
- open_swarm-0.1.1743070217/tests/test_apps.py +0 -11
- open_swarm-0.1.1743070217/tests/test_blueprint_base.py +0 -155
- open_swarm-0.1.1743070217/tests/test_blueprint_base_unit.py +0 -85
- open_swarm-0.1.1743070217/tests/test_blueprint_discovery.py +0 -146
- open_swarm-0.1.1743070217/tests/test_blueprint_filter.py +0 -24
- open_swarm-0.1.1743070217/tests/test_blueprint_runner.py +0 -71
- open_swarm-0.1.1743070217/tests/test_blueprints.py +0 -118
- open_swarm-0.1.1743070217/tests/test_chat.py +0 -153
- open_swarm-0.1.1743070217/tests/test_config_loader.py +0 -380
- open_swarm-0.1.1743070217/tests/test_core_chatmessage.py +0 -15
- open_swarm-0.1.1743070217/tests/test_list_models.py +0 -104
- open_swarm-0.1.1743070217/tests/test_message_sequence.py +0 -102
- open_swarm-0.1.1743070217/tests/test_models.py +0 -58
- open_swarm-0.1.1743070217/tests/test_openai_api_key_handling.py +0 -34
- open_swarm-0.1.1743070217/tests/test_redact.py +0 -104
- open_swarm-0.1.1743070217/tests/test_resource_timeout.py +0 -59
- open_swarm-0.1.1743070217/tests/test_settings.py +0 -16
- open_swarm-0.1.1743070217/tests/test_setup_wizard.py +0 -113
- open_swarm-0.1.1743070217/tests/test_swarm_init.py +0 -66
- open_swarm-0.1.1743070217/tests/test_swarm_types.py +0 -36
- open_swarm-0.1.1743070217/tests/test_util.py +0 -16
- open_swarm-0.1.1743070217/tests/test_utils_coverage.py +0 -79
- open_swarm-0.1.1743070217/tests/test_views.py +0 -116
- open_swarm-0.1.1743070217/tests/test_wsgi.py +0 -10
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/LICENSE +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/agent/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/apps.py +0 -0
- {open_swarm-0.1.1743070217/src/swarm/extensions/cli → open_swarm-0.1.1743362777/src/swarm/blueprints/divine_code}/__init__.py +0 -0
- {open_swarm-0.1.1743070217/src/swarm/extensions/cli/commands → open_swarm-0.1.1743362777/src/swarm/blueprints/flock}/__init__.py +0 -0
- {open_swarm-0.1.1743070217/src/swarm/extensions/config/utils → open_swarm-0.1.1743362777/src/swarm/blueprints/rue_code}/__init__.py +0 -0
- {open_swarm-0.1.1743070217/src/swarm/migrations → open_swarm-0.1.1743362777/src/swarm/blueprints/whiskeytango_foxtrot}/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/consumers.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/blueprint/blueprint_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/blueprint/common_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/blueprint/modes/rest_mode.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/blueprint/output_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/blueprint/spinner.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/blueprint_runner.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/cli_args.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/commands/blueprint_management.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/commands/config_management.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/commands/edit_config.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/commands/list_blueprints.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/commands/validate_env.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/commands/validate_envvars.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/interactive_shell.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/main.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/selection.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/utils/discover_commands.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/utils/env_setup.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/cli/utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/config/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/config/config_manager.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/config/server_config.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/config/setup_wizard.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/config/utils/logger.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/launchers/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/launchers/build_launchers.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/launchers/build_swarm_wrapper.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/launchers/swarm_api.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/extensions/launchers/swarm_wrapper.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/messages.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/migrations/0010_initial_chat_models.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/models.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/repl/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/repl/repl.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/tool_executor.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/util.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/color_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/context_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/general_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/logger.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/logger_setup.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/message_sequence.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/message_utils.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/utils/redact.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/views/__init__.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/views/message_views.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/views/web_views.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/src/swarm/wsgi.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_blueprint_loading.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_cli_mode_selection.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_core_filter_duplicate_system_messages.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_core_filter_messages.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_core_truncate_message_history.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_core_update_null_content.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_dummy.py +0 -0
- {open_swarm-0.1.1743070217 → open_swarm-0.1.1743362777}/tests/test_truncate_message_history.py +0 -0
@@ -0,0 +1,197 @@
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
2
|
+
__pycache__/
|
3
|
+
*.py[cod]
|
4
|
+
*$py.class
|
5
|
+
|
6
|
+
# C extensions
|
7
|
+
*.so
|
8
|
+
|
9
|
+
# Distribution / packaging
|
10
|
+
.Python
|
11
|
+
build/
|
12
|
+
develop-eggs/
|
13
|
+
dist/
|
14
|
+
downloads/
|
15
|
+
eggs/
|
16
|
+
.eggs/
|
17
|
+
lib/
|
18
|
+
lib64/
|
19
|
+
parts/
|
20
|
+
sdist/
|
21
|
+
var/
|
22
|
+
wheels/
|
23
|
+
share/python-wheels/
|
24
|
+
db.sqlite3-*
|
25
|
+
*.egg-info/
|
26
|
+
.installed.cfg
|
27
|
+
*.egg
|
28
|
+
MANIFEST
|
29
|
+
|
30
|
+
# PyInstaller
|
31
|
+
# Usually these files are written by a python script from a template
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
33
|
+
*.manifest
|
34
|
+
*.spec
|
35
|
+
|
36
|
+
# Installer logs
|
37
|
+
pip-log.txt
|
38
|
+
pip-delete-this-directory.txt
|
39
|
+
|
40
|
+
# Unit test / coverage reports
|
41
|
+
htmlcov/
|
42
|
+
.tox/
|
43
|
+
.nox/
|
44
|
+
.coverage
|
45
|
+
.coverage.*
|
46
|
+
.cache
|
47
|
+
nosetests.xml
|
48
|
+
coverage.xml
|
49
|
+
*.cover
|
50
|
+
*.py,cover
|
51
|
+
.hypothesis/
|
52
|
+
.pytest_cache/
|
53
|
+
cover/
|
54
|
+
|
55
|
+
# Translations
|
56
|
+
*.mo
|
57
|
+
*.pot
|
58
|
+
|
59
|
+
# Django stuff:
|
60
|
+
*.log
|
61
|
+
local_settings.py
|
62
|
+
db.sqlite3
|
63
|
+
db.sqlite3-journal
|
64
|
+
|
65
|
+
# Flask stuff:
|
66
|
+
instance/
|
67
|
+
.webassets-cache
|
68
|
+
|
69
|
+
# Scrapy stuff:
|
70
|
+
.scrapy
|
71
|
+
|
72
|
+
# Sphinx documentation
|
73
|
+
docs/_build/
|
74
|
+
|
75
|
+
# PyBuilder
|
76
|
+
.pybuilder/
|
77
|
+
target/
|
78
|
+
|
79
|
+
# Jupyter Notebook
|
80
|
+
.ipynb_checkpoints
|
81
|
+
|
82
|
+
# IPython
|
83
|
+
profile_default/
|
84
|
+
ipython_config.py
|
85
|
+
|
86
|
+
# pyenv
|
87
|
+
# For a library or package, you might want to ignore these files since the code is
|
88
|
+
# intended to run in multiple environments; otherwise, check them in:
|
89
|
+
#.python-version
|
90
|
+
|
91
|
+
# pipenv
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
93
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
94
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
95
|
+
# install all needed dependencies.
|
96
|
+
#Pipfile.lock
|
97
|
+
|
98
|
+
# UV
|
99
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
100
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
101
|
+
# commonly ignored for libraries.
|
102
|
+
#uv.lock
|
103
|
+
|
104
|
+
# poetry
|
105
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
106
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
107
|
+
# commonly ignored for libraries.
|
108
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
109
|
+
#poetry.lock
|
110
|
+
|
111
|
+
# pdm
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
113
|
+
#pdm.lock
|
114
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
115
|
+
# in version control.
|
116
|
+
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
117
|
+
.pdm.toml
|
118
|
+
.pdm-python
|
119
|
+
.pdm-build/
|
120
|
+
|
121
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
122
|
+
__pypackages__/
|
123
|
+
|
124
|
+
# Celery stuff
|
125
|
+
celerybeat-schedule
|
126
|
+
celerybeat.pid
|
127
|
+
|
128
|
+
# SageMath parsed files
|
129
|
+
*.sage.py
|
130
|
+
|
131
|
+
# Environments
|
132
|
+
.env
|
133
|
+
.venv
|
134
|
+
env/
|
135
|
+
venv/
|
136
|
+
ENV/
|
137
|
+
env.bak/
|
138
|
+
venv.bak/
|
139
|
+
|
140
|
+
# Spyder project settings
|
141
|
+
.spyderproject
|
142
|
+
.spyproject
|
143
|
+
|
144
|
+
# Rope project settings
|
145
|
+
.ropeproject
|
146
|
+
|
147
|
+
# mkdocs documentation
|
148
|
+
/site
|
149
|
+
|
150
|
+
# mypy
|
151
|
+
.mypy_cache/
|
152
|
+
.dmypy.json
|
153
|
+
dmypy.json
|
154
|
+
|
155
|
+
# Pyre type checker
|
156
|
+
.pyre/
|
157
|
+
|
158
|
+
# pytype static type analyzer
|
159
|
+
.pytype/
|
160
|
+
|
161
|
+
# Cython debug symbols
|
162
|
+
cython_debug/
|
163
|
+
|
164
|
+
# PyCharm
|
165
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
166
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
167
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
168
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
169
|
+
#.idea/
|
170
|
+
|
171
|
+
# PyPI configuration file
|
172
|
+
.pypirc
|
173
|
+
|
174
|
+
|
175
|
+
uv.lock
|
176
|
+
test.db
|
177
|
+
*.bak
|
178
|
+
uvx
|
179
|
+
*.log
|
180
|
+
.env.*
|
181
|
+
staticfiles/*
|
182
|
+
|
183
|
+
swarm-django.db
|
184
|
+
swarm-django.db-*
|
185
|
+
|
186
|
+
wp-sites.json
|
187
|
+
|
188
|
+
traces.*
|
189
|
+
|
190
|
+
openapi.yaml
|
191
|
+
|
192
|
+
*.db
|
193
|
+
*.db-shm
|
194
|
+
logs/*
|
195
|
+
|
196
|
+
openai-agents-python/*
|
197
|
+
docker-compose.override.yml
|
@@ -0,0 +1,217 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: open-swarm
|
3
|
+
Version: 0.1.1743362777
|
4
|
+
Summary: Open Swarm: Orchestrating AI Agent Swarms with Django
|
5
|
+
Project-URL: Homepage, https://github.com/yourusername/open-swarm
|
6
|
+
Project-URL: Documentation, https://github.com/yourusername/open-swarm/blob/main/README.md
|
7
|
+
Project-URL: Repository, https://github.com/yourusername/open-swarm.git
|
8
|
+
Project-URL: Changelog, https://github.com/yourusername/open-swarm/blob/main/CHANGELOG.md
|
9
|
+
Author-email: Matthew Hand <matthewhandau@gmail.com>
|
10
|
+
License-Expression: MIT
|
11
|
+
License-File: LICENSE
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
13
|
+
Classifier: Framework :: Django :: 4.2
|
14
|
+
Classifier: Intended Audience :: Developers
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
16
|
+
Classifier: Natural Language :: English
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
23
|
+
Requires-Python: >=3.10
|
24
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
25
|
+
Requires-Dist: celery>=5.3.0
|
26
|
+
Requires-Dist: channels-redis>=4.0
|
27
|
+
Requires-Dist: channels>=4.0
|
28
|
+
Requires-Dist: django-cors-headers>=4.0.0
|
29
|
+
Requires-Dist: django-environ>=0.11.0
|
30
|
+
Requires-Dist: django-extensions>=3.2.0
|
31
|
+
Requires-Dist: django-filter>=23.0
|
32
|
+
Requires-Dist: django-model-utils>=4.3.0
|
33
|
+
Requires-Dist: django<5.0,>=4.2
|
34
|
+
Requires-Dist: djangorestframework<4.0,>=3.14
|
35
|
+
Requires-Dist: drf-spectacular>=0.28.0
|
36
|
+
Requires-Dist: drf-yasg>=1.21.0
|
37
|
+
Requires-Dist: google-api-python-client>=2.100.0
|
38
|
+
Requires-Dist: google-auth-httplib2>=0.1.0
|
39
|
+
Requires-Dist: google-auth-oauthlib>=1.2.1
|
40
|
+
Requires-Dist: gunicorn>=21.0.0
|
41
|
+
Requires-Dist: httpx<0.26.0,>=0.25.2
|
42
|
+
Requires-Dist: jinja2>=3.1.6
|
43
|
+
Requires-Dist: openai-agents>=0.0.1
|
44
|
+
Requires-Dist: openai<2.0.0,>=1.3.0
|
45
|
+
Requires-Dist: platformdirs>=4.0.0
|
46
|
+
Requires-Dist: psycopg2-binary>=2.9.0
|
47
|
+
Requires-Dist: pyinstaller>=5.13.0
|
48
|
+
Requires-Dist: python-dotenv>=1.0.0
|
49
|
+
Requires-Dist: pyyaml>=6.0
|
50
|
+
Requires-Dist: qdrant-client>=1.6.0
|
51
|
+
Requires-Dist: redis>=5.0.0
|
52
|
+
Requires-Dist: requests>=2.31.0
|
53
|
+
Requires-Dist: tiktoken>=0.5.0
|
54
|
+
Requires-Dist: typer>=0.9.0
|
55
|
+
Requires-Dist: uvicorn>=0.23.0
|
56
|
+
Provides-Extra: dev
|
57
|
+
Requires-Dist: factory-boy>=3.3.0; extra == 'dev'
|
58
|
+
Requires-Dist: ipdb; extra == 'dev'
|
59
|
+
Requires-Dist: ipython; extra == 'dev'
|
60
|
+
Requires-Dist: mypy>=1.5.0; extra == 'dev'
|
61
|
+
Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
|
62
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
63
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
|
64
|
+
Requires-Dist: pytest-django>=4.7.0; extra == 'dev'
|
65
|
+
Requires-Dist: pytest-mock>=3.11.0; extra == 'dev'
|
66
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
67
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
68
|
+
Requires-Dist: uv>=0.1.11; extra == 'dev'
|
69
|
+
Provides-Extra: docs
|
70
|
+
Requires-Dist: myst-parser>=2.0.0; extra == 'docs'
|
71
|
+
Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == 'docs'
|
72
|
+
Requires-Dist: sphinx>=7.0.0; extra == 'docs'
|
73
|
+
Provides-Extra: test
|
74
|
+
Requires-Dist: anyio>=4.0.0; extra == 'test'
|
75
|
+
Requires-Dist: factory-boy>=3.3.0; extra == 'test'
|
76
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'test'
|
77
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'test'
|
78
|
+
Requires-Dist: pytest-django>=4.7.0; extra == 'test'
|
79
|
+
Requires-Dist: pytest-env>=1.0.0; extra == 'test'
|
80
|
+
Requires-Dist: pytest-mock>=3.11.0; extra == 'test'
|
81
|
+
Requires-Dist: pytest-xdist; extra == 'test'
|
82
|
+
Requires-Dist: pytest>=8.0.0; extra == 'test'
|
83
|
+
Requires-Dist: respx>=0.20.0; extra == 'test'
|
84
|
+
Requires-Dist: sseclient-py>=1.7.2; extra == 'test'
|
85
|
+
Description-Content-Type: text/markdown
|
86
|
+
|
87
|
+
# Open Swarm
|
88
|
+
|
89
|
+
<div align="center">
|
90
|
+
<img src="assets/images/openswarm-project-image.jpg" alt="Project Logo" width="70%"/>
|
91
|
+
</div>
|
92
|
+
|
93
|
+
**Open Swarm** is a Python framework for creating, managing, and deploying autonomous agent swarms. It leverages the `openai-agents` library for core agent functionality and provides a structured way to build complex, multi-agent workflows using **Blueprints**.
|
94
|
+
|
95
|
+
---
|
96
|
+
|
97
|
+
## Core Concepts
|
98
|
+
|
99
|
+
* **Agents:** Individual AI units performing specific tasks, powered by LLMs (like GPT-4, Claude, etc.). Built using the `openai-agents` SDK.
|
100
|
+
* **Blueprints:** Python classes (`BlueprintBase` subclasses) defining a swarm's structure, agents, coordination logic, and external dependencies (like required environment variables or MCP servers). They act as reusable templates for specific tasks (e.g., code generation, research, data analysis).
|
101
|
+
* **MCP (Mission Control Platform) Servers:** Optional external processes providing specialized capabilities (tools) to agents, such as filesystem access, web browsing, database interaction, or interacting with specific APIs (Slack, Monday.com, etc.). Agents interact with MCP servers via a standardized communication protocol.
|
102
|
+
* **Configuration (`swarm_config.json`):** A central JSON file defining available LLM profiles (API keys, models) and configurations for MCP servers. Typically managed via `swarm-cli` in `~/.config/swarm/`.
|
103
|
+
* **`swarm-cli`:** A command-line tool for managing blueprints (adding, listing, running, installing) and the `swarm_config.json` file. Uses XDG directories for storing blueprints (`~/.local/share/swarm/blueprints/`) and configuration (`~/.config/swarm/`).
|
104
|
+
* **`swarm-api`:** A launcher for the Django/DRF backend that exposes installed blueprints via an OpenAI-compatible REST API (`/v1/models`, `/v1/chat/completions`).
|
105
|
+
|
106
|
+
---
|
107
|
+
|
108
|
+
## Quickstart (Docker - Recommended)
|
109
|
+
|
110
|
+
This is the easiest and recommended way to get started, especially for deploying the API service.
|
111
|
+
|
112
|
+
**Prerequisites:**
|
113
|
+
* Docker ([Install Docker](https://docs.docker.com/engine/install/))
|
114
|
+
* Docker Compose ([Install Docker Compose](https://docs.docker.com/compose/install/))
|
115
|
+
|
116
|
+
**Steps:**
|
117
|
+
|
118
|
+
1. **Clone the Repository:**
|
119
|
+
```bash
|
120
|
+
git clone https://github.com/matthewhand/open-swarm.git
|
121
|
+
cd open-swarm
|
122
|
+
```
|
123
|
+
|
124
|
+
2. **Configure Environment:**
|
125
|
+
* Copy the example environment file:
|
126
|
+
```bash
|
127
|
+
cp .env.example .env
|
128
|
+
```
|
129
|
+
* Edit `.env` and add your necessary API keys (e.g., `OPENAI_API_KEY`).
|
130
|
+
|
131
|
+
3. **Configure Docker Compose Overrides (Optional but Recommended):**
|
132
|
+
* Copy the override example:
|
133
|
+
```bash
|
134
|
+
cp docker-compose.override.yaml.example docker-compose.override.yaml
|
135
|
+
```
|
136
|
+
* Edit `docker-compose.override.yaml` to:
|
137
|
+
* Mount any local directories containing custom blueprints you want the API server to access (e.g., uncomment and adjust the `./my_custom_blueprints:/app/custom_blueprints:ro` line).
|
138
|
+
* Make any other necessary adjustments (ports, environment variables, etc.).
|
139
|
+
|
140
|
+
4. **Start the Service:**
|
141
|
+
```bash
|
142
|
+
docker compose up -d
|
143
|
+
```
|
144
|
+
This will build the image (if not already pulled/built) and start the `open-swarm` service, exposing the API on port 8000 (or the port specified in your `.env`/override).
|
145
|
+
|
146
|
+
5. **Verify API:**
|
147
|
+
* Check the available models (blueprints):
|
148
|
+
```bash
|
149
|
+
curl http://localhost:8000/v1/models
|
150
|
+
```
|
151
|
+
* Send a chat completion request:
|
152
|
+
```bash
|
153
|
+
curl http://localhost:8000/v1/chat/completions \
|
154
|
+
-H "Content-Type: application/json" \
|
155
|
+
-d '{
|
156
|
+
"model": "echocraft",
|
157
|
+
"messages": [{"role": "user", "content": "Hello Docker!"}]
|
158
|
+
}'
|
159
|
+
```
|
160
|
+
*(Replace `echocraft` with a blueprint name available in your mounted volumes or the base image).*
|
161
|
+
|
162
|
+
---
|
163
|
+
|
164
|
+
## Usage Modes
|
165
|
+
|
166
|
+
Open Swarm offers several ways to interact with your blueprints:
|
167
|
+
|
168
|
+
1. **Run via `swarm-api` (OpenAI-Compatible REST API):**
|
169
|
+
* **How:** Start the Django server (`uv run python manage.py runserver` or via Docker as shown above).
|
170
|
+
* **What:** Exposes blueprints listed in `settings.BLUEPRINT_DIRECTORY` (within the Docker container, this typically includes `/app/blueprints` and any volumes mounted in the override file) via `/v1/models` and `/v1/chat/completions`.
|
171
|
+
* **Auth:** If `SWARM_API_KEY` is set in `.env`, requests require an `Authorization: Bearer <your_key>` header. Otherwise, access is anonymous.
|
172
|
+
* **Security:** **Warning:** Running with anonymous access, especially when bound to `0.0.0.0`, can be insecure if blueprints have access to sensitive operations (filesystem, shell commands). **Setting `SWARM_API_KEY` is highly recommended for non-local deployments.**
|
173
|
+
* **(TODO) Web UI:** A future mode will integrate a simple web chat interface with the API server.
|
174
|
+
|
175
|
+
2. **Run via `swarm-cli run`:**
|
176
|
+
* **How:** `swarm-cli run <blueprint_name> --instruction "Your single instruction"`
|
177
|
+
* **What:** Executes a blueprint managed by `swarm-cli` (located in `~/.local/share/swarm/blueprints/`) directly in the terminal. Uses configuration from `~/.config/swarm/swarm_config.json`.
|
178
|
+
* **Interactive Mode:** If you omit the `--instruction` argument (`swarm-cli run <blueprint_name>`), it will enter an interactive chat mode in the terminal.
|
179
|
+
* **Use Case:** Good for testing, debugging, interactive sessions, or running specific tasks locally without the API overhead.
|
180
|
+
|
181
|
+
3. **Run via `swarm-cli install`:**
|
182
|
+
* **How:** `swarm-cli install <blueprint_name>`, then run `<blueprint_name> --instruction "..."`
|
183
|
+
* **What:** Creates a standalone executable for a managed blueprint using PyInstaller and places it in the user's binary directory (e.g., `~/.local/bin/` or similar, ensure it's in your `PATH`).
|
184
|
+
* **Use Case:** Convenient for frequently used blueprints that act like regular command-line tools.
|
185
|
+
|
186
|
+
4. **Direct Python Execution:**
|
187
|
+
* **How:** `uv run python /path/to/your/blueprint_file.py --instruction "..."`
|
188
|
+
* **What:** Runs a specific blueprint Python file directly. Requires manual handling of configuration loading and dependencies.
|
189
|
+
* **Use Case:** Primarily for development and testing of a single blueprint file outside the managed environment.
|
190
|
+
|
191
|
+
---
|
192
|
+
|
193
|
+
## Further Documentation
|
194
|
+
|
195
|
+
This README provides a high-level overview and quickstart. For more detailed information, please refer to:
|
196
|
+
|
197
|
+
* **User Guide (`USERGUIDE.md`):** Detailed instructions on using `swarm-cli` commands for managing blueprints and configuration.
|
198
|
+
* **Development Guide (`DEVELOPMENT.md`):** Information for contributors and developers, including architecture details, testing strategies, project layout, and advanced topics like XDG paths and blueprint creation.
|
199
|
+
* **Example Blueprints (`src/swarm/blueprints/README.md`):** A list and description of the example blueprints included with the framework, showcasing various features and integration patterns.
|
200
|
+
|
201
|
+
---
|
202
|
+
|
203
|
+
## Contributing
|
204
|
+
|
205
|
+
Contributions are welcome! Please refer to the `CONTRIBUTING.md` file (if available) or open an issue/pull request on the repository.
|
206
|
+
|
207
|
+
---
|
208
|
+
|
209
|
+
## License
|
210
|
+
|
211
|
+
Open Swarm is provided under the MIT License. Refer to the [LICENSE](LICENSE) file for full details.
|
212
|
+
|
213
|
+
---
|
214
|
+
|
215
|
+
## Acknowledgements
|
216
|
+
|
217
|
+
This project builds upon concepts and code from the `openai-agents` library and potentially other open-source projects. Specific acknowledgements can be found in `DEVELOPMENT.md` or individual source files.
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# Open Swarm
|
2
|
+
|
3
|
+
<div align="center">
|
4
|
+
<img src="assets/images/openswarm-project-image.jpg" alt="Project Logo" width="70%"/>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
**Open Swarm** is a Python framework for creating, managing, and deploying autonomous agent swarms. It leverages the `openai-agents` library for core agent functionality and provides a structured way to build complex, multi-agent workflows using **Blueprints**.
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
## Core Concepts
|
12
|
+
|
13
|
+
* **Agents:** Individual AI units performing specific tasks, powered by LLMs (like GPT-4, Claude, etc.). Built using the `openai-agents` SDK.
|
14
|
+
* **Blueprints:** Python classes (`BlueprintBase` subclasses) defining a swarm's structure, agents, coordination logic, and external dependencies (like required environment variables or MCP servers). They act as reusable templates for specific tasks (e.g., code generation, research, data analysis).
|
15
|
+
* **MCP (Mission Control Platform) Servers:** Optional external processes providing specialized capabilities (tools) to agents, such as filesystem access, web browsing, database interaction, or interacting with specific APIs (Slack, Monday.com, etc.). Agents interact with MCP servers via a standardized communication protocol.
|
16
|
+
* **Configuration (`swarm_config.json`):** A central JSON file defining available LLM profiles (API keys, models) and configurations for MCP servers. Typically managed via `swarm-cli` in `~/.config/swarm/`.
|
17
|
+
* **`swarm-cli`:** A command-line tool for managing blueprints (adding, listing, running, installing) and the `swarm_config.json` file. Uses XDG directories for storing blueprints (`~/.local/share/swarm/blueprints/`) and configuration (`~/.config/swarm/`).
|
18
|
+
* **`swarm-api`:** A launcher for the Django/DRF backend that exposes installed blueprints via an OpenAI-compatible REST API (`/v1/models`, `/v1/chat/completions`).
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
## Quickstart (Docker - Recommended)
|
23
|
+
|
24
|
+
This is the easiest and recommended way to get started, especially for deploying the API service.
|
25
|
+
|
26
|
+
**Prerequisites:**
|
27
|
+
* Docker ([Install Docker](https://docs.docker.com/engine/install/))
|
28
|
+
* Docker Compose ([Install Docker Compose](https://docs.docker.com/compose/install/))
|
29
|
+
|
30
|
+
**Steps:**
|
31
|
+
|
32
|
+
1. **Clone the Repository:**
|
33
|
+
```bash
|
34
|
+
git clone https://github.com/matthewhand/open-swarm.git
|
35
|
+
cd open-swarm
|
36
|
+
```
|
37
|
+
|
38
|
+
2. **Configure Environment:**
|
39
|
+
* Copy the example environment file:
|
40
|
+
```bash
|
41
|
+
cp .env.example .env
|
42
|
+
```
|
43
|
+
* Edit `.env` and add your necessary API keys (e.g., `OPENAI_API_KEY`).
|
44
|
+
|
45
|
+
3. **Configure Docker Compose Overrides (Optional but Recommended):**
|
46
|
+
* Copy the override example:
|
47
|
+
```bash
|
48
|
+
cp docker-compose.override.yaml.example docker-compose.override.yaml
|
49
|
+
```
|
50
|
+
* Edit `docker-compose.override.yaml` to:
|
51
|
+
* Mount any local directories containing custom blueprints you want the API server to access (e.g., uncomment and adjust the `./my_custom_blueprints:/app/custom_blueprints:ro` line).
|
52
|
+
* Make any other necessary adjustments (ports, environment variables, etc.).
|
53
|
+
|
54
|
+
4. **Start the Service:**
|
55
|
+
```bash
|
56
|
+
docker compose up -d
|
57
|
+
```
|
58
|
+
This will build the image (if not already pulled/built) and start the `open-swarm` service, exposing the API on port 8000 (or the port specified in your `.env`/override).
|
59
|
+
|
60
|
+
5. **Verify API:**
|
61
|
+
* Check the available models (blueprints):
|
62
|
+
```bash
|
63
|
+
curl http://localhost:8000/v1/models
|
64
|
+
```
|
65
|
+
* Send a chat completion request:
|
66
|
+
```bash
|
67
|
+
curl http://localhost:8000/v1/chat/completions \
|
68
|
+
-H "Content-Type: application/json" \
|
69
|
+
-d '{
|
70
|
+
"model": "echocraft",
|
71
|
+
"messages": [{"role": "user", "content": "Hello Docker!"}]
|
72
|
+
}'
|
73
|
+
```
|
74
|
+
*(Replace `echocraft` with a blueprint name available in your mounted volumes or the base image).*
|
75
|
+
|
76
|
+
---
|
77
|
+
|
78
|
+
## Usage Modes
|
79
|
+
|
80
|
+
Open Swarm offers several ways to interact with your blueprints:
|
81
|
+
|
82
|
+
1. **Run via `swarm-api` (OpenAI-Compatible REST API):**
|
83
|
+
* **How:** Start the Django server (`uv run python manage.py runserver` or via Docker as shown above).
|
84
|
+
* **What:** Exposes blueprints listed in `settings.BLUEPRINT_DIRECTORY` (within the Docker container, this typically includes `/app/blueprints` and any volumes mounted in the override file) via `/v1/models` and `/v1/chat/completions`.
|
85
|
+
* **Auth:** If `SWARM_API_KEY` is set in `.env`, requests require an `Authorization: Bearer <your_key>` header. Otherwise, access is anonymous.
|
86
|
+
* **Security:** **Warning:** Running with anonymous access, especially when bound to `0.0.0.0`, can be insecure if blueprints have access to sensitive operations (filesystem, shell commands). **Setting `SWARM_API_KEY` is highly recommended for non-local deployments.**
|
87
|
+
* **(TODO) Web UI:** A future mode will integrate a simple web chat interface with the API server.
|
88
|
+
|
89
|
+
2. **Run via `swarm-cli run`:**
|
90
|
+
* **How:** `swarm-cli run <blueprint_name> --instruction "Your single instruction"`
|
91
|
+
* **What:** Executes a blueprint managed by `swarm-cli` (located in `~/.local/share/swarm/blueprints/`) directly in the terminal. Uses configuration from `~/.config/swarm/swarm_config.json`.
|
92
|
+
* **Interactive Mode:** If you omit the `--instruction` argument (`swarm-cli run <blueprint_name>`), it will enter an interactive chat mode in the terminal.
|
93
|
+
* **Use Case:** Good for testing, debugging, interactive sessions, or running specific tasks locally without the API overhead.
|
94
|
+
|
95
|
+
3. **Run via `swarm-cli install`:**
|
96
|
+
* **How:** `swarm-cli install <blueprint_name>`, then run `<blueprint_name> --instruction "..."`
|
97
|
+
* **What:** Creates a standalone executable for a managed blueprint using PyInstaller and places it in the user's binary directory (e.g., `~/.local/bin/` or similar, ensure it's in your `PATH`).
|
98
|
+
* **Use Case:** Convenient for frequently used blueprints that act like regular command-line tools.
|
99
|
+
|
100
|
+
4. **Direct Python Execution:**
|
101
|
+
* **How:** `uv run python /path/to/your/blueprint_file.py --instruction "..."`
|
102
|
+
* **What:** Runs a specific blueprint Python file directly. Requires manual handling of configuration loading and dependencies.
|
103
|
+
* **Use Case:** Primarily for development and testing of a single blueprint file outside the managed environment.
|
104
|
+
|
105
|
+
---
|
106
|
+
|
107
|
+
## Further Documentation
|
108
|
+
|
109
|
+
This README provides a high-level overview and quickstart. For more detailed information, please refer to:
|
110
|
+
|
111
|
+
* **User Guide (`USERGUIDE.md`):** Detailed instructions on using `swarm-cli` commands for managing blueprints and configuration.
|
112
|
+
* **Development Guide (`DEVELOPMENT.md`):** Information for contributors and developers, including architecture details, testing strategies, project layout, and advanced topics like XDG paths and blueprint creation.
|
113
|
+
* **Example Blueprints (`src/swarm/blueprints/README.md`):** A list and description of the example blueprints included with the framework, showcasing various features and integration patterns.
|
114
|
+
|
115
|
+
---
|
116
|
+
|
117
|
+
## Contributing
|
118
|
+
|
119
|
+
Contributions are welcome! Please refer to the `CONTRIBUTING.md` file (if available) or open an issue/pull request on the repository.
|
120
|
+
|
121
|
+
---
|
122
|
+
|
123
|
+
## License
|
124
|
+
|
125
|
+
Open Swarm is provided under the MIT License. Refer to the [LICENSE](LICENSE) file for full details.
|
126
|
+
|
127
|
+
---
|
128
|
+
|
129
|
+
## Acknowledgements
|
130
|
+
|
131
|
+
This project builds upon concepts and code from the `openai-agents` library and potentially other open-source projects. Specific acknowledgements can be found in `DEVELOPMENT.md` or individual source files.
|