code-puppy-core-plugins 0.0.13__tar.gz → 0.0.14__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.13 → code_puppy_core_plugins-0.0.14}/PKG-INFO +1 -1
- code_puppy_core_plugins-0.0.14/code_puppy_core_plugins/theme/bundled_palettes.py +34 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/osc_palette.py +33 -65
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/picker.py +50 -166
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/pyproject.toml +1 -1
- code_puppy_core_plugins-0.0.13/code_puppy_core_plugins/theme/bundled_palettes.py +0 -346
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/.gitignore +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/LICENSE +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/agent.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/bridge.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/capabilities.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/commands.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/content.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/permissions.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/persistence.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/replay.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/session.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/session_config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/acp/state.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/downloader.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/installer.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/remote_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/skill_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/skills_install_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/btw/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/btw/inline_view.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/btw/side_query.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/activation.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/backend.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/capture.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/commands.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/policy.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/safety.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/settle.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/state.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/computer_use/tools.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/fork/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/client.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/reporter.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/smoke.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/herdr/sources.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/hook_manager/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/ollama/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/plugins_menu_layout.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prune/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prune/prune_model.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prune/prune_render.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/shell_safety/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/shell_safety/agent_shell_safety.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/shell_safety/command_cache.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/shell_safety/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/spill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/spill/store.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/payload.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/runner.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/README.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/content_styles.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/theme/themes.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wide_completion_menu/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wide_completion_menu/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/judge.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/wiggum/state.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
- {code_puppy_core_plugins-0.0.13 → code_puppy_core_plugins-0.0.14}/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.14
|
|
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
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Bundled terminal palettes, served from termflow.
|
|
2
|
+
|
|
3
|
+
The palette data graduated into ``termflow.themes`` (the canonical
|
|
4
|
+
copy); this module re-exposes each palette in the plugin's historical
|
|
5
|
+
dict shape (``{"bg", "fg", "ansi"}``) so themes.py and downstream
|
|
6
|
+
consumers keep working unchanged.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from termflow.themes import get_palette
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _palette_dict(name: str) -> dict:
|
|
15
|
+
palette = get_palette(name)
|
|
16
|
+
if palette is None: # pragma: no cover - termflow always bundles these
|
|
17
|
+
raise KeyError(f"termflow is missing bundled palette {name!r}")
|
|
18
|
+
return palette.to_dict()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
CATPPUCCIN_MOCHA = _palette_dict("catppuccin_mocha")
|
|
22
|
+
CATPPUCCIN_LATTE = _palette_dict("catppuccin_latte")
|
|
23
|
+
TOKYO_NIGHT = _palette_dict("tokyo_night")
|
|
24
|
+
GREEN_SCREEN = _palette_dict("green_screen")
|
|
25
|
+
DEEP_BLACK = _palette_dict("deep_black")
|
|
26
|
+
SOLARIZED_LIGHT = _palette_dict("solarized_light")
|
|
27
|
+
GITHUB_LIGHT = _palette_dict("github_light")
|
|
28
|
+
ROSE_PINE_DAWN = _palette_dict("rose_pine_dawn")
|
|
29
|
+
OCEAN = _palette_dict("ocean")
|
|
30
|
+
FOREST = _palette_dict("forest")
|
|
31
|
+
SUNSET = _palette_dict("sunset")
|
|
32
|
+
VAPORWAVE = _palette_dict("vaporwave")
|
|
33
|
+
PURPLE_PUPPY = _palette_dict("purple_puppy")
|
|
34
|
+
BUBBLEGUM_PINK = _palette_dict("bubblegum_pink")
|
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
"""Terminal
|
|
1
|
+
"""Terminal palette swap: Code Puppy persistence over termflow's OSC engine.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
The escape-sequence machinery (OSC 4/10/11 builders, palette
|
|
4
|
+
application, reset) lives in ``termflow.themes.osc``. This module adds
|
|
5
|
+
what is Code Puppy's business alone:
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
OSC 110 BEL -> reset foreground
|
|
10
|
-
OSC 111 BEL -> reset background
|
|
11
|
-
OSC 104 BEL -> reset whole palette
|
|
7
|
+
* persisting the applied palette to config so the next session replays it
|
|
8
|
+
* re-firing the persisted palette on plugin load
|
|
9
|
+
* an atexit restore so the terminal never stays stuck in a theme
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
We always register an atexit handler so the terminal is restored when
|
|
17
|
-
Code Puppy quits, even if the user forgets to /theme default first.
|
|
11
|
+
Emission is routed through the local :func:`_emit` (which tests patch)
|
|
12
|
+
via a callback stream handed to termflow.
|
|
18
13
|
"""
|
|
19
14
|
|
|
20
15
|
from __future__ import annotations
|
|
@@ -22,18 +17,18 @@ from __future__ import annotations
|
|
|
22
17
|
import atexit
|
|
23
18
|
import json
|
|
24
19
|
import sys
|
|
25
|
-
from typing import Optional
|
|
20
|
+
from typing import Optional
|
|
26
21
|
|
|
27
|
-
from
|
|
22
|
+
from termflow.themes import osc as tf_osc
|
|
23
|
+
from termflow.themes.osc import BEL, ESC, _osc # noqa: F401 (re-exported API)
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
ESC = "\033"
|
|
25
|
+
from code_puppy.config import get_value, set_config_value
|
|
31
26
|
|
|
32
27
|
_CONFIG_KEY = "osc_palette_json"
|
|
33
28
|
_atexit_registered = False
|
|
34
29
|
|
|
35
30
|
|
|
36
|
-
# ---
|
|
31
|
+
# --- Emission ---------------------------------------------------------------
|
|
37
32
|
def _emit(seq: str) -> None:
|
|
38
33
|
"""Write an escape sequence to stdout, ignoring failures (closed tty etc.)."""
|
|
39
34
|
try:
|
|
@@ -43,37 +38,31 @@ def _emit(seq: str) -> None:
|
|
|
43
38
|
pass
|
|
44
39
|
|
|
45
40
|
|
|
46
|
-
|
|
47
|
-
"""
|
|
48
|
-
payload = ";".join((code,) + args)
|
|
49
|
-
return f"{ESC}]{payload}{BEL}"
|
|
41
|
+
class _EmitStream:
|
|
42
|
+
"""File-like shim routing termflow's writes through :func:`_emit`.
|
|
50
43
|
|
|
44
|
+
Looks up the module global at call time so test patches of ``_emit``
|
|
45
|
+
keep working.
|
|
46
|
+
"""
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def set_fg(color: str) -> None:
|
|
58
|
-
_emit(_osc("10", color))
|
|
59
|
-
|
|
48
|
+
def write(self, seq: str) -> int:
|
|
49
|
+
_emit(seq)
|
|
50
|
+
return len(seq)
|
|
60
51
|
|
|
61
|
-
def
|
|
62
|
-
|
|
63
|
-
return
|
|
64
|
-
_emit(_osc("4", str(slot), color))
|
|
52
|
+
def flush(self) -> None:
|
|
53
|
+
pass
|
|
65
54
|
|
|
66
55
|
|
|
67
|
-
def
|
|
68
|
-
|
|
56
|
+
def set_bg(color: str) -> None:
|
|
57
|
+
tf_osc.set_bg(color, _EmitStream())
|
|
69
58
|
|
|
70
59
|
|
|
71
|
-
def
|
|
72
|
-
|
|
60
|
+
def set_fg(color: str) -> None:
|
|
61
|
+
tf_osc.set_fg(color, _EmitStream())
|
|
73
62
|
|
|
74
63
|
|
|
75
|
-
def
|
|
76
|
-
|
|
64
|
+
def set_ansi_slot(slot: int, color: str) -> None:
|
|
65
|
+
tf_osc.set_ansi_slot(slot, color, _EmitStream())
|
|
77
66
|
|
|
78
67
|
|
|
79
68
|
# --- High-level API ---------------------------------------------------------
|
|
@@ -82,13 +71,6 @@ def apply_palette(
|
|
|
82
71
|
) -> None:
|
|
83
72
|
"""Apply a palette dict to the live terminal.
|
|
84
73
|
|
|
85
|
-
Palette shape:
|
|
86
|
-
{
|
|
87
|
-
"bg": "#rrggbb", # optional
|
|
88
|
-
"fg": "#rrggbb", # optional
|
|
89
|
-
"ansi": ["#rrggbb", ...] # optional, 0..16 entries
|
|
90
|
-
}
|
|
91
|
-
|
|
92
74
|
`persist=True` writes the palette to config so the next Code Puppy
|
|
93
75
|
session can replay it. `register_reset=True` ensures we always
|
|
94
76
|
restore the terminal at process exit.
|
|
@@ -96,17 +78,7 @@ def apply_palette(
|
|
|
96
78
|
if not isinstance(palette, dict):
|
|
97
79
|
return
|
|
98
80
|
|
|
99
|
-
|
|
100
|
-
fg = palette.get("fg")
|
|
101
|
-
ansi: Sequence[str] = palette.get("ansi") or []
|
|
102
|
-
|
|
103
|
-
if bg:
|
|
104
|
-
set_bg(bg)
|
|
105
|
-
if fg:
|
|
106
|
-
set_fg(fg)
|
|
107
|
-
for i, color in enumerate(ansi[:16]):
|
|
108
|
-
if color:
|
|
109
|
-
set_ansi_slot(i, color)
|
|
81
|
+
tf_osc.apply_palette(palette, output=_EmitStream(), register_reset=False)
|
|
110
82
|
|
|
111
83
|
if persist:
|
|
112
84
|
try:
|
|
@@ -120,9 +92,7 @@ def apply_palette(
|
|
|
120
92
|
|
|
121
93
|
def reset_palette(persist: bool = True) -> None:
|
|
122
94
|
"""Restore the terminal's original bg/fg/ANSI palette."""
|
|
123
|
-
|
|
124
|
-
reset_bg()
|
|
125
|
-
reset_fg()
|
|
95
|
+
tf_osc.reset_palette(output=_EmitStream())
|
|
126
96
|
if persist:
|
|
127
97
|
try:
|
|
128
98
|
set_config_value(_CONFIG_KEY, "")
|
|
@@ -160,9 +130,7 @@ def _at_exit_reset() -> None:
|
|
|
160
130
|
doesn't stay stuck in a weird color after Code Puppy dies.
|
|
161
131
|
"""
|
|
162
132
|
try:
|
|
163
|
-
|
|
164
|
-
reset_bg()
|
|
165
|
-
reset_fg()
|
|
133
|
+
reset_palette(persist=False)
|
|
166
134
|
except Exception:
|
|
167
135
|
pass
|
|
168
136
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
"""Interactive theme picker TUI.
|
|
1
|
+
"""Interactive theme picker TUI, built on termflow's MenuBuilder.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
The left column lists the curated themes (paged); the right pane shows a
|
|
4
|
+
live preview with banners, content text styles, the inline-markup remap,
|
|
5
|
+
and the terminal palette swatches. Rendering the preview still goes
|
|
6
|
+
through Rich (it is the best ANSI paintbrush we have) -- the menu chrome
|
|
7
|
+
and event loop are pure termflow.
|
|
7
8
|
"""
|
|
8
9
|
|
|
9
10
|
from __future__ import annotations
|
|
@@ -11,16 +12,10 @@ from __future__ import annotations
|
|
|
11
12
|
import asyncio
|
|
12
13
|
import io
|
|
13
14
|
import random
|
|
14
|
-
import sys
|
|
15
15
|
from typing import Optional
|
|
16
16
|
|
|
17
|
-
from prompt_toolkit import Application
|
|
18
|
-
from prompt_toolkit.formatted_text import ANSI, FormattedText
|
|
19
|
-
from prompt_toolkit.key_binding import KeyBindings
|
|
20
|
-
from prompt_toolkit.layout import Layout, VSplit, Window
|
|
21
|
-
from prompt_toolkit.layout.controls import FormattedTextControl
|
|
22
|
-
from prompt_toolkit.widgets import Frame
|
|
23
17
|
from rich.console import Console
|
|
18
|
+
from termflow.tui import MenuBuilder, MenuItem
|
|
24
19
|
|
|
25
20
|
from code_puppy.command_line.colors_menu import (
|
|
26
21
|
BANNER_DISPLAY_INFO,
|
|
@@ -34,7 +29,10 @@ from .themes import (
|
|
|
34
29
|
content_styles_for,
|
|
35
30
|
terminal_palette_for,
|
|
36
31
|
)
|
|
37
|
-
|
|
32
|
+
|
|
33
|
+
THEMES_PER_PAGE = 5
|
|
34
|
+
LIST_WIDTH = 40
|
|
35
|
+
PREVIEW_WIDTH = 70
|
|
38
36
|
|
|
39
37
|
# A few representative banners to show in the preview pane (keeps it readable).
|
|
40
38
|
PREVIEW_BANNERS = [
|
|
@@ -59,8 +57,6 @@ CONTENT_SAMPLES = [
|
|
|
59
57
|
|
|
60
58
|
# Inline-markup samples to demonstrate the Level 2 color remap.
|
|
61
59
|
# These mirror the kind of hardcoded tags scattered through the renderer.
|
|
62
|
-
THEMES_PER_PAGE = 5
|
|
63
|
-
|
|
64
60
|
INLINE_MARKUP_SAMPLES = [
|
|
65
61
|
"[bold cyan]bold cyan headline[/bold cyan]",
|
|
66
62
|
"[dim cyan]dim cyan detail[/dim cyan]",
|
|
@@ -69,8 +65,8 @@ INLINE_MARKUP_SAMPLES = [
|
|
|
69
65
|
]
|
|
70
66
|
|
|
71
67
|
|
|
72
|
-
def _render_preview(theme_name: str, surprise_seed: int) ->
|
|
73
|
-
"""Render a full-color preview of the theme
|
|
68
|
+
def _render_preview(theme_name: str, surprise_seed: int) -> str:
|
|
69
|
+
"""Render a full-color ANSI preview of the theme via Rich.
|
|
74
70
|
|
|
75
71
|
``surprise_seed`` makes the "Surprise Me" preview stable while highlighted
|
|
76
72
|
(otherwise it would re-roll on every redraw - dizzying).
|
|
@@ -79,7 +75,7 @@ def _render_preview(theme_name: str, surprise_seed: int) -> ANSI:
|
|
|
79
75
|
console = Console(
|
|
80
76
|
file=buffer,
|
|
81
77
|
force_terminal=True,
|
|
82
|
-
width=
|
|
78
|
+
width=PREVIEW_WIDTH,
|
|
83
79
|
legacy_windows=False,
|
|
84
80
|
color_system="truecolor",
|
|
85
81
|
no_color=False,
|
|
@@ -123,7 +119,7 @@ def _render_preview(theme_name: str, surprise_seed: int) -> ANSI:
|
|
|
123
119
|
console.print(f" [dim]{first_line}[/dim]")
|
|
124
120
|
console.print()
|
|
125
121
|
|
|
126
|
-
# Content text samples (
|
|
122
|
+
# Content text samples (Level 1 theming)
|
|
127
123
|
console.print("[bold]" + "-" * 60 + "[/bold]")
|
|
128
124
|
console.print("[bold dim]content text styles:[/bold dim]")
|
|
129
125
|
for key, text in CONTENT_SAMPLES:
|
|
@@ -188,56 +184,43 @@ def _render_preview(theme_name: str, surprise_seed: int) -> ANSI:
|
|
|
188
184
|
console.print(
|
|
189
185
|
"[bold yellow]\u26a1[/bold yellow] [dim]Resets terminal bg/fg/ANSI palette too.[/dim]"
|
|
190
186
|
)
|
|
191
|
-
return
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
def _total_pages() -> int:
|
|
195
|
-
return max(1, (len(MENU) + THEMES_PER_PAGE - 1) // THEMES_PER_PAGE)
|
|
187
|
+
return buffer.getvalue()
|
|
196
188
|
|
|
197
189
|
|
|
198
|
-
def
|
|
199
|
-
|
|
190
|
+
def build_theme_menu(**menu_overrides):
|
|
191
|
+
"""Build the termflow Menu for the theme catalog.
|
|
200
192
|
|
|
193
|
+
``menu_overrides`` forward to the builder (``key_source``, ``output``,
|
|
194
|
+
``size``, ``alt_screen``) so tests can drive the menu headlessly.
|
|
195
|
+
"""
|
|
196
|
+
# Stable seed for "Surprise Me" preview per highlight; bumps on each focus
|
|
197
|
+
# so re-highlighting rolls fresh colors without flickering mid-highlight.
|
|
198
|
+
surprise_seed = [random.randint(0, 1_000_000)]
|
|
201
199
|
|
|
202
|
-
def
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
200
|
+
def _on_highlight(item: MenuItem) -> None:
|
|
201
|
+
if item.value == "surprise":
|
|
202
|
+
surprise_seed[0] = random.randint(0, 1_000_000)
|
|
206
203
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
("class:tui.muted", f" Page {page + 1}/{_total_pages()}"),
|
|
215
|
-
("", "\n\n"),
|
|
204
|
+
items = [
|
|
205
|
+
MenuItem(
|
|
206
|
+
f"{theme['icon']} {theme['label']}",
|
|
207
|
+
value=name,
|
|
208
|
+
description=theme["blurb"],
|
|
209
|
+
)
|
|
210
|
+
for name, theme in MENU
|
|
216
211
|
]
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
lines.append(("", "\n\n"))
|
|
226
|
-
|
|
227
|
-
lines.append(("", "\n"))
|
|
228
|
-
lines.extend(
|
|
229
|
-
[
|
|
230
|
-
("class:tui.help-key", "Up/Down"),
|
|
231
|
-
("class:tui.help", " Navigate | "),
|
|
232
|
-
("class:tui.help-key", "PgUp/PgDn"),
|
|
233
|
-
("class:tui.help", " Page\n"),
|
|
234
|
-
("class:tui.help-key", "Enter"),
|
|
235
|
-
("class:tui.help", " Apply | "),
|
|
236
|
-
("class:tui.help-key", "Esc / Ctrl-C"),
|
|
237
|
-
("class:tui.help", " Cancel"),
|
|
238
|
-
]
|
|
212
|
+
builder = (
|
|
213
|
+
MenuBuilder("Pick a Theme")
|
|
214
|
+
.items(items)
|
|
215
|
+
.page_size(THEMES_PER_PAGE)
|
|
216
|
+
.list_width(LIST_WIDTH)
|
|
217
|
+
.preview(lambda item: _render_preview(item.value, surprise_seed[0]))
|
|
218
|
+
.on_highlight(_on_highlight)
|
|
219
|
+
.footer_hint("Up/Down navigate - PgUp/PgDn page - Enter apply - Esc cancel")
|
|
239
220
|
)
|
|
240
|
-
|
|
221
|
+
for name, value in menu_overrides.items():
|
|
222
|
+
getattr(builder, name)(value)
|
|
223
|
+
return builder.build()
|
|
241
224
|
|
|
242
225
|
|
|
243
226
|
async def interactive_theme_picker() -> Optional[str]:
|
|
@@ -248,111 +231,12 @@ async def interactive_theme_picker() -> Optional[str]:
|
|
|
248
231
|
"""
|
|
249
232
|
from code_puppy.tools.command_runner import set_awaiting_user_input
|
|
250
233
|
|
|
251
|
-
selected = [0]
|
|
252
|
-
result: list[Optional[str]] = [None]
|
|
253
|
-
# Stable seed for "Surprise Me" preview per highlight; bumps on each focus.
|
|
254
|
-
surprise_seed = [random.randint(0, 1_000_000)]
|
|
255
|
-
|
|
256
234
|
set_awaiting_user_input(True)
|
|
257
|
-
sys.stdout.write("\033[?1049h\033[2J\033[H")
|
|
258
|
-
sys.stdout.flush()
|
|
259
|
-
await asyncio.sleep(0.05)
|
|
260
|
-
|
|
261
|
-
kb = KeyBindings()
|
|
262
|
-
|
|
263
|
-
def _refresh_surprise_seed_if_focused() -> None:
|
|
264
|
-
name, _ = MENU[selected[0]]
|
|
265
|
-
if name == "surprise":
|
|
266
|
-
surprise_seed[0] = random.randint(0, 1_000_000)
|
|
267
|
-
|
|
268
|
-
@kb.add("up")
|
|
269
|
-
@kb.add("c-p")
|
|
270
|
-
def _(event):
|
|
271
|
-
selected[0] = (selected[0] - 1) % len(MENU)
|
|
272
|
-
_refresh_surprise_seed_if_focused()
|
|
273
|
-
event.app.invalidate()
|
|
274
|
-
|
|
275
|
-
@kb.add("down")
|
|
276
|
-
@kb.add("c-n")
|
|
277
|
-
def _(event):
|
|
278
|
-
selected[0] = (selected[0] + 1) % len(MENU)
|
|
279
|
-
_refresh_surprise_seed_if_focused()
|
|
280
|
-
event.app.invalidate()
|
|
281
|
-
|
|
282
|
-
@kb.add("pageup")
|
|
283
|
-
def _(event):
|
|
284
|
-
selected[0] = _move_page(selected[0], -1)
|
|
285
|
-
_refresh_surprise_seed_if_focused()
|
|
286
|
-
event.app.invalidate()
|
|
287
|
-
|
|
288
|
-
@kb.add("pagedown")
|
|
289
|
-
def _(event):
|
|
290
|
-
selected[0] = _move_page(selected[0], 1)
|
|
291
|
-
_refresh_surprise_seed_if_focused()
|
|
292
|
-
event.app.invalidate()
|
|
293
|
-
|
|
294
|
-
@kb.add("enter")
|
|
295
|
-
def _(event):
|
|
296
|
-
result[0] = MENU[selected[0]][0]
|
|
297
|
-
event.app.exit()
|
|
298
|
-
|
|
299
|
-
@kb.add("escape")
|
|
300
|
-
@kb.add("c-c")
|
|
301
|
-
def _(event):
|
|
302
|
-
result[0] = None
|
|
303
|
-
event.app.exit()
|
|
304
|
-
|
|
305
|
-
def _current_preview_style() -> str:
|
|
306
|
-
"""Dynamic prompt_toolkit style for the preview pane.
|
|
307
|
-
|
|
308
|
-
Paints the WHOLE right pane background with the selected theme's bg,
|
|
309
|
-
and picks a readable fg, so the user instantly sees the new color.
|
|
310
|
-
Updates every render via prompt_toolkit's dynamic-style support.
|
|
311
|
-
"""
|
|
312
|
-
name, _ = MENU[selected[0]]
|
|
313
|
-
try:
|
|
314
|
-
tp = terminal_palette_for(name)
|
|
315
|
-
except Exception:
|
|
316
|
-
tp = None
|
|
317
|
-
if not tp:
|
|
318
|
-
return ""
|
|
319
|
-
bg = tp.get("bg")
|
|
320
|
-
fg = tp.get("fg", "")
|
|
321
|
-
parts = []
|
|
322
|
-
if bg:
|
|
323
|
-
parts.append(f"bg:{bg}")
|
|
324
|
-
if fg:
|
|
325
|
-
parts.append(f"fg:{fg}")
|
|
326
|
-
return " ".join(parts)
|
|
327
|
-
|
|
328
|
-
left = Window(
|
|
329
|
-
content=FormattedTextControl(lambda: _format_menu(selected[0])),
|
|
330
|
-
width=40,
|
|
331
|
-
)
|
|
332
|
-
right = Window(
|
|
333
|
-
content=FormattedTextControl(
|
|
334
|
-
lambda: _render_preview(MENU[selected[0]][0], surprise_seed[0])
|
|
335
|
-
),
|
|
336
|
-
style=_current_preview_style,
|
|
337
|
-
)
|
|
338
|
-
|
|
339
|
-
layout = Layout(
|
|
340
|
-
VSplit([Frame(left, title="Themes"), Frame(right, title="Live Preview")])
|
|
341
|
-
)
|
|
342
|
-
app = Application(
|
|
343
|
-
layout=layout,
|
|
344
|
-
key_bindings=kb,
|
|
345
|
-
full_screen=False,
|
|
346
|
-
mouse_support=False,
|
|
347
|
-
color_depth="DEPTH_24_BIT",
|
|
348
|
-
style=on_prompt_toolkit_style(),
|
|
349
|
-
)
|
|
350
|
-
|
|
351
235
|
try:
|
|
352
|
-
|
|
236
|
+
# The menu blocks on raw stdin reads; keep the event loop breathing.
|
|
237
|
+
result = await asyncio.to_thread(build_theme_menu().run)
|
|
353
238
|
finally:
|
|
354
239
|
set_awaiting_user_input(False)
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
return result[0]
|
|
240
|
+
if result.cancelled or result.item is None:
|
|
241
|
+
return None
|
|
242
|
+
return result.item.value
|