code-puppy-core-plugins 0.0.80__tar.gz → 0.0.82__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.80 → code_puppy_core_plugins-0.0.82}/PKG-INFO +1 -1
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/permissions.py +83 -20
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +4 -2
- code_puppy_core_plugins-0.0.82/code_puppy_core_plugins/spill/__init__.py +1 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/spill/register_callbacks.py +51 -14
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/pyproject.toml +1 -1
- code_puppy_core_plugins-0.0.80/code_puppy_core_plugins/spill/__init__.py +0 -1
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/.gitignore +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/LICENSE +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/THIRD_PARTY_NOTICES.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/agent.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/bridge.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/capabilities.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/commands.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/content.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/persistence.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/replay.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/session.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/session_config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/state.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/attachment_references/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/attachment_references/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/attachment_references/tool.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/background_agents/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/inline_view.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/side_query.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/FOCUS_INVESTIGATION.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/PARITY.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/WINDOWS.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/activation.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/backend.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/batch.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/capture.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/commands.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/locales/fr-CA.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/macos_backend.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/policy.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/safety.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/settle.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/state.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/tools.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_activation.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_backend.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_capture.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_input.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_native.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_runtime.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/fork/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/client.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/command_intent.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/launch_command.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/launcher.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/reporter.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/restore.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/smoke.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/sources.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/chunks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/judge.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/retrieve.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/search.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/structure.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/tool.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/treesitter.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/custom_install.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/http_form.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_settings.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/prune_model.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/prune_render.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/session_namer/namer.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/spill/store.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/payload.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/runner.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/termflow_tui.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/README.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/content_styles.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/picker.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/themes.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/judge.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/state.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/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.82
|
|
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
|
|
@@ -13,6 +13,9 @@ logic or forcing yolo mode:
|
|
|
13
13
|
and already runs on the ACP loop, so it can ``await`` the client directly.
|
|
14
14
|
|
|
15
15
|
Both edges fail **closed** (deny) if the connection is gone or the client errors.
|
|
16
|
+
A denial nobody chose -- a cancelled, failed or timed-out request, or an option
|
|
17
|
+
we do not recognize -- is reported as ``PermissionNotDecided`` rather than as the
|
|
18
|
+
user rejecting the operation, so the model is not told the user said no.
|
|
16
19
|
"""
|
|
17
20
|
|
|
18
21
|
from __future__ import annotations
|
|
@@ -27,6 +30,14 @@ from acp.schema import PermissionOption, ToolCallUpdate
|
|
|
27
30
|
from code_puppy.callbacks import register_callback
|
|
28
31
|
from code_puppy_core_plugins.acp import state
|
|
29
32
|
|
|
33
|
+
try:
|
|
34
|
+
from code_puppy.tools.file_permission_state import PermissionNotDecided
|
|
35
|
+
except ImportError: # pragma: no cover - code_puppy without the marker type
|
|
36
|
+
|
|
37
|
+
class PermissionNotDecided(str): # type: ignore[no-redef]
|
|
38
|
+
"""Stand-in for older cores, which report every denial as a rejection."""
|
|
39
|
+
|
|
40
|
+
|
|
30
41
|
logger = logging.getLogger(__name__)
|
|
31
42
|
|
|
32
43
|
# How long to wait for a human in the client to answer a permission dialog. Dialogs
|
|
@@ -39,6 +50,7 @@ _OPTIONS = [
|
|
|
39
50
|
PermissionOption(option_id="reject_once", name="Reject", kind="reject_once"),
|
|
40
51
|
]
|
|
41
52
|
_ALLOW_IDS = {"allow_once"}
|
|
53
|
+
_REJECT_IDS = {"reject_once"}
|
|
42
54
|
|
|
43
55
|
|
|
44
56
|
def _tool_call_ref(title: str) -> ToolCallUpdate:
|
|
@@ -55,24 +67,55 @@ def _tool_call_ref(title: str) -> ToolCallUpdate:
|
|
|
55
67
|
return ToolCallUpdate(tool_call_id=f"perm_{uuid.uuid4().hex[:12]}", title=title)
|
|
56
68
|
|
|
57
69
|
|
|
58
|
-
async def
|
|
59
|
-
|
|
70
|
+
async def _ask_client_outcome(
|
|
71
|
+
session_id: str, title: str
|
|
72
|
+
) -> Tuple[bool, Optional[PermissionNotDecided]]:
|
|
73
|
+
"""Show an allow/deny dialog in the client.
|
|
74
|
+
|
|
75
|
+
Returns ``(True, None)`` when allowed and ``(False, None)`` when a person
|
|
76
|
+
selected Reject. Every other denial -- no connection, a failed or
|
|
77
|
+
timed-out request, a cancelled dialog, an unknown option -- returns
|
|
78
|
+
``(False, PermissionNotDecided(reason))``.
|
|
79
|
+
"""
|
|
60
80
|
connection = state.get_connection()
|
|
61
81
|
if connection is None:
|
|
62
|
-
return False
|
|
82
|
+
return False, PermissionNotDecided("The client connection is unavailable.")
|
|
63
83
|
try:
|
|
64
|
-
response = await
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
84
|
+
response = await asyncio.wait_for(
|
|
85
|
+
connection.request_permission(
|
|
86
|
+
options=list(_OPTIONS),
|
|
87
|
+
session_id=session_id,
|
|
88
|
+
tool_call=_tool_call_ref(title),
|
|
89
|
+
),
|
|
90
|
+
timeout=_PERMISSION_TIMEOUT_S,
|
|
68
91
|
)
|
|
92
|
+
except asyncio.TimeoutError:
|
|
93
|
+
logger.warning("session/request_permission timed out; denying")
|
|
94
|
+
return False, PermissionNotDecided("The permission request timed out.")
|
|
69
95
|
except Exception: # noqa: BLE001
|
|
70
96
|
logger.exception("session/request_permission failed; denying")
|
|
71
|
-
return False
|
|
97
|
+
return False, PermissionNotDecided(
|
|
98
|
+
"The permission request could not be completed."
|
|
99
|
+
)
|
|
72
100
|
outcome = getattr(response, "outcome", None)
|
|
73
101
|
if getattr(outcome, "outcome", None) == "selected":
|
|
74
|
-
|
|
75
|
-
|
|
102
|
+
option_id = getattr(outcome, "option_id", None)
|
|
103
|
+
if option_id in _ALLOW_IDS:
|
|
104
|
+
return True, None
|
|
105
|
+
if option_id in _REJECT_IDS:
|
|
106
|
+
return False, None
|
|
107
|
+
return False, PermissionNotDecided(
|
|
108
|
+
"The client returned an unknown permission choice."
|
|
109
|
+
)
|
|
110
|
+
return False, PermissionNotDecided(
|
|
111
|
+
"The permission request was cancelled without a decision."
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
async def _ask_client(session_id: str, title: str) -> bool:
|
|
116
|
+
"""Show an allow/deny dialog in the client; return ``True`` if allowed."""
|
|
117
|
+
allowed, _ = await _ask_client_outcome(session_id, title)
|
|
118
|
+
return allowed
|
|
76
119
|
|
|
77
120
|
|
|
78
121
|
def _approval_backend(
|
|
@@ -80,13 +123,15 @@ def _approval_backend(
|
|
|
80
123
|
) -> Tuple[bool, Optional[str]]:
|
|
81
124
|
"""Approval backend for file ops; asks the client from the tool threadpool.
|
|
82
125
|
|
|
83
|
-
Returns ``(approved, feedback)``.
|
|
84
|
-
|
|
126
|
+
Returns ``(approved, feedback)``. The client's dialog is yes/no, not a
|
|
127
|
+
free-text channel, so feedback is ``None`` for an allow or a Reject, and a
|
|
128
|
+
``PermissionNotDecided`` when the operation was denied without anyone
|
|
129
|
+
choosing Reject.
|
|
85
130
|
"""
|
|
86
131
|
loop = state.get_loop()
|
|
87
132
|
session_id = state.get_active_session_id()
|
|
88
133
|
if loop is None or session_id is None:
|
|
89
|
-
return False,
|
|
134
|
+
return False, PermissionNotDecided("No client is available to ask.")
|
|
90
135
|
|
|
91
136
|
# Guard against being called on the loop thread itself: blocking on
|
|
92
137
|
# run_coroutine_threadsafe there would deadlock (file tools run off-loop).
|
|
@@ -96,17 +141,24 @@ def _approval_backend(
|
|
|
96
141
|
running = None
|
|
97
142
|
if running is loop:
|
|
98
143
|
logger.error("Approval backend hit on the ACP loop; denying to avoid deadlock")
|
|
99
|
-
return False,
|
|
144
|
+
return False, PermissionNotDecided(
|
|
145
|
+
"The permission request could not be completed."
|
|
146
|
+
)
|
|
100
147
|
|
|
101
|
-
future = asyncio.run_coroutine_threadsafe(
|
|
148
|
+
future = asyncio.run_coroutine_threadsafe(
|
|
149
|
+
_ask_client_outcome(session_id, title), loop
|
|
150
|
+
)
|
|
102
151
|
try:
|
|
103
|
-
|
|
152
|
+
# A little longer than the request's own timeout, which answers first.
|
|
153
|
+
allowed, not_decided = future.result(_PERMISSION_TIMEOUT_S + 5)
|
|
104
154
|
except Exception: # noqa: BLE001 - includes TimeoutError
|
|
105
155
|
# Abandon the in-flight request so it doesn't linger on the loop.
|
|
106
156
|
future.cancel()
|
|
107
157
|
logger.exception("ACP approval bridge failed; denying")
|
|
108
|
-
return False,
|
|
109
|
-
|
|
158
|
+
return False, PermissionNotDecided(
|
|
159
|
+
"The permission request could not be completed."
|
|
160
|
+
)
|
|
161
|
+
return bool(allowed), not_decided
|
|
110
162
|
|
|
111
163
|
|
|
112
164
|
async def _on_run_shell_command(
|
|
@@ -123,15 +175,26 @@ async def _on_run_shell_command(
|
|
|
123
175
|
auto-approve file writes yet still prompt for every shell command.
|
|
124
176
|
"""
|
|
125
177
|
session_id = state.get_active_session_id()
|
|
126
|
-
if
|
|
178
|
+
if session_id is None:
|
|
127
179
|
return None
|
|
128
180
|
from code_puppy.config import get_yolo_mode
|
|
129
181
|
|
|
130
182
|
if get_yolo_mode():
|
|
131
183
|
return None
|
|
132
|
-
allowed = await
|
|
184
|
+
allowed, not_decided = await _ask_client_outcome(
|
|
185
|
+
session_id, f"Run shell command: {command}"
|
|
186
|
+
)
|
|
133
187
|
if allowed:
|
|
134
188
|
return None
|
|
189
|
+
if not_decided is not None:
|
|
190
|
+
return {
|
|
191
|
+
"blocked": True,
|
|
192
|
+
"error_message": "Permission not granted",
|
|
193
|
+
"reasoning": (
|
|
194
|
+
f"{not_decided} The command was not run. The user did not "
|
|
195
|
+
"reject it; do not say they did."
|
|
196
|
+
),
|
|
197
|
+
}
|
|
135
198
|
return {
|
|
136
199
|
"blocked": True,
|
|
137
200
|
"error_message": "Command rejected in the client",
|
|
@@ -80,8 +80,10 @@ did to your config are two separate actions.
|
|
|
80
80
|
|
|
81
81
|
The builtin `spill` plugin saves oversized top-level string fields to
|
|
82
82
|
private files and substitutes bounded head/tail previews with retrieval
|
|
83
|
-
guidance. It
|
|
84
|
-
|
|
83
|
+
guidance. It handles both dict results and Pydantic `BaseModel` results
|
|
84
|
+
(most built-in tools return the latter), and leaves error-only and other
|
|
85
|
+
result shapes untouched. It skips `read_file` by default to avoid a read →
|
|
86
|
+
spill → read loop.
|
|
85
87
|
|
|
86
88
|
| `puppy.cfg` key | Default | Meaning |
|
|
87
89
|
|-----------------|---------|---------|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Keep oversized dict- and BaseModel-shaped tool results out of context."""
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
"""Plugin: spill oversized dict-shaped tool results to
|
|
1
|
+
"""Plugin: spill oversized dict- and BaseModel-shaped tool results to files.
|
|
2
2
|
|
|
3
3
|
Ported from DeepSeek Harness's MIT-licensed spill design. See
|
|
4
4
|
``LICENSE.deepseek`` in this package for its copyright and license notice.
|
|
5
5
|
|
|
6
|
-
The post-tool hook receives the same
|
|
6
|
+
The post-tool hook receives the same result object that Code Puppy later
|
|
7
7
|
serializes for the model, so this plugin can replace top-level string fields
|
|
8
|
-
in place
|
|
9
|
-
|
|
8
|
+
in place — for dicts via item assignment, for Pydantic ``BaseModel`` results
|
|
9
|
+
via attribute assignment. Other results (notably plain strings) cannot be
|
|
10
|
+
replaced through this hook and are deliberately left untouched.
|
|
10
11
|
|
|
11
12
|
When the combined UTF-8 size of top-level string values exceeds the configured
|
|
12
13
|
cap, fields are considered largest-first. Their full text is saved verbatim,
|
|
@@ -33,6 +34,8 @@ import math
|
|
|
33
34
|
from pathlib import Path
|
|
34
35
|
from typing import Any
|
|
35
36
|
|
|
37
|
+
from pydantic import BaseModel
|
|
38
|
+
|
|
36
39
|
from code_puppy.callbacks import register_callback, unregister_callback
|
|
37
40
|
|
|
38
41
|
from . import store
|
|
@@ -190,9 +193,37 @@ def _build_replacement(
|
|
|
190
193
|
budget = max(0, budget - max(1, replacement_bytes - limit))
|
|
191
194
|
|
|
192
195
|
|
|
193
|
-
def
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
def _field_map(result: Any) -> dict | None:
|
|
197
|
+
"""Return a mutable mapping view of a dict or BaseModel result."""
|
|
198
|
+
if isinstance(result, dict):
|
|
199
|
+
return result
|
|
200
|
+
if isinstance(result, BaseModel):
|
|
201
|
+
try:
|
|
202
|
+
return dict(result)
|
|
203
|
+
except Exception:
|
|
204
|
+
return None
|
|
205
|
+
return None
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _commit_replacements(result: Any, replacements: dict) -> None:
|
|
209
|
+
if isinstance(result, dict):
|
|
210
|
+
result.update(replacements)
|
|
211
|
+
return
|
|
212
|
+
applied: dict = {}
|
|
213
|
+
try:
|
|
214
|
+
for key, value in replacements.items():
|
|
215
|
+
applied[key] = getattr(result, key)
|
|
216
|
+
setattr(result, key, value)
|
|
217
|
+
except Exception:
|
|
218
|
+
for key, value in applied.items():
|
|
219
|
+
try:
|
|
220
|
+
setattr(result, key, value)
|
|
221
|
+
except Exception:
|
|
222
|
+
pass
|
|
223
|
+
raise
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
def _spill_result(tool_name: str, result: Any, session_id: str | None = None) -> None:
|
|
196
227
|
cap = _get_int(MAX_INLINE_KEY, DEFAULT_MAX_INLINE_BYTES)
|
|
197
228
|
if cap <= 0 or tool_name in _get_skip_tools():
|
|
198
229
|
return
|
|
@@ -205,11 +236,14 @@ def _spill_result(
|
|
|
205
236
|
)
|
|
206
237
|
preview_bytes = DEFAULT_PREVIEW_BYTES
|
|
207
238
|
|
|
208
|
-
fields = [
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
239
|
+
fields = []
|
|
240
|
+
field_map = _field_map(result)
|
|
241
|
+
if field_map is not None:
|
|
242
|
+
fields = [
|
|
243
|
+
(key, value, _byte_size(value))
|
|
244
|
+
for key, value in field_map.items()
|
|
245
|
+
if isinstance(value, str)
|
|
246
|
+
]
|
|
213
247
|
total = sum(size for _, _, size in fields)
|
|
214
248
|
if total <= cap:
|
|
215
249
|
return
|
|
@@ -262,7 +296,7 @@ def _spill_result(
|
|
|
262
296
|
# Commit atomically. A partial preview set that still exceeds the cap is
|
|
263
297
|
# neither bounded nor graceful; keep every original inline in that case.
|
|
264
298
|
if total <= cap:
|
|
265
|
-
result
|
|
299
|
+
_commit_replacements(result, replacements)
|
|
266
300
|
|
|
267
301
|
|
|
268
302
|
async def _on_post_tool_call(
|
|
@@ -275,7 +309,10 @@ async def _on_post_tool_call(
|
|
|
275
309
|
"""Spill oversized string fields off the event loop without breaking calls."""
|
|
276
310
|
_ = tool_args, duration_ms, context
|
|
277
311
|
try:
|
|
278
|
-
if not isinstance(result, dict
|
|
312
|
+
if not isinstance(result, (dict, BaseModel)):
|
|
313
|
+
return
|
|
314
|
+
field_map = _field_map(result)
|
|
315
|
+
if field_map is None or set(field_map) == {"error"}:
|
|
279
316
|
return
|
|
280
317
|
spill_config = _get_executing_agent_spill_config()
|
|
281
318
|
if not _is_enabled_for_executing_agent(spill_config):
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"""Keep oversized dict-shaped tool results out of model context."""
|
|
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
|