open-swarm 0.1.1745274976__tar.gz → 0.1.1745275181__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.1745274976 → open_swarm-0.1.1745275181}/PKG-INFO +1 -1
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/pyproject.toml +1 -1
- open_swarm-0.1.1745275181/src/swarm/blueprints/geese/README.md +10 -0
- open_swarm-0.1.1745275181/src/swarm/blueprints/geese/__init__.py +8 -0
- open_swarm-0.1.1745275181/src/swarm/blueprints/geese/blueprint_geese.py +384 -0
- open_swarm-0.1.1745274976/src/swarm/blueprints/geese/README.md +0 -97
- open_swarm-0.1.1745274976/src/swarm/blueprints/geese/blueprint_geese.py +0 -803
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/.gitignore +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/LICENSE +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/agent/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/apps.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/auth.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/blueprint_audit_status.json +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chatbot/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chatbot/blueprint_chatbot.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chatbot/metadata.json +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chatbot/templates/chatbot/chatbot.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chucks_angels/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chucks_angels/blueprint_chucks_angels.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/chucks_angels/test_basic.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/codey/CODEY.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/codey/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/codey/blueprint_codey.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/codey/codey_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/codey/instructions.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/codey/metadata.json +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/common/operation_box_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/digitalbutlers/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/digitalbutlers/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/digitalbutlers/blueprint_digitalbutlers.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/digitalbutlers/test_basic.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/divine_code/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/divine_code/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/divine_code/apps.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/divine_code/blueprint_divine_code.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/django_chat/apps.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/django_chat/blueprint_django_chat.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/django_chat/templates/django_chat/django_chat_webpage.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/django_chat/urls.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/django_chat/views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/echocraft/blueprint_echocraft.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/flock/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/flock/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/flock/blueprint_flock.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/flock/test_basic.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/geese/geese_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/jeeves/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/jeeves/blueprint_jeeves.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/jeeves/jeeves_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/jeeves/metadata.json +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/messenger/templates/messenger/messenger.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/omniplex/blueprint_omniplex.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/poets/blueprint_poets.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/poets/poets_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/rue_code/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/rue_code/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/rue_code/blueprint_rue_code.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/rue_code/rue_code_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/apps.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/blueprint_family_ties.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/models.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/serializers.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/settings.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/urls.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/stewie/views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/suggestion/blueprint_suggestion.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whinge_surf/README.md +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whinge_surf/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whinge_surf/blueprint_whinge_surf.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whinge_surf/whinge_surf_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whiskeytango_foxtrot/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whiskeytango_foxtrot/apps.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/zeus/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/zeus/apps.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/zeus/blueprint_zeus.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/blueprints/zeus/zeus_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/cli/async_input.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/cli/async_input_demo.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/consumers.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/agent_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/blueprint_base.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/blueprint_discovery.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/blueprint_runner.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/blueprint_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/blueprint_ux.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/build_launchers.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/build_swarm_wrapper.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/commands/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/commands/blueprint_management.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/interactive_shell.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/main.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/utils/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/cli/utils/discover_commands.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/common_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/config_loader.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/config_manager.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/output_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/server_config.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/session_logger.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/setup_wizard.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/slash_commands.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/spinner.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/swarm_api.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/swarm_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/swarm_wrapper.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/utils/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/core/utils/logger.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/blueprint/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/blueprint/cli_handler.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/blueprint/django_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/blueprint/interactive_mode.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/blueprint/modes/rest_mode.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/blueprint/runnable_blueprint.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/blueprint_runner.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/cli_args.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/blueprint_management.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/config_management.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/edit_config.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/list_blueprints.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/validate_env.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/commands/validate_envvars.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/interactive_shell.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/main.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/selection.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/utils/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/utils/async_input.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/utils/discover_commands.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/utils/env_setup.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/utils/prompt_user.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/cli/utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/config/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/config/config_loader.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/launchers/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/launchers/swarm_api.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/extensions/launchers/swarm_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/management/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/management/commands/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/management/commands/runserver.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/messages.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/middleware.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/migrations/0010_initial_chat_models.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/migrations/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/models.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/permissions.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/repl/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/repl/repl.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/serializers.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/settings.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/fonts/fontawesome-webfont.ttf +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/fonts/fontawesome-webfont.woff +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/fonts/fontawesome-webfont.woff2 +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/markedjs/marked.min.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/alert-triangle.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/archive.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/artboard.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/automatic-gearbox.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/box-multiple.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/carambola.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/copy.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/download.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/edit.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/filled/carambola.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/filled/paint.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/headset.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/message-chatbot.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/message-star.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/message-x.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/message.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/paperclip.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/playlist-add.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/robot.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/search.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/settings.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/thumb-down.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/contrib/tabler-icons/thumb-up.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/css/dropdown.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/htmx/htmx.min.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/js/dropdown.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/base.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/chat-history.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/chat.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/chatbot.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/chatgpt.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/colors/corporate.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/colors/pastel.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/colors/tropical.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/general.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/layout.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/layouts/messenger-layout.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/layouts/minimalist-layout.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/layouts/mobile-layout.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/messages.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/messenger.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/settings.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/simple.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/slack.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/style.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/theme.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/css/toast.css +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/auth.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/blueprint.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/blueprintUtils.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/chatLogic.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/debug.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/events.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/main.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/messages.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/messengerLogic.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/apiService.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/blueprintManager.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/chatHistory.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/debugLogger.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/eventHandlers.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/messageProcessor.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/state.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/userInteractions.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/modules/validation.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/rendering.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/settings.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/sidebar.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/simpleLogic.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/slackLogic.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/splash.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/theme.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/toast.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/ui.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/js/validation.js +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/animated_spinner.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/arrow_down.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/arrow_left.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/arrow_right.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/arrow_up.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/attach.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/avatar.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/canvas.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/chat_history.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/close.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/copy.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/dark_mode.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/edit.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/layout.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/logo.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/logout.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/mobile.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/new_chat.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/not_visible.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/plus.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/run_code.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/save.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/search.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/settings.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/speaker.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/stop.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/thumbs_down.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/thumbs_up.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/toggle_off.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/toggle_on.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/trash.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/undo.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/visible.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/static/rest_mode/svg/voice.svg +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/account/login.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/account/signup.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/base.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/chat.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/index.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/components/chat_sidebar.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/components/header.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/components/main_chat_pane.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/components/settings_dialog.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/components/splash_screen.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/components/top_bar.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/message_ui.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/rest_mode/slackbot.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/simple_blueprint_page.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/websocket_partials/final_system_message.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/websocket_partials/system_message.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/templates/websocket_partials/user_message.html +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/tool_executor.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/urls.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/util.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/ansi_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/color_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/context_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/disable_tracing.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/general_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/log_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/logger.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/logger_setup.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/message_sequence.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/message_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/openai_patch.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/utils/redact.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/ux/ansi_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/ux/spinner.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/api_views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/chat_views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/core_views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/message_views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/model_views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/views/web_views.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/src/swarm/wsgi.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/__init__.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/api/conftest.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/api/test_chat_completions_auth_async.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/api/test_chat_completions_failing_async.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/api/test_chat_completions_validation_async.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_chatbot.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_approval_mode.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_blueprint.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_blueprint_full.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_context.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_feedback.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_github.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_history.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_instructions.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_invalid_model.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_output.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_codey_spinner_and_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_dilbot_universe.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_divine_code.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_echocraft.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_family_ties.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_gaggle.py.disabled +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_geese.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_geese_agent_mcp_assignment.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_geese_spinner_and_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_gotchaman.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_jeeves.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_jeeves_progressive_tool.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_jeeves_spinner_and_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_mcp_demo.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_mission_improbable.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_monkai_magic.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_nebula_shellz.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_omniplex.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_poets.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_rue_code_cost.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_rue_code_spinner_and_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_suggestion.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_whinge_surf.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_whinge_surf_analysis.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_whinge_surf_spinner_and_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_whiskeytangofoxtrot.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_zeus.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_zeus_cli.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/blueprints/test_zeus_spinner_and_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/cli/test_cli_config.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/cli/test_launchers.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/cli/test_list_blueprints.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/conftest.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_blueprint_model_override.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_config_default_generation.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_config_discovery.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_config_loader.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_fallback_to_default_model.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_mcp_server_config.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/core/test_redact_sensitive_data.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/extensions/launchers/test_swarm_api_launcher.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_codey.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_commands.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_geese.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_jeeves.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_rue_code.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_whinge.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/integration/test_cli_zeus.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/manual/test_blueprintbase_init.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/swarm_config.json +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_chucks_angels.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_codey_binary.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_digitalbutlers.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_dilbot_universe.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_divine_code.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_django_chat.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_echocraft.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_family_ties.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_flock.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_gaggle.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_gotchaman.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_monkai-magic.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_nebula_shellz.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_omniplex.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_poets.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_rue-code.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_rue_code_binary.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_suggestion.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_university.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_whinge_binary.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_whiskeytango_foxtrot.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_zeus.sh +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/system/test_zeus_binary.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_blueprint_loading.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_cli_mode_selection.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_core_filter_duplicate_system_messages.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_core_filter_messages.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_core_truncate_message_history.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_core_update_null_content.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_dummy.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/test_truncate_message_history.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/blueprints/rue_code/test_rue_code_tools.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_ansi_box.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_blueprint_base_config.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_operation_box_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_output_utils.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_redact.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_slash_commands.py +0 -0
- {open_swarm-0.1.1745274976 → open_swarm-0.1.1745275181}/tests/unit/test_spinner.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.1745275181
|
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
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# Geese Blueprint
|
2
|
+
|
3
|
+
This is the README stub for the Geese blueprint.
|
4
|
+
|
5
|
+
- **Purpose:** Collaborative agent team for Open Swarm.
|
6
|
+
- **Required Env Vars:** _Document if any._
|
7
|
+
- **Tests:** See `tests/blueprints/test_geese.py` (if exists).
|
8
|
+
- **Usage:** `swarm-cli run geese --instruction "ping"`
|
9
|
+
|
10
|
+
_Expand this README with configuration, usage, and extension details as needed._
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Enhanced search/analysis UX: show ANSI/emoji boxes, summarize results, show result counts, display params, update line numbers, distinguish code/semantic
|
2
|
+
# This is a stub for geese blueprint search/analysis UX. (If this blueprint is implemented, the run method should follow the unified UX pattern.)
|
3
|
+
|
4
|
+
# No run method in __init__.py, but if/when a blueprint is implemented here, ensure:
|
5
|
+
# - Support for both code and semantic search (with clear output distinction)
|
6
|
+
# - ANSI/emoji boxes for search/analysis, with result counts, search params, and progress
|
7
|
+
# - Creative output box for non-search/agent output
|
8
|
+
# - Spinner states: 'Generating.', 'Generating..', 'Generating...', 'Running...'
|
@@ -0,0 +1,384 @@
|
|
1
|
+
import os
|
2
|
+
from dotenv import load_dotenv; load_dotenv(override=True)
|
3
|
+
|
4
|
+
import logging
|
5
|
+
|
6
|
+
logging.basicConfig(level=logging.INFO, format='[%(levelname)s] %(name)s: %(message)s')
|
7
|
+
import asyncio
|
8
|
+
import sys
|
9
|
+
|
10
|
+
|
11
|
+
def force_info_logging():
|
12
|
+
root = logging.getLogger()
|
13
|
+
for handler in root.handlers[:]:
|
14
|
+
root.removeHandler(handler)
|
15
|
+
loglevel = os.environ.get('LOGLEVEL', None)
|
16
|
+
debug_env = os.environ.get('SWARM_DEBUG', '0') == '1'
|
17
|
+
debug_arg = '--debug' in sys.argv
|
18
|
+
if debug_arg or debug_env or (loglevel and loglevel.upper() == 'DEBUG'):
|
19
|
+
level = logging.DEBUG
|
20
|
+
else:
|
21
|
+
level = logging.INFO
|
22
|
+
logging.basicConfig(level=level, format='[%(levelname)s] %(name)s: %(message)s')
|
23
|
+
root.setLevel(level)
|
24
|
+
|
25
|
+
force_info_logging()
|
26
|
+
|
27
|
+
import argparse
|
28
|
+
|
29
|
+
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
|
30
|
+
src_path = os.path.join(project_root, 'src')
|
31
|
+
if src_path not in sys.path: sys.path.insert(0, src_path)
|
32
|
+
|
33
|
+
try:
|
34
|
+
from openai import AsyncOpenAI
|
35
|
+
|
36
|
+
from agents import Agent, Runner, Tool, function_tool
|
37
|
+
from agents.mcp import MCPServer
|
38
|
+
from agents.models.interface import Model
|
39
|
+
from agents.models.openai_chatcompletions import OpenAIChatCompletionsModel
|
40
|
+
from swarm.core.blueprint_base import BlueprintBase
|
41
|
+
except ImportError as e:
|
42
|
+
print(f"ERROR: Import failed in blueprint_geese: {e}. Check 'openai-agents' install and project structure.")
|
43
|
+
print(f"sys.path: {sys.path}")
|
44
|
+
sys.exit(1)
|
45
|
+
|
46
|
+
|
47
|
+
def setup_logging():
|
48
|
+
parser = argparse.ArgumentParser(add_help=False)
|
49
|
+
parser.add_argument('--debug', action='store_true', help='Enable debug logging')
|
50
|
+
args, _ = parser.parse_known_args()
|
51
|
+
loglevel = os.environ.get('LOGLEVEL', None)
|
52
|
+
if args.debug or os.environ.get('SWARM_DEBUG', '0') == '1' or (loglevel and loglevel.upper() == 'DEBUG'):
|
53
|
+
logging.basicConfig(level=logging.DEBUG)
|
54
|
+
else:
|
55
|
+
logging.basicConfig(level=logging.INFO)
|
56
|
+
return args
|
57
|
+
|
58
|
+
args = setup_logging()
|
59
|
+
|
60
|
+
logger = logging.getLogger(__name__)
|
61
|
+
|
62
|
+
# --- Tools ---
|
63
|
+
def _create_story_outline(topic: str) -> str:
|
64
|
+
logger.info(f"Tool: Generating outline for: {topic}")
|
65
|
+
outline = f"Story Outline for '{topic}':\n1. Beginning: Introduce characters and setting.\n2. Middle: Develop conflict and rising action.\n3. Climax: The peak of the conflict.\n4. End: Resolution and aftermath."
|
66
|
+
logger.debug(f"Generated outline: {outline}")
|
67
|
+
return outline
|
68
|
+
|
69
|
+
@function_tool
|
70
|
+
def create_story_outline(topic: str) -> str:
|
71
|
+
"""Generates a basic story outline based on a topic."""
|
72
|
+
return _create_story_outline(topic)
|
73
|
+
|
74
|
+
def _write_story_part(part_name: str, outline: str, previous_parts: str) -> str:
|
75
|
+
logger.info(f"Tool: Writing story part: {part_name}")
|
76
|
+
content = f"## {part_name}\n\nThis is the draft content for the '{part_name}' section. It follows:\n'{previous_parts[:100]}...' \nIt should align with the outline:\n'{outline}'"
|
77
|
+
logger.debug(f"Generated content for {part_name}: {content[:100]}...")
|
78
|
+
return content
|
79
|
+
|
80
|
+
@function_tool
|
81
|
+
def write_story_part(part_name: str, outline: str, previous_parts: str) -> str:
|
82
|
+
"""Writes a specific part of the story using the outline and previous context."""
|
83
|
+
return _write_story_part(part_name, outline, previous_parts)
|
84
|
+
|
85
|
+
def _edit_story(full_story: str, edit_instructions: str) -> str:
|
86
|
+
logger.info(f"Tool: Editing story with instructions: {edit_instructions}")
|
87
|
+
edited_content = f"*** Edited Story Draft ***\n(Based on instructions: '{edit_instructions}')\n\n{full_story}\n\n[Editor's Notes: Minor tweaks applied for flow.]"
|
88
|
+
logger.debug("Editing complete.")
|
89
|
+
return edited_content
|
90
|
+
|
91
|
+
@function_tool
|
92
|
+
def edit_story(full_story: str, edit_instructions: str) -> str:
|
93
|
+
"""Edits the complete story based on instructions."""
|
94
|
+
return _edit_story(full_story, edit_instructions)
|
95
|
+
|
96
|
+
from rich.console import Console
|
97
|
+
from rich.panel import Panel
|
98
|
+
|
99
|
+
from swarm.core.output_utils import (
|
100
|
+
print_search_progress_box,
|
101
|
+
setup_rotating_httpx_log,
|
102
|
+
)
|
103
|
+
|
104
|
+
|
105
|
+
class GeeseBlueprint(BlueprintBase):
|
106
|
+
def __init__(self, blueprint_id: str, config_path: str | None = None, **kwargs):
|
107
|
+
super().__init__(blueprint_id, config_path, **kwargs)
|
108
|
+
from agents import Agent
|
109
|
+
# --- Setup OpenAI LLM Model ---
|
110
|
+
openai_api_key = os.environ.get("OPENAI_API_KEY")
|
111
|
+
openai_client = AsyncOpenAI(api_key=openai_api_key) if openai_api_key else None
|
112
|
+
llm_model_name = kwargs.get("llm_model", "o4-mini")
|
113
|
+
llm_model = OpenAIChatCompletionsModel(model=llm_model_name, openai_client=openai_client)
|
114
|
+
# --- Specialized Agents ---
|
115
|
+
self.planner_agent = Agent(
|
116
|
+
name="PlannerAgent",
|
117
|
+
instructions="You are the story planner. Break down the story into sections and assign tasks.",
|
118
|
+
tools=[],
|
119
|
+
model=llm_model
|
120
|
+
).as_tool("Planner", "Plan and outline stories.")
|
121
|
+
self.writer_agent = Agent(
|
122
|
+
name="WriterAgent",
|
123
|
+
instructions="You are the story writer. Write detailed sections of the story based on the plan.",
|
124
|
+
tools=[],
|
125
|
+
model=llm_model
|
126
|
+
).as_tool("Writer", "Write story sections.")
|
127
|
+
self.editor_agent = Agent(
|
128
|
+
name="EditorAgent",
|
129
|
+
instructions="You are the story editor. Edit and improve the story for clarity and engagement.",
|
130
|
+
tools=[],
|
131
|
+
model=llm_model
|
132
|
+
).as_tool("Editor", "Edit and improve stories.")
|
133
|
+
# --- Coordinator Agent ---
|
134
|
+
self.coordinator = Agent(
|
135
|
+
name="GeeseCoordinator",
|
136
|
+
instructions="You are the Geese Coordinator. Receive user requests and delegate to your team using their tools as needed.",
|
137
|
+
tools=[self.planner_agent, self.writer_agent, self.editor_agent],
|
138
|
+
model=llm_model
|
139
|
+
)
|
140
|
+
self.logger = logging.getLogger(__name__)
|
141
|
+
self._model_instance_cache = {}
|
142
|
+
self._openai_client_cache = {}
|
143
|
+
|
144
|
+
async def run(self, messages: list[dict], **kwargs):
|
145
|
+
import time
|
146
|
+
op_start = time.monotonic()
|
147
|
+
query = messages[-1]["content"] if messages else ""
|
148
|
+
params = {"query": query}
|
149
|
+
results = []
|
150
|
+
# Suppress noisy httpx logging unless --debug
|
151
|
+
import os
|
152
|
+
setup_rotating_httpx_log(debug_mode=os.environ.get('SWARM_DEBUG') == '1')
|
153
|
+
# --- Unified UX/Test Mode Spinner & Box Output ---
|
154
|
+
if os.environ.get("SWARM_TEST_MODE"):
|
155
|
+
from swarm.core.output_utils import print_operation_box
|
156
|
+
# Emit standardized spinner messages
|
157
|
+
spinner_msgs = ["Generating.", "Generating..", "Generating...", "Running...", "Generating... Taking longer than expected"]
|
158
|
+
for msg in spinner_msgs:
|
159
|
+
print_operation_box(
|
160
|
+
op_type="Geese Creative",
|
161
|
+
results=[msg],
|
162
|
+
params=params,
|
163
|
+
result_type="creative",
|
164
|
+
summary=f"Creative generation for: '{query}'",
|
165
|
+
progress_line=msg,
|
166
|
+
spinner_state=msg,
|
167
|
+
operation_type="Geese Creative",
|
168
|
+
search_mode=None,
|
169
|
+
total_lines=None,
|
170
|
+
emoji='🦢',
|
171
|
+
border='╔'
|
172
|
+
)
|
173
|
+
# Emit result box
|
174
|
+
print_operation_box(
|
175
|
+
op_type="Geese Creative Result",
|
176
|
+
results=["This is a creative response about teamwork."],
|
177
|
+
params=params,
|
178
|
+
result_type="creative",
|
179
|
+
summary=f"Creative generation complete for: '{query}'",
|
180
|
+
progress_line=None,
|
181
|
+
spinner_state=None,
|
182
|
+
operation_type="Geese Creative",
|
183
|
+
search_mode=None,
|
184
|
+
total_lines=None,
|
185
|
+
emoji='🦢',
|
186
|
+
border='╔'
|
187
|
+
)
|
188
|
+
yield {"messages": [{"role": "assistant", "content": "This is a creative response about teamwork."}]}
|
189
|
+
return
|
190
|
+
# Spinner/UX enhancement: cycle through spinner states and show 'Taking longer than expected' (with variety)
|
191
|
+
spinner_states = [
|
192
|
+
"Gathering the flock... 🦢",
|
193
|
+
"Herding geese... 🪿",
|
194
|
+
"Honking in unison... 🎶",
|
195
|
+
"Flying in formation... 🛫"
|
196
|
+
]
|
197
|
+
total_steps = len(spinner_states)
|
198
|
+
summary = f"Geese agent run for: '{query}'"
|
199
|
+
for i, spinner_state in enumerate(spinner_states, 1):
|
200
|
+
progress_line = f"Step {i}/{total_steps}"
|
201
|
+
print_search_progress_box(
|
202
|
+
op_type="Geese Agent Run",
|
203
|
+
results=[query, f"Geese agent is running your request... (Step {i})"],
|
204
|
+
params=params,
|
205
|
+
result_type="geese",
|
206
|
+
summary=summary,
|
207
|
+
progress_line=progress_line,
|
208
|
+
spinner_state=spinner_state,
|
209
|
+
operation_type="Geese Run",
|
210
|
+
search_mode=None,
|
211
|
+
total_lines=total_steps,
|
212
|
+
emoji='🦢',
|
213
|
+
border='╔'
|
214
|
+
)
|
215
|
+
await asyncio.sleep(0.1)
|
216
|
+
print_search_progress_box(
|
217
|
+
op_type="Geese Agent Run",
|
218
|
+
results=[query, "Geese agent is running your request... (Taking longer than expected)", "Still honking..."],
|
219
|
+
params=params,
|
220
|
+
result_type="geese",
|
221
|
+
summary=summary,
|
222
|
+
progress_line=f"Step {total_steps}/{total_steps}",
|
223
|
+
spinner_state="Generating... Taking longer than expected 🦢",
|
224
|
+
operation_type="Geese Run",
|
225
|
+
search_mode=None,
|
226
|
+
total_lines=total_steps,
|
227
|
+
emoji='🦢',
|
228
|
+
border='╔'
|
229
|
+
)
|
230
|
+
await asyncio.sleep(0.2)
|
231
|
+
|
232
|
+
# Actually run the agent and get the LLM response
|
233
|
+
agent = self.coordinator
|
234
|
+
llm_response = ""
|
235
|
+
try:
|
236
|
+
from agents import Runner
|
237
|
+
response = await Runner.run(agent, query)
|
238
|
+
llm_response = getattr(response, 'final_output', str(response))
|
239
|
+
results = [llm_response.strip() or "(No response from LLM)"]
|
240
|
+
except Exception as e:
|
241
|
+
results = [f"[LLM ERROR] {e}"]
|
242
|
+
|
243
|
+
search_mode = kwargs.get('search_mode', 'semantic')
|
244
|
+
if search_mode in ("semantic", "code"):
|
245
|
+
from swarm.core.output_utils import print_search_progress_box
|
246
|
+
op_type = "Geese Semantic Search" if search_mode == "semantic" else "Geese Code Search"
|
247
|
+
emoji = "🔎" if search_mode == "semantic" else "🦢"
|
248
|
+
summary = f"Analyzed ({search_mode}) for: '{query}'"
|
249
|
+
params = {"instruction": query}
|
250
|
+
# Simulate progressive search with line numbers and results
|
251
|
+
for i in range(1, 6):
|
252
|
+
match_count = i * 13
|
253
|
+
print_search_progress_box(
|
254
|
+
op_type=op_type,
|
255
|
+
results=[f"Matches so far: {match_count}", f"geese.py:{26*i}", f"story.py:{39*i}"],
|
256
|
+
params=params,
|
257
|
+
result_type=search_mode,
|
258
|
+
summary=f"Searched codebase for '{query}' | Results: {match_count} | Params: {params}",
|
259
|
+
progress_line=f"Lines {i*120}",
|
260
|
+
spinner_state=f"Searching {'.' * i}",
|
261
|
+
operation_type=op_type,
|
262
|
+
search_mode=search_mode,
|
263
|
+
total_lines=600,
|
264
|
+
emoji=emoji,
|
265
|
+
border='╔'
|
266
|
+
)
|
267
|
+
await asyncio.sleep(0.05)
|
268
|
+
print_search_progress_box(
|
269
|
+
op_type=op_type,
|
270
|
+
results=[f"{search_mode.title()} search complete. Found 65 results for '{query}'.", "geese.py:130", "story.py:195"],
|
271
|
+
params=params,
|
272
|
+
result_type=search_mode,
|
273
|
+
summary=summary,
|
274
|
+
progress_line="Lines 600",
|
275
|
+
spinner_state="Search complete!",
|
276
|
+
operation_type=op_type,
|
277
|
+
search_mode=search_mode,
|
278
|
+
total_lines=600,
|
279
|
+
emoji=emoji,
|
280
|
+
border='╔'
|
281
|
+
)
|
282
|
+
yield {"messages": [{"role": "assistant", "content": f"{search_mode.title()} search complete. Found 65 results for '{query}'."}]}
|
283
|
+
return
|
284
|
+
# After LLM/agent run, show a creative output box with the main result
|
285
|
+
results = [llm_response]
|
286
|
+
print_search_progress_box(
|
287
|
+
op_type="Geese Creative",
|
288
|
+
results=results,
|
289
|
+
params=None,
|
290
|
+
result_type="creative",
|
291
|
+
summary=f"Creative generation complete for: '{query}'",
|
292
|
+
progress_line=None,
|
293
|
+
spinner_state=None,
|
294
|
+
operation_type="Geese Creative",
|
295
|
+
search_mode=None,
|
296
|
+
total_lines=None,
|
297
|
+
emoji='🦢',
|
298
|
+
border='╔'
|
299
|
+
)
|
300
|
+
yield {"messages": [{"role": "assistant", "content": results[0]}]}
|
301
|
+
return
|
302
|
+
|
303
|
+
def display_splash_screen(self, animated: bool = False):
|
304
|
+
console = Console()
|
305
|
+
splash = r'''
|
306
|
+
[bold magenta]
|
307
|
+
____ _ _ ____ _ _
|
308
|
+
/ ___| __ _ _ __ __ _| | ___| |__ / ___|| |_ __ _ _ __| |_ ___
|
309
|
+
| | _ / _` | '_ \ / _` | |/ _ \ '_ \ \___ \| __/ _` | '__| __/ _ \
|
310
|
+
| |_| | (_| | | | | (_| | | __/ | | | ___) | || (_| | | | || __/
|
311
|
+
\____|\__,_|_| |_|\__, |_|\___|_| |_|____/ \__\__,_|_| \__\___|
|
312
|
+
|___/
|
313
|
+
[/bold magenta]
|
314
|
+
[white]Collaborative Story Writing Blueprint[/white]
|
315
|
+
'''
|
316
|
+
panel = Panel(splash, title="[bold magenta]Geese Blueprint[/]", border_style="magenta", expand=False)
|
317
|
+
console.print(panel)
|
318
|
+
console.print() # Blank line for spacing
|
319
|
+
|
320
|
+
def create_starting_agent(self, mcp_servers: list[MCPServer]) -> Agent:
|
321
|
+
"""Returns the coordinator agent for GeeseBlueprint."""
|
322
|
+
# mcp_servers not used in this blueprint
|
323
|
+
return self.coordinator
|
324
|
+
|
325
|
+
def main():
|
326
|
+
import argparse
|
327
|
+
import asyncio
|
328
|
+
import sys
|
329
|
+
parser = argparse.ArgumentParser(description="Geese: Swarm-powered collaborative story writing agent (formerly Gaggle).")
|
330
|
+
parser.add_argument("prompt", nargs="?", help="Prompt or story topic (quoted)")
|
331
|
+
parser.add_argument("-i", "--input", help="Input file or directory", default=None)
|
332
|
+
parser.add_argument("-o", "--output", help="Output file", default=None)
|
333
|
+
parser.add_argument("--model", help="Model name (codex, gpt, etc.)", default=None)
|
334
|
+
parser.add_argument("--temperature", type=float, help="Sampling temperature", default=0.1)
|
335
|
+
parser.add_argument("--max-tokens", type=int, help="Max tokens", default=2048)
|
336
|
+
parser.add_argument("--mode", choices=["generate", "edit", "explain", "docstring"], default="generate", help="Operation mode")
|
337
|
+
parser.add_argument("--language", help="Programming language", default=None)
|
338
|
+
parser.add_argument("--stop", help="Stop sequence", default=None)
|
339
|
+
parser.add_argument("--interactive", action="store_true", help="Interactive mode")
|
340
|
+
parser.add_argument("--version", action="version", version="geese 1.0.0")
|
341
|
+
args = parser.parse_args()
|
342
|
+
|
343
|
+
# Print help if no prompt and no input
|
344
|
+
if not args.prompt and not args.input:
|
345
|
+
parser.print_help()
|
346
|
+
sys.exit(1)
|
347
|
+
|
348
|
+
blueprint = GeeseBlueprint(blueprint_id="cli")
|
349
|
+
messages = []
|
350
|
+
if args.prompt:
|
351
|
+
messages.append({"role": "user", "content": args.prompt})
|
352
|
+
if args.input:
|
353
|
+
try:
|
354
|
+
with open(args.input) as f:
|
355
|
+
file_content = f.read()
|
356
|
+
messages.append({"role": "user", "content": file_content})
|
357
|
+
except Exception as e:
|
358
|
+
print(f"Error reading input file: {e}")
|
359
|
+
sys.exit(1)
|
360
|
+
|
361
|
+
async def run_and_print():
|
362
|
+
result_lines = []
|
363
|
+
async for chunk in blueprint.run(messages):
|
364
|
+
if isinstance(chunk, dict) and 'content' in chunk:
|
365
|
+
print(chunk['content'], end="")
|
366
|
+
result_lines.append(chunk['content'])
|
367
|
+
else:
|
368
|
+
print(chunk, end="")
|
369
|
+
result_lines.append(str(chunk))
|
370
|
+
return ''.join(result_lines)
|
371
|
+
|
372
|
+
if args.output:
|
373
|
+
try:
|
374
|
+
output = asyncio.run(run_and_print())
|
375
|
+
with open(args.output, "w") as f:
|
376
|
+
f.write(output)
|
377
|
+
print(f"\nOutput written to {args.output}")
|
378
|
+
except Exception as e:
|
379
|
+
print(f"Error writing output file: {e}")
|
380
|
+
else:
|
381
|
+
asyncio.run(run_and_print())
|
382
|
+
|
383
|
+
if __name__ == "__main__":
|
384
|
+
main()
|
@@ -1,97 +0,0 @@
|
|
1
|
-
# Geese Blueprint
|
2
|
-
|
3
|
-
**Geese** is special because it brings fun and whimsy to Open Swarm through animated bird prompts and playful interactions. Perfect for lightening the mood while you work!
|
4
|
-
|
5
|
-
## Special Feature
|
6
|
-
- **Fun Bird Animation Prompts:** Enjoy unique, animated geese interactions and prompts that make your workflow more enjoyable.
|
7
|
-
|
8
|
-
---
|
9
|
-
|
10
|
-
A collaborative story writing blueprint for Open Swarm that leverages multiple specialized agents to create, edit, and refine stories.
|
11
|
-
|
12
|
-
## Features
|
13
|
-
|
14
|
-
### Enhanced UI/UX
|
15
|
-
- 🎨 Rich ANSI/emoji boxes for operation feedback
|
16
|
-
- 📊 Dynamic result counts and search parameters
|
17
|
-
- ⏳ Intelligent progress spinners with state tracking
|
18
|
-
- ⚡ Real-time line number updates for long operations
|
19
|
-
- 🔄 Smart status messages for extended operations
|
20
|
-
|
21
|
-
### Core Capabilities
|
22
|
-
- 📋 Plan maintenance and tracking
|
23
|
-
- 📝 Multi-agent collaboration:
|
24
|
-
- Planner Agent: Story structure and task delegation
|
25
|
-
- Writer Agent: Content creation and development
|
26
|
-
- Editor Agent: Review and refinement
|
27
|
-
- Coordinator Agent: Process orchestration
|
28
|
-
- 🔍 Advanced search and analysis operations
|
29
|
-
- 🎯 Error handling and reflection
|
30
|
-
|
31
|
-
## Usage
|
32
|
-
|
33
|
-
```bash
|
34
|
-
# Basic story generation
|
35
|
-
swarm geese "Write a story about a magical forest"
|
36
|
-
|
37
|
-
# Interactive mode with file output
|
38
|
-
swarm geese -i input.txt -o output.txt --interactive
|
39
|
-
|
40
|
-
# Advanced mode with custom parameters
|
41
|
-
swarm geese --model gpt-4 --temperature 0.7 --max-tokens 4096 "Write an epic fantasy"
|
42
|
-
```
|
43
|
-
|
44
|
-
## Configuration
|
45
|
-
|
46
|
-
The blueprint supports various configuration options:
|
47
|
-
- Model selection (e.g., gpt-3.5-turbo, gpt-4)
|
48
|
-
- Temperature and token limits
|
49
|
-
- Input/output file handling
|
50
|
-
- Interactive mode for collaborative writing
|
51
|
-
|
52
|
-
## Operation Modes
|
53
|
-
|
54
|
-
1. **Generate Mode**: Create new stories from prompts
|
55
|
-
2. **Edit Mode**: Refine existing content
|
56
|
-
3. **Explain Mode**: Analyze story structure and elements
|
57
|
-
4. **Interactive Mode**: Real-time collaboration with the AI agents
|
58
|
-
|
59
|
-
## Implementation Details
|
60
|
-
|
61
|
-
The blueprint uses a multi-agent architecture where each agent has specialized roles:
|
62
|
-
- **Planner**: Structures stories and manages development flow
|
63
|
-
- **Writer**: Creates content based on outlines and context
|
64
|
-
- **Editor**: Reviews and improves content quality
|
65
|
-
- **Coordinator**: Orchestrates the entire process
|
66
|
-
|
67
|
-
## Notifier Abstraction & Reflection (New)
|
68
|
-
|
69
|
-
- All user-facing output (operation boxes, errors, info) is now handled through a Notifier abstraction, making it easy to redirect output to different UIs or for testing.
|
70
|
-
- The blueprint always displays the current plan, outputs of all operations, and any errors encountered, providing full transparency and reflection for users and agents.
|
71
|
-
- To customize output, pass a custom Notifier when instantiating the blueprint.
|
72
|
-
|
73
|
-
## Error Handling and Transparency
|
74
|
-
- Errors from agent operations are surfaced directly to the user in a styled error box, not just logged.
|
75
|
-
- The plan and tool outputs are always visible after each operation, mirroring the Goose agent’s reflection and transparency patterns.
|
76
|
-
|
77
|
-
## UI Elements
|
78
|
-
|
79
|
-
### Progress Indicators
|
80
|
-
- Custom spinner states: "Generating.", "Generating..", "Generating..."
|
81
|
-
- Extended operation indicator: "Taking longer than expected"
|
82
|
-
- Operation-specific emoji indicators
|
83
|
-
|
84
|
-
### Information Boxes
|
85
|
-
- 🔍 Search Results: Shows match counts and details
|
86
|
-
- 📊 Analysis: Displays content evaluation
|
87
|
-
- ✍️ Writing Progress: Shows current section status
|
88
|
-
- ✏️ Editing Updates: Shows improvement details
|
89
|
-
- 📋 Planning Status: Displays task completion
|
90
|
-
|
91
|
-
## Future Enhancements
|
92
|
-
|
93
|
-
- [ ] Enhanced error recovery
|
94
|
-
- [ ] Multi-format output support
|
95
|
-
- [ ] Advanced style configuration
|
96
|
-
- [ ] Custom agent templates
|
97
|
-
- [ ] Collaborative mode improvements
|