code-puppy-core-plugins 0.0.77__tar.gz → 0.0.79__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.77 → code_puppy_core_plugins-0.0.79}/PKG-INFO +1 -1
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +1 -1
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +20 -6
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +13 -6
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +2 -2
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/README.md +156 -0
- code_puppy_core_plugins-0.0.79/code_puppy_core_plugins/herdr/command_intent.py +109 -0
- code_puppy_core_plugins-0.0.79/code_puppy_core_plugins/herdr/launch_command.py +29 -0
- code_puppy_core_plugins-0.0.79/code_puppy_core_plugins/herdr/launcher.py +418 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/register_callbacks.py +41 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/reporter.py +16 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/sources.py +25 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/pyproject.toml +1 -2
- code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -5
- code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -208
- code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -218
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/.gitignore +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/LICENSE +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/THIRD_PARTY_NOTICES.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/agent.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/bridge.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/capabilities.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/content.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/persistence.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/replay.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/session.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/session_config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/acp/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/attachment_references/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/attachment_references/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/attachment_references/tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/background_agents/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/btw/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/btw/inline_view.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/btw/side_query.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/FOCUS_INVESTIGATION.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/PARITY.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/WINDOWS.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/activation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/backend.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/batch.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/capture.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/locales/fr-CA.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/macos_backend.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/policy.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/safety.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/settle.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/tools.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_activation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_backend.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_capture.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_input.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_native.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/computer_use/windows_runtime.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/fork/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/client.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/restore.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/herdr/smoke.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_manager/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/chunks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/judge.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/retrieve.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/search.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/structure.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/jev_grep/treesitter.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/mcp_binding_prompt/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/mcp_binding_prompt/custom_install.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/mcp_binding_prompt/http_form.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/mcp_binding_prompt/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/ollama/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/plugin_settings.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/profiles/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/profiles/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/profiles/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/profiles/menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prune/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prune/prune_model.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prune/prune_render.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/session_namer/namer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/spill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/spill/store.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/payload.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/runner.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/termflow_tui.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/content_styles.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/picker.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/theme/themes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/judge.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/wiggum/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.79}/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.79
|
|
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
|
|
@@ -134,7 +134,7 @@ register_callback("register_agent_tools", _advertise)
|
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
Step 1 makes the tool *exist*; step 2 makes agents *see* it. Both are
|
|
137
|
-
needed. `namespace_skill_search` (`
|
|
137
|
+
needed. `namespace_skill_search` (`code_puppy_core_plugins/namespace_skill_search/`)
|
|
138
138
|
is a small, complete example of this pattern for a single tool
|
|
139
139
|
(`browse_skill_namespace`) — see `SKILLS_SYSTEM.md` for what it does and
|
|
140
140
|
`PLUGINS_AND_CALLBACKS.md` for the callback-safety reasoning behind how
|
|
@@ -10,12 +10,26 @@
|
|
|
10
10
|
|
|
11
11
|
| Tier | Location | Load order |
|
|
12
12
|
|------|----------|------------|
|
|
13
|
-
| **Builtin** | `code_puppy
|
|
13
|
+
| **Builtin** | `code_puppy.plugins` entry points, shipped by the separate `code-puppy-core-plugins` distribution | 1st |
|
|
14
14
|
| **User** | `~/.code_puppy/plugins/<name>/register_callbacks.py` | 2nd |
|
|
15
15
|
| **Project** | `<CWD>/.code_puppy/plugins/<name>/register_callbacks.py` | 3rd (highest precedence) |
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
The builtin tier is **not** a directory scan of the core package. Plugins live
|
|
18
|
+
in their own repo (`code_puppy_core_plugins/<name>/register_callbacks.py`) and
|
|
19
|
+
are advertised through the `code_puppy.plugins` entry-point group in that
|
|
20
|
+
package's `pyproject.toml`; `_load_installed_plugins()` loads them sorted by
|
|
21
|
+
name for deterministic startup. Adding a plugin there means adding an entry
|
|
22
|
+
point, not just a directory.
|
|
23
|
+
|
|
24
|
+
Inside core, `code_puppy/plugins/` is now only the **loader and trust
|
|
25
|
+
machinery** (`__init__.py`, `trust.py`, `trust_notice.py`, `config.py`, plus the
|
|
26
|
+
OAuth pasteback helpers) — not a plugin collection. A legacy directory scan of
|
|
27
|
+
it still runs via `_load_builtin_plugins()` for migration, skipping any name
|
|
28
|
+
already loaded from an entry point, so `builtin = installed + legacy`.
|
|
29
|
+
|
|
30
|
+
User and project tiers *are* plain directory scans: each plugin is a directory
|
|
31
|
+
containing `register_callbacks.py`, auto-discovered by the loader. Project
|
|
32
|
+
plugins shadow user plugins on name collision.
|
|
19
33
|
|
|
20
34
|
## The callback hook system
|
|
21
35
|
|
|
@@ -82,7 +96,7 @@ That's it. The loader handles discovery, import, and registration.
|
|
|
82
96
|
|
|
83
97
|
## Two gotchas that will bite you, both discovered building `namespace_skill_search`
|
|
84
98
|
|
|
85
|
-
`namespace_skill_search` (`
|
|
99
|
+
`namespace_skill_search` (`code_puppy_core_plugins/namespace_skill_search/`)
|
|
86
100
|
groups skills into namespaces and replaces the flat per-skill list in the
|
|
87
101
|
system prompt with a compact directory + a `browse_skill_namespace` tool
|
|
88
102
|
(see `SKILLS_SYSTEM.md` for what it does from a user's perspective). It's
|
|
@@ -123,7 +137,7 @@ is:
|
|
|
123
137
|
happens to get imported, with no log line tied to a specific lifecycle
|
|
124
138
|
event.
|
|
125
139
|
- **A pattern already solved by the `startup` callback.** See
|
|
126
|
-
`
|
|
140
|
+
`code_puppy_core_plugins/theme/register_callbacks.py`'s
|
|
127
141
|
`_apply_default_theme_on_first_run`, registered via
|
|
128
142
|
`register_callback("startup", _apply_default_theme_on_first_run)`.
|
|
129
143
|
|
|
@@ -157,7 +171,7 @@ my_plugin/
|
|
|
157
171
|
|
|
158
172
|
For a plugin that also ships a builtin skill via `register_skills`
|
|
159
173
|
(rather than, or in addition to, tools/prompt fragments), see
|
|
160
|
-
`
|
|
174
|
+
`code_puppy_core_plugins/code_puppy_agent/` (this skill's own plugin) or
|
|
161
175
|
`namespace_skill_search`'s README for a fuller worked example of
|
|
162
176
|
justifying design decisions in-repo rather than only in a PR
|
|
163
177
|
description.
|
|
@@ -39,16 +39,23 @@ LLM how Code Puppy is structured under the hood so it can navigate the
|
|
|
39
39
|
codebase, debug issues, and extend the product without guessing.
|
|
40
40
|
|
|
41
41
|
> **Philosophy:** Code Puppy is plugin-first. Nearly all new functionality
|
|
42
|
-
> should be a plugin
|
|
43
|
-
> `code_puppy/callbacks.py`. Don't edit
|
|
44
|
-
> agent files unless a hook genuinely
|
|
42
|
+
> should be a plugin in the separate `code-puppy-core-plugins` repo that hooks
|
|
43
|
+
> into core via `code_puppy/callbacks.py`. Don't edit
|
|
44
|
+
> `code_puppy/command_line/` or core agent files unless a hook genuinely
|
|
45
|
+
> doesn't exist.
|
|
46
|
+
|
|
47
|
+
> **Two repos.** Core (the `code-puppy` package) holds the runtime, agents,
|
|
48
|
+
> tools, and the callback engine. Plugins (the `code-puppy-core-plugins`
|
|
49
|
+
> package, this skill included) ship separately and are discovered through
|
|
50
|
+
> `code_puppy.plugins` entry points. Paths below starting `code_puppy/` are in
|
|
51
|
+
> core; paths starting `code_puppy_core_plugins/` are in the plugins repo.
|
|
45
52
|
|
|
46
53
|
This skill is split across multiple files so activating it doesn't force
|
|
47
54
|
the full ~30KB of internals into context on every use — this SKILL.md is
|
|
48
55
|
the index. **Read the reference file for the topic you actually need**;
|
|
49
56
|
each one is self-contained and cites real file paths so you can jump
|
|
50
57
|
straight to source. All reference files are plain repo paths under
|
|
51
|
-
`
|
|
58
|
+
`code_puppy_core_plugins/code_puppy_agent/` — read them with `read_file`.
|
|
52
59
|
|
|
53
60
|
---
|
|
54
61
|
|
|
@@ -56,7 +63,7 @@ straight to source. All reference files are plain repo paths under
|
|
|
56
63
|
|
|
57
64
|
```
|
|
58
65
|
┌──────────────────────────────────────────────────┐
|
|
59
|
-
│ TUI / CLI (command_line/,
|
|
66
|
+
│ TUI / CLI (command_line/, messaging/) │
|
|
60
67
|
│ user input → slash commands → agent dispatch │
|
|
61
68
|
├──────────────────────────────────────────────────┤
|
|
62
69
|
│ Agent Layer (agents/) │
|
|
@@ -66,7 +73,7 @@ straight to source. All reference files are plain repo paths under
|
|
|
66
73
|
│ Tool Layer (tools/) │
|
|
67
74
|
│ TOOL_REGISTRY → register_tools_for_agent() │
|
|
68
75
|
├──────────────────────────────────────────────────┤
|
|
69
|
-
│ Plugin Layer (
|
|
76
|
+
│ Plugin Layer (callbacks.py + plugins/ loader) │
|
|
70
77
|
│ register_callback("hook", fn) at import time │
|
|
71
78
|
├──────────────────────────────────────────────────┤
|
|
72
79
|
│ Model Layer (model_factory.py, config.py) │
|
|
@@ -72,7 +72,7 @@ real path in the repo rather than expecting it to appear as a
|
|
|
72
72
|
## Skill namespaces (large catalogs)
|
|
73
73
|
|
|
74
74
|
The **`namespace_skill_search`** builtin plugin
|
|
75
|
-
(`
|
|
75
|
+
(`code_puppy_core_plugins/namespace_skill_search/`) addresses the
|
|
76
76
|
flat-list-doesn't-scale problem above. It's the reference
|
|
77
77
|
implementation to look at if you're extending how skills are surfaced
|
|
78
78
|
to the model, or building something in the same spirit for another
|
|
@@ -95,7 +95,7 @@ modes with examples, and how to opt back out
|
|
|
95
95
|
(`/plugins disable namespace_skill_search` + `/skills frontmatter on`).
|
|
96
96
|
|
|
97
97
|
**Design rationale + what was deliberately not built:**
|
|
98
|
-
`
|
|
98
|
+
`code_puppy_core_plugins/namespace_skill_search/README.md` — full writeup of
|
|
99
99
|
what was copied from OpenAI/Anthropic, why namespace-per-first-tag was
|
|
100
100
|
chosen over a vector DB or a deep multi-level tree, and the two hook-
|
|
101
101
|
system gotchas it was built to avoid (see `PLUGINS_AND_CALLBACKS.md` in
|
|
@@ -26,6 +26,162 @@ no worker thread. If they're present it opens a background reporter that
|
|
|
26
26
|
reports code-puppy's state **authoritatively**: herdr never has to infer
|
|
27
27
|
it from the screen.
|
|
28
28
|
|
|
29
|
+
## Launch and prompt another puppy
|
|
30
|
+
|
|
31
|
+
From a Code Puppy running inside herdr:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
/herdr spawn fixer --prompt-file brief.md
|
|
35
|
+
/herdr spawn reviewer --direction down --cwd ./project --prompt-file review.md -- --model MODEL
|
|
36
|
+
/herdr send fixer Don't forget the tests
|
|
37
|
+
/herdr send fixer --file follow-up.txt
|
|
38
|
+
/herdr commands
|
|
39
|
+
/herdr command fixer /model gpt-5
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`spawn` creates a sibling split in the caller's tab, preserves the caller's
|
|
43
|
+
working directory unless `--cwd` is given, and does not change focus. Wide
|
|
44
|
+
panes split right; tall or approximately square panes split down (cell width
|
|
45
|
+
must exceed twice the cell height to count as wide). `--direction` overrides
|
|
46
|
+
that choice. Names must match `[a-z][a-z0-9_-]{0,31}` and be unique among
|
|
47
|
+
live agents. Invalid names, duplicate names, unreadable prompt files, and
|
|
48
|
+
invalid options are rejected before splitting.
|
|
49
|
+
|
|
50
|
+
The child uses the current Python interpreter with safe-path `-P` and the
|
|
51
|
+
installed `code_puppy` module,
|
|
52
|
+
not a shell alias, cwd-relative console wrapper, or executable from `PATH`.
|
|
53
|
+
`-P` excludes the child's cwd from Python's module search path. Caller
|
|
54
|
+
interpreter flags are deliberately not inherited; only child arguments
|
|
55
|
+
explicitly supplied after `--` are forwarded. Without a prompt the launcher
|
|
56
|
+
waits for reported idle. With a prompt it accepts the first Code Puppy report
|
|
57
|
+
in any state, names the child and returns without waiting for task completion.
|
|
58
|
+
Startup timeout is 30 seconds by default (`--timeout SECONDS`, up to 300).
|
|
59
|
+
A failed launch or readiness timeout reports the created pane for inspection;
|
|
60
|
+
it deliberately does not close it or retry a possibly delivered prompt.
|
|
61
|
+
If a split request itself times out, inspect `herdr pane list` before retrying:
|
|
62
|
+
the server may have created the pane without returning its ID.
|
|
63
|
+
|
|
64
|
+
`--prompt` and `--prompt-file` are mutually exclusive. Files are UTF-8.
|
|
65
|
+
Spawn writes the prompt to an exclusive private temporary file (mode 0600
|
|
66
|
+
on POSIX). A short, single-line Python bootstrap reads and deletes that file
|
|
67
|
+
before passing the complete text as **one initial-command argument** to the
|
|
68
|
+
installed module. This avoids shell canonical line-buffer limits and editor
|
|
69
|
+
readiness races. Startup failure cleans up the file; a timeout can delete it
|
|
70
|
+
before a slow child reads it, causing that child to fail without its prompt.
|
|
71
|
+
Inspect the reported pane rather than retrying blindly. A hard caller crash
|
|
72
|
+
before the child reads it can leave a private temporary file. The launcher
|
|
73
|
+
never retries a possibly delivered initial command. A working child is named
|
|
74
|
+
promptly; a short task may already have completed when spawn returns.
|
|
75
|
+
|
|
76
|
+
**Core preprocessing limitation:** the interactive core parses attachments
|
|
77
|
+
before dispatching `/herdr`, removing quotes and normalizing whitespace.
|
|
78
|
+
Inline multiword `--prompt` values, quoted paths containing spaces, and quoted
|
|
79
|
+
multiword child arguments therefore are not supported through this boundary.
|
|
80
|
+
Use whitespace-free paths and `--prompt-file` for briefs. Inline send text
|
|
81
|
+
arrives already normalized; it is not byte-preserving, and attachment-like
|
|
82
|
+
paths/URLs may be consumed by the core before dispatch. This plugin cannot
|
|
83
|
+
recover raw input; a raw-command dispatch seam requires an upstream change.
|
|
84
|
+
|
|
85
|
+
`/herdr send` remains a **prompt-only helper**, not a way to run Code Puppy
|
|
86
|
+
commands such as `/model gpt-5` or `/new`. Use the separate explicit intent
|
|
87
|
+
`/herdr command fixer /model gpt-5` when intentionally requesting a command.
|
|
88
|
+
Commands may mutate state or open interactive menus: recognition is not a
|
|
89
|
+
safety guarantee. `/herdr commands` dynamically lists **sender candidates**
|
|
90
|
+
from the existing core registry (including aliases) and `custom_command_help`
|
|
91
|
+
plugin discovery, including advertised namespaced commands. Enumeration runs
|
|
92
|
+
plugin help callbacks; those callbacks are not guaranteed side-effect-free.
|
|
93
|
+
No handlers or `custom_command` callbacks are executed as validation probes.
|
|
94
|
+
Unknown or unadvertised commands fail closed. The target may run a different
|
|
95
|
+
version, configuration, or plugin set: this is not target validation.
|
|
96
|
+
|
|
97
|
+
The command payload must have an exact leading `/command` token, be one line
|
|
98
|
+
under 1,000 UTF-8 bytes, and contain no terminal controls. Shell `!` and bare
|
|
99
|
+
exit/quit/clear passthrough are not supported. Arguments can contain slash
|
|
100
|
+
paths; they are not blanket-rejected. The payload received by the launcher
|
|
101
|
+
is forwarded without rewriting, but both caller and child core preprocessing
|
|
102
|
+
may remove quotes, normalize spaces, or consume attachments. Inline quoted
|
|
103
|
+
or escaped leading commands may already be normalized before this plugin
|
|
104
|
+
sees them; do not rely on byte-preserved arguments through this boundary.
|
|
105
|
+
There is no command-file mode or automatic retry.
|
|
106
|
+
|
|
107
|
+
Command uses the same unique idle/terminal identity checks and `pane run`
|
|
108
|
+
terminal typing as send, not a structured child command route. Verify actual
|
|
109
|
+
foreground Code Puppy editor readiness before using it. A write acknowledgement
|
|
110
|
+
is **not confirmed execution**, child receipt, or completion. The occupant
|
|
111
|
+
check and write are not atomic; reported idle alone is not editor readiness.
|
|
112
|
+
|
|
113
|
+
The `load_prompt` hook exposes these choices and `/herdr commands` discovery
|
|
114
|
+
to agents inside herdr; `/herdr help` and the command menu expose them to users.
|
|
115
|
+
Agents with shell tools can call the installed plugin's `launcher.execute`
|
|
116
|
+
API and print the result, using the same guards rather than raw input.
|
|
117
|
+
Its guards do **not** change Herdr's generic CLI transport. The existing
|
|
118
|
+
`herdr pane send-text <pane-id> ...` followed by
|
|
119
|
+
`herdr pane send-keys <pane-id> Enter` remains available. Verify the intended
|
|
120
|
+
pane and that its Code Puppy input editor is actually ready first: a named
|
|
121
|
+
agent's idle report alone does not establish editor readiness. Raw terminal
|
|
122
|
+
input can execute commands in whatever process owns the foreground; it is
|
|
123
|
+
not a safe arbitrary-text alternative to this helper.
|
|
124
|
+
|
|
125
|
+
The launcher forwards the send tail it receives without further shell parsing.
|
|
126
|
+
`--file PATH` is the explicit file form; it bypasses the caller's inline-text
|
|
127
|
+
normalization, but the child still applies its usual prompt preprocessing.
|
|
128
|
+
File sends remove one conventional trailing newline; other newlines are
|
|
129
|
+
rejected.
|
|
130
|
+
Send accepts **single-line** prompts only: multiline paste is unsafe in the
|
|
131
|
+
classic editor or before bracketed paste is enabled.
|
|
132
|
+
Use `spawn --prompt-file` for multiline work. Send rechecks a unique idle Code
|
|
133
|
+
Puppy's terminal identity and refuses working/blocked agents. It uses herdr's
|
|
134
|
+
atomic `pane.send_input` text+Enter through `pane run`. Empty prompts and
|
|
135
|
+
terminal controls are rejected. Send rejects bare `exit`, `quit`, and `clear`
|
|
136
|
+
(case-insensitive), and tokens beginning with `/` or `!` even inside quotes.
|
|
137
|
+
This conservative token guard also rejects prose containing absolute paths;
|
|
138
|
+
use prompted spawn for such briefs. It avoids reading attachments merely to
|
|
139
|
+
predict whether the child would expose a command. Spawn accepts leading `/`
|
|
140
|
+
as literal initial prompt text (so an initial `/model` or `/new` prompt does
|
|
141
|
+
not execute that editor command), but rejects leading `!` because the core
|
|
142
|
+
initial-command path supports shell passthrough. Success confirms submission,
|
|
143
|
+
not completion or byte-identical model/history text.
|
|
144
|
+
|
|
145
|
+
**Startup caveat:** a prompt sent immediately after a no-prompt spawn may be
|
|
146
|
+
dropped. The startup idle report precedes input-editor readiness; the editor
|
|
147
|
+
can flush queued terminal input when it starts. Neither `send` nor `command`
|
|
148
|
+
can distinguish this gap from an input-ready idle pane. For the child's first
|
|
149
|
+
task, prefer `spawn --prompt` or `spawn --prompt-file`, whose private-file
|
|
150
|
+
handoff does not depend on editor readiness. A successful send acknowledges
|
|
151
|
+
the pane write, not child receipt.
|
|
152
|
+
|
|
153
|
+
Spawn prompts are capped at 24,000 UTF-8 bytes. Single-line sends must stay
|
|
154
|
+
under 1,000 UTF-8 bytes because the classic editor's canonical line buffer can
|
|
155
|
+
otherwise discard input or Enter even after startup. Use `spawn --prompt-file`
|
|
156
|
+
for larger briefs. The actual typed launch command (bootstrap, path and quoted
|
|
157
|
+
child arguments) must remain under 1,000 UTF-8 bytes and contain no newline;
|
|
158
|
+
otherwise it fails before any split. This conservative cap avoids even an
|
|
159
|
+
unready macOS shell's line buffer.
|
|
160
|
+
The command blocks the caller while waiting, prints the new pane and timeout
|
|
161
|
+
as progress, and may not be interruptible under the core's Ctrl+C guard.
|
|
162
|
+
Use a short `--timeout` when appropriate. Only one pane-specific `agent get`
|
|
163
|
+
is polled per tick. A reported child that disappears fails promptly; a child
|
|
164
|
+
that exits before ever reporting still requires the bounded timeout.
|
|
165
|
+
|
|
166
|
+
The preflight uniqueness check cannot reserve a name: herdr only permits
|
|
167
|
+
renaming a running agent. Concurrent same-name spawns can both create panes;
|
|
168
|
+
the server rejects the losing rename, and the launcher reports that pane.
|
|
169
|
+
Use `herdr agent get/read/wait` to observe work.
|
|
170
|
+
|
|
171
|
+
Outside herdr, `/herdr` explains that it requires `HERDR_ENV=1` and performs
|
|
172
|
+
no file reads, socket requests, or subprocess launches. The CLI binary comes
|
|
173
|
+
from `HERDR_BIN_PATH` when available, otherwise `herdr` in `PATH`. On Windows,
|
|
174
|
+
launch commands assume herdr's default PowerShell shell.
|
|
175
|
+
|
|
176
|
+
### Why not native `herdr agent prompt`?
|
|
177
|
+
|
|
178
|
+
In herdr 0.9.1, custom lifecycle reports can display `codepuppy idle`, but
|
|
179
|
+
native prompting requires a hard-coded known agent kind. Reporting session
|
|
180
|
+
identity does not remove that gate. `agent start --kind` and `integration
|
|
181
|
+
install` likewise have fixed supported-kind lists. An upstream Code Puppy
|
|
182
|
+
kind/integration is a follow-up; no agent impersonation or parallel reporter
|
|
183
|
+
is needed here. An agent-callable launcher tool is also deferred.
|
|
184
|
+
|
|
29
185
|
## State is authoritative
|
|
30
186
|
|
|
31
187
|
State is a pure function of two facts the plugin observes directly:
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"""Sender-side command candidates, never handler execution or target probing."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import re
|
|
5
|
+
import shlex
|
|
6
|
+
|
|
7
|
+
# Restrict the leading token, not arguments (which may contain slash paths).
|
|
8
|
+
_TOKEN = re.compile(r"/[A-Za-z0-9_-]+(?:/[A-Za-z0-9_-]+)*")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def command_candidates():
|
|
12
|
+
"""Reuse dispatcher metadata, including aliases and custom plugin help.
|
|
13
|
+
|
|
14
|
+
Enumeration runs help callbacks, not handlers or custom_command callbacks;
|
|
15
|
+
help callbacks are not guaranteed side-effect-free. Unadvertised custom
|
|
16
|
+
commands fail closed; this is not a target manifest.
|
|
17
|
+
"""
|
|
18
|
+
from code_puppy import callbacks
|
|
19
|
+
|
|
20
|
+
# Importing dispatcher registers core categories, just as actual dispatch.
|
|
21
|
+
from code_puppy.command_line import command_handler # noqa: F401
|
|
22
|
+
from code_puppy.command_line import command_registry
|
|
23
|
+
|
|
24
|
+
registry = command_registry.get_all_commands()
|
|
25
|
+
names = {"/" + name for name in registry if _TOKEN.fullmatch("/" + name)}
|
|
26
|
+
custom = set()
|
|
27
|
+
for result in callbacks.on_custom_command_help():
|
|
28
|
+
if isinstance(result, tuple) and len(result) == 2:
|
|
29
|
+
entries = [result]
|
|
30
|
+
elif isinstance(result, list) and result and isinstance(result[0], tuple):
|
|
31
|
+
entries = result
|
|
32
|
+
elif (
|
|
33
|
+
isinstance(result, list)
|
|
34
|
+
and result
|
|
35
|
+
and isinstance(result[0], str)
|
|
36
|
+
and result[0].startswith("/")
|
|
37
|
+
and " - " in result[0]
|
|
38
|
+
):
|
|
39
|
+
entries = [(result[0].split(" - ", 1)[0].lstrip("/").strip(), "")]
|
|
40
|
+
else:
|
|
41
|
+
continue
|
|
42
|
+
for entry in entries:
|
|
43
|
+
if (
|
|
44
|
+
isinstance(entry, tuple)
|
|
45
|
+
and len(entry) == 2
|
|
46
|
+
and isinstance(entry[0], str)
|
|
47
|
+
):
|
|
48
|
+
token = "/" + entry[0].lstrip("/")
|
|
49
|
+
if _TOKEN.fullmatch(token):
|
|
50
|
+
custom.add(token)
|
|
51
|
+
# The dispatcher routes multi-slash tokens through custom hooks ONLY.
|
|
52
|
+
names = {token for token in names if token.count("/") == 1}
|
|
53
|
+
return names, custom
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def validate_command(text):
|
|
57
|
+
"""Validate a single exact leading token; return payload without rewriting."""
|
|
58
|
+
if not text:
|
|
59
|
+
raise ValueError("Command payload is missing.")
|
|
60
|
+
if any(
|
|
61
|
+
ord(char) < 32 or 127 <= ord(char) <= 159 or (char.isspace() and char != " ")
|
|
62
|
+
for char in text
|
|
63
|
+
):
|
|
64
|
+
raise ValueError("Command must be one line without terminal controls.")
|
|
65
|
+
if len(text.encode("utf-8")) >= 1000:
|
|
66
|
+
raise ValueError("Command requires under 1,000 UTF-8 bytes.")
|
|
67
|
+
token = text.split(" ", 1)[0]
|
|
68
|
+
if not _TOKEN.fullmatch(token):
|
|
69
|
+
raise ValueError("Command requires an exact leading /command token.")
|
|
70
|
+
try:
|
|
71
|
+
shlex.split(text, posix=os.name != "nt")
|
|
72
|
+
except ValueError as exc:
|
|
73
|
+
raise ValueError("Command has malformed quoting.") from exc
|
|
74
|
+
builtin, custom = command_candidates()
|
|
75
|
+
recognized = token in custom or any(
|
|
76
|
+
token.lower() == name.lower() for name in builtin
|
|
77
|
+
)
|
|
78
|
+
if not recognized:
|
|
79
|
+
raise ValueError(
|
|
80
|
+
"Unknown sender command candidate. Use /herdr commands; nothing sent."
|
|
81
|
+
)
|
|
82
|
+
return text
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def candidate_help():
|
|
86
|
+
builtin, custom = command_candidates()
|
|
87
|
+
return (
|
|
88
|
+
"Sender command candidates (aliases included; target may differ).\n"
|
|
89
|
+
"Not a safety or execution guarantee; unadvertised plugins fail closed.\n"
|
|
90
|
+
+ " ".join(sorted(builtin | custom))
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
GUIDANCE = """## Herdr sibling input (inside herdr only)
|
|
95
|
+
Use /herdr spawn NAME --prompt-file PATH for first tasks, multiline or larger briefs.
|
|
96
|
+
Use /herdr send NAME ordinary prompt for prompt-only follow-up (one line, <1,000 UTF-8 bytes;
|
|
97
|
+
slash/bang tokens are rejected). To intentionally request a potentially mutating or interactive
|
|
98
|
+
Code Puppy command, use /herdr command NAME /model gpt-5, not send.
|
|
99
|
+
Discover known sender candidates/aliases with /herdr commands (core registry + plugin help).
|
|
100
|
+
Unknown/unadvertised commands fail closed. The target may have different commands/plugins;
|
|
101
|
+
recognized does not mean safe. Choose command only for intentionally authorized command intent.
|
|
102
|
+
Both actions type into the terminal; verify target and actual foreground editor readiness.
|
|
103
|
+
Idle is not editor-ready. Acknowledgement is only a write, not confirmed execution or receipt.
|
|
104
|
+
Core preprocessing removes quotes, normalizes spaces, and may consume attachments on both sides;
|
|
105
|
+
arguments are not byte-preserved. No automatic retries or atomic occupant-check guarantee.
|
|
106
|
+
Use /herdr help for options. From shell tools use the installed interpreter to call
|
|
107
|
+
code_puppy_core_plugins.herdr.launcher.execute('/herdr ...') and print the result;
|
|
108
|
+
this is the same guarded API, not raw herdr input. Never probe by executing commands.
|
|
109
|
+
"""
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Private prompt handoff and bounded shell bootstrap commands."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import tempfile
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Keep terminal input short and single-line, even before the shell editor starts.
|
|
8
|
+
# The child owns deletion once it reads the file, before importing the CLI.
|
|
9
|
+
BOOTSTRAP = (
|
|
10
|
+
"import runpy,sys,os;"
|
|
11
|
+
"p=sys.argv[1];"
|
|
12
|
+
"t=open(p,encoding='utf-8').read();"
|
|
13
|
+
"os.unlink(p);"
|
|
14
|
+
"sys.argv=['code_puppy',*sys.argv[2:],'--',t];"
|
|
15
|
+
"runpy.run_module('code_puppy',run_name='__main__',alter_sys=True)"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def prompt_file(prompt):
|
|
20
|
+
"""Create an exclusive private UTF-8 handoff; never reuse a user file."""
|
|
21
|
+
descriptor, name = tempfile.mkstemp(prefix="puppy-herdr-", suffix=".txt")
|
|
22
|
+
path = Path(name)
|
|
23
|
+
try:
|
|
24
|
+
with os.fdopen(descriptor, "w", encoding="utf-8", newline="") as file:
|
|
25
|
+
file.write(prompt)
|
|
26
|
+
except BaseException:
|
|
27
|
+
path.unlink(missing_ok=True)
|
|
28
|
+
raise
|
|
29
|
+
return path
|