code-puppy-core-plugins 0.0.52__tar.gz → 0.0.53__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.
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/PKG-INFO +1 -1
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/background_agents/register_callbacks.py +29 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/README.md +7 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +50 -22
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/state.py +61 -3
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/pyproject.toml +1 -1
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/.gitignore +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/LICENSE +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/agent.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/bridge.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/capabilities.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/commands.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/content.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/persistence.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/replay.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/session.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/session_config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/acp/state.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/downloader.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/installer.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/remote_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/skill_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/skills_install_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/background_agents/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/btw/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/btw/inline_view.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/btw/side_query.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/activation.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/backend.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/capture.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/commands.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/policy.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/safety.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/settle.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/state.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/computer_use/tools.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/fork/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/client.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/reporter.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/smoke.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/herdr/sources.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_manager/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/ollama/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/profiles/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/profiles/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/profiles/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/profiles/menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prune/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prune/prune_model.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prune/prune_render.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/session_namer/namer.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/spill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/spill/store.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/payload.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/runner.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/termflow_tui.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/README.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/content_styles.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/picker.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/theme/themes.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/judge.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/wiggum/state.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.52 → code_puppy_core_plugins-0.0.53}/code_puppy_core_plugins/yolo_cli/register_callbacks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: code-puppy-core-plugins
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.53
|
|
4
4
|
Summary: Official plugin bundle for Code Puppy
|
|
5
5
|
Project-URL: Repository, https://github.com/mpfaffenberger/code_puppy_core_plugins
|
|
6
6
|
Project-URL: Homepage, https://github.com/mpfaffenberger/code_puppy_core_plugins
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import inspect
|
|
5
5
|
import json
|
|
6
|
+
import time
|
|
6
7
|
from uuid import uuid4
|
|
7
8
|
|
|
8
9
|
from pydantic_ai import RunContext
|
|
@@ -13,6 +14,26 @@ _tasks: dict[str, asyncio.Task] = {}
|
|
|
13
14
|
_sessions: set[str] = set()
|
|
14
15
|
|
|
15
16
|
|
|
17
|
+
async def _publish_boundary(agent_name, prompt, result, started_at):
|
|
18
|
+
"""Publish the tool-equivalent completion signal for a detached run.
|
|
19
|
+
|
|
20
|
+
``_invoke_agent_impl`` is called directly here (not via pydantic-ai's tool
|
|
21
|
+
wrapper), so nobody fires ``post_tool_call`` for the sub-agent itself.
|
|
22
|
+
The subagent_panel relies on that event to retire the live row at the
|
|
23
|
+
run's own boundary -- without it a background row would sit on its last
|
|
24
|
+
streamed status forever (it now outlives the main turn). Mirrors /fork.
|
|
25
|
+
"""
|
|
26
|
+
from code_puppy.callbacks import on_post_tool_call
|
|
27
|
+
|
|
28
|
+
await on_post_tool_call(
|
|
29
|
+
"invoke_agent",
|
|
30
|
+
{"agent_name": agent_name, "prompt": prompt},
|
|
31
|
+
result,
|
|
32
|
+
(time.monotonic() - started_at) * 1000,
|
|
33
|
+
{"detached": True},
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
16
37
|
async def _run(task_id, owner, context, agent_name, prompt, session_id):
|
|
17
38
|
from code_puppy.agent_completion_inbox import deliver_completion
|
|
18
39
|
from code_puppy.tools.subagent_invocation import _invoke_agent_impl
|
|
@@ -24,6 +45,8 @@ async def _run(task_id, owner, context, agent_name, prompt, session_id):
|
|
|
24
45
|
if "background" in inspect.signature(_invoke_agent_impl).parameters:
|
|
25
46
|
extra["background"] = True
|
|
26
47
|
|
|
48
|
+
started_at = time.monotonic()
|
|
49
|
+
result = None
|
|
27
50
|
try:
|
|
28
51
|
result = await _invoke_agent_impl(
|
|
29
52
|
context=context,
|
|
@@ -41,6 +64,12 @@ async def _run(task_id, owner, context, agent_name, prompt, session_id):
|
|
|
41
64
|
finally:
|
|
42
65
|
_tasks.pop(task_id, None)
|
|
43
66
|
|
|
67
|
+
if result is not None:
|
|
68
|
+
try:
|
|
69
|
+
await _publish_boundary(agent_name, prompt, result, started_at)
|
|
70
|
+
except Exception:
|
|
71
|
+
pass # a panel hiccup must never eat the completion report
|
|
72
|
+
|
|
44
73
|
# A fixed prefix keeps output out of the REPL's command routing. JSON
|
|
45
74
|
# separates provenance from untrusted child output; no attachment expansion.
|
|
46
75
|
deliver_completion(
|
|
@@ -56,6 +56,13 @@ Milo is thinking... ( o )
|
|
|
56
56
|
(The redundant core "<check> <name> completed successfully" line is suppressed.)
|
|
57
57
|
Nested agents get a compact one-liner frozen record instead of the full block:
|
|
58
58
|
`<elbow> name (check) mm:ss completed model`.
|
|
59
|
+
- **Detached rows outlive the turn.** `FORK` and `BACKGROUND` runs are their own
|
|
60
|
+
asyncio tasks, so when the main agent's turn ends only the *foreground* swarm
|
|
61
|
+
is retired from the panel -- a still-running fork/background row keeps
|
|
62
|
+
ticking at the idle prompt until it finishes at its own boundary (the
|
|
63
|
+
launcher publishes a `post_tool_call` with `{"detached": True}`; `/fork`'s
|
|
64
|
+
older `{"detached_fork": True}` spelling is honoured too). Ctrl+C still
|
|
65
|
+
clears everything, because the cancel sweep takes detached runs down as well.
|
|
59
66
|
|
|
60
67
|
## How it works (3 monkeypatches, 1 callback -- no core edits)
|
|
61
68
|
|
|
@@ -21,6 +21,9 @@ Install strategy (startup monkeypatches of seams with no hook + callbacks):
|
|
|
21
21
|
but KEPT in the live tree (shown 'completed') so it never vanishes
|
|
22
22
|
mid-run; the whole subtree flushes to the transcript parent-first only
|
|
23
23
|
when its ROOT finishes, then is removed from the live tree.
|
|
24
|
+
DETACHED trees (/fork, background=True) outlive the main turn: end-of-
|
|
25
|
+
turn cleanup only retires the foreground swarm, so a detached row keeps
|
|
26
|
+
ticking at the idle prompt until its own ``post_tool_call`` boundary.
|
|
24
27
|
4. subagent_invocation.emit_success -> suppress the redundant
|
|
25
28
|
"<check> <name> completed successfully" line (it comes from the separate
|
|
26
29
|
message_queue system, NOT the bus, so it must be dropped at its source).
|
|
@@ -225,25 +228,35 @@ def _handle_frozen(console, session_id):
|
|
|
225
228
|
|
|
226
229
|
|
|
227
230
|
def _maybe_flush_group(console):
|
|
228
|
-
"""Flush the
|
|
229
|
-
|
|
230
|
-
running, completed agents stay grouped in the live panel (shown
|
|
231
|
-
so the panel remains a single cohesive block
|
|
231
|
+
"""Flush the settled panel rows to scrollback as one group (parent-first
|
|
232
|
+
DFS) -- but ONLY when the foreground swarm is idle. While any foreground
|
|
233
|
+
agent is running, completed agents stay grouped in the live panel (shown
|
|
234
|
+
'completed'), so the panel remains a single cohesive block.
|
|
235
|
+
|
|
236
|
+
Detached trees (/fork, background) whose root is still running are NOT
|
|
237
|
+
part of the group: they keep their live rows and flush at their own
|
|
238
|
+
boundary, exactly like the rest of their lifecycle.
|
|
232
239
|
"""
|
|
233
|
-
|
|
234
|
-
if
|
|
235
|
-
return
|
|
236
|
-
if any(not e.get("done") for e in rows):
|
|
240
|
+
state.snapshot() # idle-prune before deciding
|
|
241
|
+
if state.foreground_busy():
|
|
237
242
|
return # swarm still busy -- keep the panel grouped + live
|
|
238
243
|
if console is None:
|
|
239
244
|
return
|
|
240
|
-
|
|
245
|
+
settled = state.pop_settled()
|
|
246
|
+
if not settled:
|
|
247
|
+
return
|
|
241
248
|
console.print() # breathing room between the transcript and the group
|
|
242
|
-
for line in _row_lines(
|
|
249
|
+
for line in _row_lines(_ordered_tree(settled), frame=None):
|
|
243
250
|
console.print(line)
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
251
|
+
_retire_ticker_if_idle()
|
|
252
|
+
_push_panel(force=True) # collapse the flushed rows
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def _retire_ticker_if_idle() -> None:
|
|
256
|
+
"""Stop the clock only once nothing is left to clock -- a live detached
|
|
257
|
+
row still needs its mm:ss advancing after the foreground flushes."""
|
|
258
|
+
if not state.has_active():
|
|
259
|
+
_stop_ticker()
|
|
247
260
|
|
|
248
261
|
|
|
249
262
|
# Monkeypatch installers
|
|
@@ -442,11 +455,16 @@ async def _on_agent_run_end(
|
|
|
442
455
|
response_text=None,
|
|
443
456
|
metadata=None,
|
|
444
457
|
):
|
|
445
|
-
"""When the TOP-LEVEL turn ends,
|
|
458
|
+
"""When the TOP-LEVEL turn ends, retire the foreground swarm so a root that
|
|
446
459
|
errored or was cancelled (never flushed) can't leak its 'completed' children
|
|
447
|
-
into the next prompt's live block.
|
|
448
|
-
|
|
449
|
-
|
|
460
|
+
into the next prompt's live block.
|
|
461
|
+
|
|
462
|
+
Detached trees (/fork, background) that are still running SURVIVE: their
|
|
463
|
+
task outlives the turn, so their live row does too -- the panel keeps
|
|
464
|
+
ticking at the idle prompt until they finish at their own boundary.
|
|
465
|
+
|
|
466
|
+
Only fires for the main agent -- sub-agent runs go through
|
|
467
|
+
temp_agent.run(), not _runtime, and is_subagent() guards the rest.
|
|
450
468
|
"""
|
|
451
469
|
if not _runtime_enabled():
|
|
452
470
|
return
|
|
@@ -458,10 +476,10 @@ async def _on_agent_run_end(
|
|
|
458
476
|
except Exception:
|
|
459
477
|
pass
|
|
460
478
|
try:
|
|
461
|
-
state.
|
|
479
|
+
state.pop_settled() # discard foreground leftovers; detached rows stay
|
|
462
480
|
except Exception:
|
|
463
481
|
pass
|
|
464
|
-
|
|
482
|
+
_retire_ticker_if_idle() # never leave an orphan clock task
|
|
465
483
|
_push_panel(force=True)
|
|
466
484
|
|
|
467
485
|
|
|
@@ -483,6 +501,15 @@ async def _on_agent_run_cancel(group_id=None):
|
|
|
483
501
|
_push_panel(force=True)
|
|
484
502
|
|
|
485
503
|
|
|
504
|
+
def _is_detached_context(context) -> bool:
|
|
505
|
+
"""Did a detached launcher (/fork or background_agents) publish this
|
|
506
|
+
``post_tool_call``? Both keys mean the same thing; ``detached_fork`` is
|
|
507
|
+
the older spelling kept so an older /fork plugin still retires its row."""
|
|
508
|
+
if not isinstance(context, dict):
|
|
509
|
+
return False
|
|
510
|
+
return bool(context.get("detached") or context.get("detached_fork"))
|
|
511
|
+
|
|
512
|
+
|
|
486
513
|
async def _on_post_tool_call(tool_name, tool_args, result, duration_ms, context=None):
|
|
487
514
|
"""Authoritative completion **state** signal for sub-agent invocations.
|
|
488
515
|
|
|
@@ -525,9 +552,10 @@ async def _on_post_tool_call(tool_name, tool_args, result, duration_ms, context=
|
|
|
525
552
|
if not sid:
|
|
526
553
|
return
|
|
527
554
|
try:
|
|
528
|
-
# Keep ordinary calls until their foreground root flushes; detached
|
|
529
|
-
# have no root, so finish them at
|
|
530
|
-
|
|
555
|
+
# Keep ordinary calls until their foreground root flushes; detached
|
|
556
|
+
# runs (/fork, background) have no foreground root, so finish them at
|
|
557
|
+
# their own boundary. ``detached_fork`` is the legacy key /fork sends.
|
|
558
|
+
if _is_detached_context(context):
|
|
531
559
|
state.finish(sid)
|
|
532
560
|
else:
|
|
533
561
|
err = getattr(result, "error", None)
|
|
@@ -112,13 +112,71 @@ def mark_failed(session_id: Optional[str]) -> None:
|
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
def clear() -> None:
|
|
115
|
-
"""Drop ALL tracked sub-agents
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
"""Drop ALL tracked sub-agents -- detached ones included. Reserved for the
|
|
116
|
+
cancel path (Ctrl+C takes forks/background agents down too) and for the
|
|
117
|
+
runtime off-switch; ordinary end-of-turn cleanup is ``pop_settled``."""
|
|
118
118
|
with _LOCK:
|
|
119
119
|
_AGENTS.clear()
|
|
120
120
|
|
|
121
121
|
|
|
122
|
+
# Detached trees (/fork + background) outlive the turn that started them
|
|
123
|
+
def is_detached(entry: Dict[str, Any]) -> bool:
|
|
124
|
+
"""A ``/fork`` or ``background=True`` launch: its lifetime is its own task,
|
|
125
|
+
not the main agent's turn, so end-of-turn cleanup must leave it alone."""
|
|
126
|
+
return bool(entry.get("is_fork") or entry.get("background"))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _root_id(agents: Dict[str, Dict[str, Any]], session_id: str) -> str:
|
|
130
|
+
"""Walk the parent chain to the tree root. A parent that isn't registered
|
|
131
|
+
(the main agent, or None) makes the row a root. Cycle-safe."""
|
|
132
|
+
seen = set()
|
|
133
|
+
while True:
|
|
134
|
+
parent = agents[session_id].get("parent")
|
|
135
|
+
if not parent or parent not in agents or parent in seen:
|
|
136
|
+
return session_id
|
|
137
|
+
seen.add(session_id)
|
|
138
|
+
session_id = parent
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _live_detached_ids(agents: Dict[str, Dict[str, Any]]) -> set:
|
|
142
|
+
"""Session ids of every row (root + descendants) in a detached tree whose
|
|
143
|
+
root is still running."""
|
|
144
|
+
live = set()
|
|
145
|
+
for sid in agents:
|
|
146
|
+
root = agents[_root_id(agents, sid)]
|
|
147
|
+
if is_detached(root) and not root.get("done"):
|
|
148
|
+
live.add(sid)
|
|
149
|
+
return live
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def foreground_busy() -> bool:
|
|
153
|
+
"""True while anything OUTSIDE a live detached tree is still running --
|
|
154
|
+
i.e. the foreground swarm hasn't gone idle yet, so nothing may flush."""
|
|
155
|
+
with _LOCK:
|
|
156
|
+
live = _live_detached_ids(_AGENTS)
|
|
157
|
+
return any(
|
|
158
|
+
not entry.get("done") for sid, entry in _AGENTS.items() if sid not in live
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def pop_settled() -> List[Dict[str, Any]]:
|
|
163
|
+
"""Remove and return every row NOT in a live detached tree (oldest first).
|
|
164
|
+
|
|
165
|
+
Live detached trees stay registered: a fork or background agent keeps
|
|
166
|
+
its live row across turn boundaries until it finishes at its own
|
|
167
|
+
boundary (``finish`` / ``mark_done``). Everything else -- the foreground
|
|
168
|
+
swarm, plus detached trees that already completed -- is handed back to
|
|
169
|
+
the caller to flush as frozen records (or discard at end of turn, when a
|
|
170
|
+
root that errored/was cancelled never flushed).
|
|
171
|
+
"""
|
|
172
|
+
with _LOCK:
|
|
173
|
+
live = _live_detached_ids(_AGENTS)
|
|
174
|
+
settled = [entry for sid, entry in _AGENTS.items() if sid not in live]
|
|
175
|
+
for entry in settled:
|
|
176
|
+
_AGENTS.pop(entry["session_id"], None)
|
|
177
|
+
return sorted(settled, key=lambda e: e["start"])
|
|
178
|
+
|
|
179
|
+
|
|
122
180
|
# Live status (stream_event updates only)
|
|
123
181
|
def record_event(session_id: Optional[str], event_type: str, event_data: Any) -> None:
|
|
124
182
|
if not session_id:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|