code-puppy-core-plugins 0.0.77__tar.gz → 0.0.78__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.78}/PKG-INFO +1 -1
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/.gitignore +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/LICENSE +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/THIRD_PARTY_NOTICES.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/agent.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/bridge.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/capabilities.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/content.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/persistence.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/replay.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/session.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/session_config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/attachment_references/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/attachment_references/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/attachment_references/tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/background_agents/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/inline_view.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/side_query.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/FOCUS_INVESTIGATION.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/PARITY.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/WINDOWS.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/activation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/backend.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/batch.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/capture.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/computer_use/locales/es.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/computer_use/macos_backend.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/policy.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/safety.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/settle.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/tools.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_activation.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_backend.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_capture.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_input.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_native.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_runtime.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/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.78}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/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.78}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/fork/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/client.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/reporter.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/restore.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/smoke.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/sources.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/chunks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/judge.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/jev_grep/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/retrieve.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/search.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/structure.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/treesitter.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/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.78}/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.78}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/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.78}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/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.78}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_settings.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/prune_model.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/prune_render.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/session_namer/namer.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/store.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/payload.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/runner.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/termflow_tui.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/README.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/content_styles.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/picker.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/themes.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/judge.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/state.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/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.78
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "code-puppy-core-plugins"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.78"
|
|
8
8
|
description = "Official plugin bundle for Code Puppy"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11,<3.15"
|
|
@@ -122,7 +122,6 @@ subagent_panel = "code_puppy_core_plugins.subagent_panel.register_callbacks"
|
|
|
122
122
|
switch_agent_resume = "code_puppy_core_plugins.switch_agent_resume.register_callbacks"
|
|
123
123
|
theme = "code_puppy_core_plugins.theme.register_callbacks"
|
|
124
124
|
timestamp_heartbeat = "code_puppy_core_plugins.timestamp_heartbeat.register_callbacks"
|
|
125
|
-
token_ratio_learner = "code_puppy_core_plugins.token_ratio_learner.register_callbacks"
|
|
126
125
|
universal_constructor = "code_puppy_core_plugins.universal_constructor.register_callbacks"
|
|
127
126
|
web_retriever_skill = "code_puppy_core_plugins.web_retriever_skill.register_callbacks"
|
|
128
127
|
wiggum = "code_puppy_core_plugins.wiggum.register_callbacks"
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
"""Learned token-per-character ratios for accurate token estimation.
|
|
2
|
-
|
|
3
|
-
When the API reports real prompt_tokens we can compute the actual
|
|
4
|
-
chars-per-token ratio for that model and store it keyed by the bare
|
|
5
|
-
model name (the part after ``:``). Future ``count_tokens`` calls use the
|
|
6
|
-
stored ratio for that model, falling back to a hardcoded default.
|
|
7
|
-
|
|
8
|
-
The default (2.5) matches the classic char/token heuristic used across
|
|
9
|
-
most models. Real tokenizers vary (GPT-4 ~3.5, Claude ~2.8), but 2.5
|
|
10
|
-
provides a reasonable middle ground. The max clamp (3.5) prevents
|
|
11
|
-
absurdly high ratios from inflating token estimates.
|
|
12
|
-
|
|
13
|
-
Storage lives at ``~/.code_puppy/token_ratios.json``, overridable via
|
|
14
|
-
the env var ``CODE_PUPPY_TOKEN_RATIOS_PATH``.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
import json
|
|
18
|
-
import logging
|
|
19
|
-
import os
|
|
20
|
-
import tempfile
|
|
21
|
-
import threading
|
|
22
|
-
from pathlib import Path
|
|
23
|
-
|
|
24
|
-
logger = logging.getLogger(__name__)
|
|
25
|
-
|
|
26
|
-
# Constants
|
|
27
|
-
|
|
28
|
-
# Default 2.5 chars/token slightly overestimates for safer compaction.
|
|
29
|
-
_DEFAULT_RATIO = 2.5
|
|
30
|
-
|
|
31
|
-
# Clamp learned ratios to [1.5, 3.5]; extremes imply implausible tokenization and
|
|
32
|
-
# can collapse estimates or risk context overflow.
|
|
33
|
-
_MIN_RATIO = 1.5
|
|
34
|
-
_MAX_RATIO = 3.5
|
|
35
|
-
|
|
36
|
-
# Lazy in-memory cache, populated by ``_ensure_ratios_loaded()``.
|
|
37
|
-
|
|
38
|
-
_LEARNED_RATIOS: dict[str, float] = {}
|
|
39
|
-
_ratios_loaded: bool = False
|
|
40
|
-
_ratios_lock = threading.Lock()
|
|
41
|
-
|
|
42
|
-
# Learned-ratio storage path.
|
|
43
|
-
|
|
44
|
-
_TOKEN_RATIOS_PATH: Path = Path(
|
|
45
|
-
os.path.expanduser(
|
|
46
|
-
os.environ.get(
|
|
47
|
-
"CODE_PUPPY_TOKEN_RATIOS_PATH",
|
|
48
|
-
str(Path.home() / ".code_puppy" / "token_ratios.json"),
|
|
49
|
-
)
|
|
50
|
-
)
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
# Internal helpers
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def _ensure_ratios_loaded() -> None:
|
|
58
|
-
"""Populate ``_LEARNED_RATIOS`` from disk on first call (idempotent)."""
|
|
59
|
-
global _ratios_loaded
|
|
60
|
-
with _ratios_lock:
|
|
61
|
-
if _ratios_loaded:
|
|
62
|
-
return
|
|
63
|
-
_LEARNED_RATIOS.clear()
|
|
64
|
-
_LEARNED_RATIOS.update(_load_learned_ratios())
|
|
65
|
-
_ratios_loaded = True
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def _load_learned_ratios() -> dict[str, float]:
|
|
69
|
-
"""Load learned token ratios from the on-disk JSON file.
|
|
70
|
-
|
|
71
|
-
Returns an empty dict when the file doesn't exist or is corrupt —
|
|
72
|
-
callers fall back to ``_DEFAULT_RATIO``.
|
|
73
|
-
|
|
74
|
-
Each loaded value is clamped to ``[_MIN_RATIO, _MAX_RATIO]`` so that
|
|
75
|
-
poisoned or corrupted values cannot cause token-count collapse.
|
|
76
|
-
"""
|
|
77
|
-
try:
|
|
78
|
-
if _TOKEN_RATIOS_PATH.is_file():
|
|
79
|
-
data = json.loads(_TOKEN_RATIOS_PATH.read_text(encoding="utf-8"))
|
|
80
|
-
if isinstance(data, dict):
|
|
81
|
-
clamped: dict[str, float] = {}
|
|
82
|
-
for k, v in data.items():
|
|
83
|
-
if isinstance(v, (int, float)) and v > 0:
|
|
84
|
-
# Lowercase keys for case-insensitive matching.
|
|
85
|
-
clamped[k.lower()] = max(_MIN_RATIO, min(_MAX_RATIO, float(v)))
|
|
86
|
-
return clamped
|
|
87
|
-
except (OSError, json.JSONDecodeError, ValueError):
|
|
88
|
-
pass
|
|
89
|
-
return {}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
def _save_learned_ratios(ratios: dict[str, float]) -> None:
|
|
93
|
-
"""Persist learned token ratios to disk atomically (best-effort, never raises)."""
|
|
94
|
-
try:
|
|
95
|
-
parent = _TOKEN_RATIOS_PATH.parent
|
|
96
|
-
parent.mkdir(parents=True, exist_ok=True)
|
|
97
|
-
fd, tmp_name = tempfile.mkstemp(dir=parent, suffix=".tmp")
|
|
98
|
-
try:
|
|
99
|
-
with os.fdopen(fd, "w", encoding="utf-8") as tmp:
|
|
100
|
-
json.dump(ratios, tmp, indent=2)
|
|
101
|
-
os.replace(tmp_name, str(_TOKEN_RATIOS_PATH))
|
|
102
|
-
except OSError:
|
|
103
|
-
try:
|
|
104
|
-
os.unlink(tmp_name)
|
|
105
|
-
except OSError:
|
|
106
|
-
pass
|
|
107
|
-
raise
|
|
108
|
-
except OSError:
|
|
109
|
-
pass # Silently ignore write failures (permissions, disk full, etc.)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
def _record_token_ratio(model: str, char_count: int, token_count: int) -> None:
|
|
113
|
-
"""Record an observed chars-per-token ratio for *model*.
|
|
114
|
-
|
|
115
|
-
Called after a successful API response where we know both the input
|
|
116
|
-
character count and the actual prompt token count. Stores a running
|
|
117
|
-
average keyed by the bare model name (the part after ``:``) so that
|
|
118
|
-
the same model accessed through different providers shares the estimate.
|
|
119
|
-
|
|
120
|
-
The running average uses a 70/30 blend: 70% old, 30% new. This lets
|
|
121
|
-
the estimate adapt to the real tokenizer without swinging wildly on
|
|
122
|
-
every call.
|
|
123
|
-
"""
|
|
124
|
-
if char_count <= 0 or token_count <= 0:
|
|
125
|
-
return
|
|
126
|
-
|
|
127
|
-
# Strip the provider prefix and lowercase the model name.
|
|
128
|
-
model_name = model.split(":", 1)[1] if ":" in model else model
|
|
129
|
-
model_name = model_name.lower()
|
|
130
|
-
|
|
131
|
-
_ensure_ratios_loaded()
|
|
132
|
-
|
|
133
|
-
new_ratio = char_count / token_count
|
|
134
|
-
new_ratio = max(_MIN_RATIO, min(_MAX_RATIO, new_ratio))
|
|
135
|
-
|
|
136
|
-
with _ratios_lock:
|
|
137
|
-
old = _LEARNED_RATIOS.get(model_name)
|
|
138
|
-
if old is not None:
|
|
139
|
-
blended = 0.7 * old + 0.3 * new_ratio
|
|
140
|
-
else:
|
|
141
|
-
blended = new_ratio
|
|
142
|
-
_LEARNED_RATIOS[model_name] = round(blended, 4)
|
|
143
|
-
_save_learned_ratios(_LEARNED_RATIOS)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
# Public API
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def count_tokens(text: str, model: str | None = None) -> int:
|
|
150
|
-
"""Estimate token count using a character-based heuristic.
|
|
151
|
-
|
|
152
|
-
If we have a *learned* chars-per-token ratio for *model*, use it.
|
|
153
|
-
Otherwise fall back to ``_DEFAULT_RATIO`` (2.5).
|
|
154
|
-
|
|
155
|
-
Args:
|
|
156
|
-
text: The text content whose token count we need.
|
|
157
|
-
model: Optional model identifier string (e.g.
|
|
158
|
-
``"anthropic:claude-sonnet"``). The provider prefix is
|
|
159
|
-
stripped before lookup, so ``"wafer:glm5.1"`` and bare
|
|
160
|
-
``"glm5.1"`` resolve to the same key.
|
|
161
|
-
|
|
162
|
-
Returns:
|
|
163
|
-
Estimated token count (always >= 1 for non-empty input).
|
|
164
|
-
"""
|
|
165
|
-
_ensure_ratios_loaded()
|
|
166
|
-
|
|
167
|
-
if not text:
|
|
168
|
-
return 0
|
|
169
|
-
|
|
170
|
-
# Look up by bare model name (strip provider prefix, lowercase).
|
|
171
|
-
model_name = None
|
|
172
|
-
if model:
|
|
173
|
-
model_name = model.split(":", 1)[1] if ":" in model else model
|
|
174
|
-
model_name = model_name.lower()
|
|
175
|
-
|
|
176
|
-
raw_ratio = _LEARNED_RATIOS.get(model_name or "", _DEFAULT_RATIO)
|
|
177
|
-
ratio = max(_MIN_RATIO, min(_MAX_RATIO, raw_ratio))
|
|
178
|
-
|
|
179
|
-
result = round(len(text) / ratio)
|
|
180
|
-
return result if result > 0 else 1
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
def get_ratio_for_model(model: str) -> float:
|
|
184
|
-
"""Return the current chars/token ratio for *model* (or default)."""
|
|
185
|
-
_ensure_ratios_loaded()
|
|
186
|
-
model_name = model.split(":", 1)[1] if ":" in model else model
|
|
187
|
-
model_name = model_name.lower()
|
|
188
|
-
raw = _LEARNED_RATIOS.get(model_name, _DEFAULT_RATIO)
|
|
189
|
-
return max(_MIN_RATIO, min(_MAX_RATIO, raw))
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
def list_known_ratios() -> dict[str, float]:
|
|
193
|
-
"""Return a copy of all learned ratios (for debugging/stats)."""
|
|
194
|
-
_ensure_ratios_loaded()
|
|
195
|
-
with _ratios_lock:
|
|
196
|
-
return dict(_LEARNED_RATIOS)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
# Storage path override (for tests)
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
def set_ratios_path(path: str | Path) -> None:
|
|
203
|
-
"""Override the token ratios file path (mostly for testing)."""
|
|
204
|
-
global _TOKEN_RATIOS_PATH, _ratios_loaded, _LEARNED_RATIOS
|
|
205
|
-
_TOKEN_RATIOS_PATH = Path(path)
|
|
206
|
-
with _ratios_lock:
|
|
207
|
-
_LEARNED_RATIOS.clear()
|
|
208
|
-
_ratios_loaded = False
|
code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
"""Register callbacks for the token-ratio-learner plugin.
|
|
2
|
-
|
|
3
|
-
On startup we monkeypatch four things:
|
|
4
|
-
|
|
5
|
-
1. ``_history.estimate_tokens`` — replaces the hardcoded
|
|
6
|
-
``max(1, floor(len(text)/2.5))`` with a learned-ratio lookup, falling
|
|
7
|
-
back to ``_DEFAULT_RATIO`` (2.5) which matches the classic heuristic.
|
|
8
|
-
|
|
9
|
-
2. ``_history.estimate_tokens_for_message`` — replaces per-part char/2.5
|
|
10
|
-
summing + ``model_token_multiplier`` with direct
|
|
11
|
-
``ratios.count_tokens(part_str, model=model_name)`` per part. The
|
|
12
|
-
learned ratio is already model-calibrated, so the multiplier becomes
|
|
13
|
-
redundant.
|
|
14
|
-
|
|
15
|
-
3. ``_runtime.run_with_mcp`` — wraps the orchestration so that after every
|
|
16
|
-
successful agent run we extract ``result.usage.input_tokens`` and
|
|
17
|
-
the character count of the input, then call
|
|
18
|
-
``ratios._record_token_ratio()`` to update the running average.
|
|
19
|
-
|
|
20
|
-
4. ``subagent_stream_handler._estimate_tokens`` — same replacement as
|
|
21
|
-
(1) so that subagent streaming token counts use learned ratios.
|
|
22
|
-
|
|
23
|
-
We do **not** touch ``event_stream_handler`` inlining — that code is for
|
|
24
|
-
progress display only, not for compaction decisions.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
import logging
|
|
28
|
-
from typing import Any, Optional, Union
|
|
29
|
-
|
|
30
|
-
from code_puppy.callbacks import register_callback
|
|
31
|
-
|
|
32
|
-
logger = logging.getLogger(__name__)
|
|
33
|
-
|
|
34
|
-
# Original references, populated during startup.
|
|
35
|
-
|
|
36
|
-
_original_estimate_tokens = None
|
|
37
|
-
_original_estimate_tokens_for_message = None
|
|
38
|
-
_original_run_with_mcp = None
|
|
39
|
-
_original_subagent_estimate_tokens = None
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
# Patched ``estimate_tokens`` (root text-level)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def _patched_estimate_tokens(text: str) -> int:
|
|
46
|
-
"""Drop-in replacement that uses learned char/token ratios.
|
|
47
|
-
|
|
48
|
-
No model argument — uses the default ratio. Callers that need
|
|
49
|
-
model-specific calibration go through ``estimate_tokens_for_message``.
|
|
50
|
-
"""
|
|
51
|
-
from code_puppy_core_plugins.token_ratio_learner.ratios import count_tokens
|
|
52
|
-
|
|
53
|
-
return count_tokens(text, model=None)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
# Patched ``estimate_tokens_for_message``
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def _patched_estimate_tokens_for_message(
|
|
60
|
-
message: Any,
|
|
61
|
-
model_name: Optional[str] = None,
|
|
62
|
-
) -> int:
|
|
63
|
-
"""Per-message token estimation using learned model-specific ratios.
|
|
64
|
-
|
|
65
|
-
Iterates over ``message.parts``, stringifying each with
|
|
66
|
-
``stringify_part``, then calls ``ratios.count_tokens(part_str, model)``.
|
|
67
|
-
Bypasses the old ``estimate_tokens`` + ``model_token_multiplier`` chain
|
|
68
|
-
entirely — the learned ratio *is* the calibration.
|
|
69
|
-
"""
|
|
70
|
-
# Import stringify_part from the same module the original lives in
|
|
71
|
-
from code_puppy.agents._history import stringify_part
|
|
72
|
-
from code_puppy_core_plugins.token_ratio_learner.ratios import count_tokens
|
|
73
|
-
|
|
74
|
-
total = 0
|
|
75
|
-
for part in getattr(message, "parts", []) or []:
|
|
76
|
-
part_str = stringify_part(part)
|
|
77
|
-
if part_str:
|
|
78
|
-
total += count_tokens(part_str, model=model_name)
|
|
79
|
-
return max(1, total)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
# Patched ``run_with_mcp`` records ratios after each API call.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def _compute_input_char_count(
|
|
86
|
-
agent: Any, prompt: Union[str, list], attachments: Any, link_attachments: Any
|
|
87
|
-
) -> int:
|
|
88
|
-
"""Compute a reasonable character count for the input to the model.
|
|
89
|
-
|
|
90
|
-
Counts the prompt text (or list items) plus the stringified message
|
|
91
|
-
history. Binary/URL attachments aren't tokenized as text so they're
|
|
92
|
-
skipped.
|
|
93
|
-
"""
|
|
94
|
-
char_count = 0
|
|
95
|
-
|
|
96
|
-
if isinstance(prompt, str):
|
|
97
|
-
char_count += len(prompt)
|
|
98
|
-
elif isinstance(prompt, list):
|
|
99
|
-
for item in prompt:
|
|
100
|
-
if isinstance(item, str):
|
|
101
|
-
char_count += len(item)
|
|
102
|
-
|
|
103
|
-
try:
|
|
104
|
-
history = agent._message_history
|
|
105
|
-
from code_puppy.agents._history import stringify_part
|
|
106
|
-
|
|
107
|
-
for msg in history:
|
|
108
|
-
for part in getattr(msg, "parts", []) or []:
|
|
109
|
-
part_str = stringify_part(part)
|
|
110
|
-
if part_str:
|
|
111
|
-
char_count += len(part_str)
|
|
112
|
-
except Exception:
|
|
113
|
-
pass
|
|
114
|
-
|
|
115
|
-
return char_count
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
async def _patched_run_with_mcp(
|
|
119
|
-
agent: Any,
|
|
120
|
-
prompt: str,
|
|
121
|
-
*,
|
|
122
|
-
attachments: Optional[Any] = None,
|
|
123
|
-
link_attachments: Optional[Any] = None,
|
|
124
|
-
output_type: Optional[Any] = None,
|
|
125
|
-
**kwargs: Any,
|
|
126
|
-
) -> Any:
|
|
127
|
-
"""Wrap ``run_with_mcp`` to learn token ratios from real API responses."""
|
|
128
|
-
global _original_run_with_mcp
|
|
129
|
-
|
|
130
|
-
input_char_count = _compute_input_char_count(
|
|
131
|
-
agent, prompt, attachments, link_attachments
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
result = await _original_run_with_mcp(
|
|
135
|
-
agent,
|
|
136
|
-
prompt,
|
|
137
|
-
attachments=attachments,
|
|
138
|
-
link_attachments=link_attachments,
|
|
139
|
-
output_type=output_type,
|
|
140
|
-
**kwargs,
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
# Try to extract token usage from the result
|
|
144
|
-
try:
|
|
145
|
-
usage = getattr(result, "usage", None)
|
|
146
|
-
# pydantic-ai 2.31.0 exposes usage as a property. A callable value
|
|
147
|
-
# belongs to an older method-style host; ignore it rather than
|
|
148
|
-
# triggering the deprecated call path.
|
|
149
|
-
if callable(usage):
|
|
150
|
-
return result
|
|
151
|
-
input_tokens = getattr(usage, "input_tokens", 0) or getattr(
|
|
152
|
-
usage, "request_tokens", 0
|
|
153
|
-
)
|
|
154
|
-
if input_tokens > 0 and input_char_count > 0:
|
|
155
|
-
from code_puppy_core_plugins.token_ratio_learner.ratios import (
|
|
156
|
-
_record_token_ratio,
|
|
157
|
-
)
|
|
158
|
-
|
|
159
|
-
model = agent.get_model_name()
|
|
160
|
-
if model:
|
|
161
|
-
_record_token_ratio(model, input_char_count, input_tokens)
|
|
162
|
-
except Exception:
|
|
163
|
-
pass # Never let ratio recording break the agent run
|
|
164
|
-
|
|
165
|
-
return result
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
# Patched subagent ``_estimate_tokens``
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
def _patched_subagent_estimate_tokens(content: str) -> int:
|
|
172
|
-
"""Drop-in replacement for subagent token estimation."""
|
|
173
|
-
from code_puppy_core_plugins.token_ratio_learner.ratios import count_tokens
|
|
174
|
-
|
|
175
|
-
return count_tokens(content, model=None)
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
# Startup hook
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
def _on_startup() -> None:
|
|
182
|
-
"""Apply all monkeypatches on startup."""
|
|
183
|
-
global _original_estimate_tokens, _original_estimate_tokens_for_message
|
|
184
|
-
global _original_run_with_mcp, _original_subagent_estimate_tokens
|
|
185
|
-
|
|
186
|
-
# 1. Patch _history.estimate_tokens (root text-level)
|
|
187
|
-
from code_puppy.agents import _history
|
|
188
|
-
|
|
189
|
-
_original_estimate_tokens = _history.estimate_tokens
|
|
190
|
-
_history.estimate_tokens = _patched_estimate_tokens
|
|
191
|
-
logger.info("token_ratio_learner: patched _history.estimate_tokens")
|
|
192
|
-
|
|
193
|
-
# 2. Patch _history.estimate_tokens_for_message
|
|
194
|
-
_original_estimate_tokens_for_message = _history.estimate_tokens_for_message
|
|
195
|
-
_history.estimate_tokens_for_message = _patched_estimate_tokens_for_message
|
|
196
|
-
logger.info("token_ratio_learner: patched _history.estimate_tokens_for_message")
|
|
197
|
-
|
|
198
|
-
# 3. Patch _runtime.run_with_mcp
|
|
199
|
-
from code_puppy.agents import _runtime
|
|
200
|
-
|
|
201
|
-
_original_run_with_mcp = _runtime.run_with_mcp
|
|
202
|
-
_runtime.run_with_mcp = _patched_run_with_mcp
|
|
203
|
-
logger.info("token_ratio_learner: patched _runtime.run_with_mcp")
|
|
204
|
-
|
|
205
|
-
# 4. Patch subagent_stream_handler._estimate_tokens
|
|
206
|
-
# NOTE: ``subagent_stream_handler`` re-exports a function, not its module;
|
|
207
|
-
# import the actual module via ``importlib`` before patching.
|
|
208
|
-
import importlib
|
|
209
|
-
|
|
210
|
-
ssh_mod = importlib.import_module("code_puppy.agents.subagent_stream_handler")
|
|
211
|
-
|
|
212
|
-
_original_subagent_estimate_tokens = ssh_mod._estimate_tokens
|
|
213
|
-
ssh_mod._estimate_tokens = _patched_subagent_estimate_tokens
|
|
214
|
-
logger.info("token_ratio_learner: patched subagent_stream_handler._estimate_tokens")
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
# Register the startup callback
|
|
218
|
-
register_callback("startup", _on_startup)
|
|
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
|