code-puppy-core-plugins 0.0.53__tar.gz → 0.0.54__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.
Files changed (369) hide show
  1. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/PKG-INFO +1 -1
  2. code_puppy_core_plugins-0.0.54/code_puppy_core_plugins/mcp_binding_prompt/README.md +32 -0
  3. code_puppy_core_plugins-0.0.54/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +1 -0
  4. code_puppy_core_plugins-0.0.54/code_puppy_core_plugins/mcp_binding_prompt/custom_install.py +58 -0
  5. code_puppy_core_plugins-0.0.54/code_puppy_core_plugins/mcp_binding_prompt/http_form.py +223 -0
  6. code_puppy_core_plugins-0.0.54/code_puppy_core_plugins/mcp_binding_prompt/register_callbacks.py +48 -0
  7. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/plugins_menu.py +6 -16
  8. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +1 -14
  9. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/pyproject.toml +2 -1
  10. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/.gitignore +0 -0
  11. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/LICENSE +0 -0
  12. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/README.md +0 -0
  13. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/__init__.py +0 -0
  14. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/README.md +0 -0
  15. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/__init__.py +0 -0
  16. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/agent.py +0 -0
  17. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/bridge.py +0 -0
  18. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/capabilities.py +0 -0
  19. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/commands.py +0 -0
  20. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/content.py +0 -0
  21. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
  22. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
  23. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/permissions.py +0 -0
  24. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/persistence.py +0 -0
  25. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
  26. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/replay.py +0 -0
  27. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/session.py +0 -0
  28. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/session_config.py +0 -0
  29. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/acp/state.py +0 -0
  30. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
  31. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
  32. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
  33. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
  34. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/config.py +0 -0
  35. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
  36. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/downloader.py +0 -0
  37. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
  38. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/installer.py +0 -0
  39. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
  40. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
  41. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
  42. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
  43. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/remote_catalog.py +0 -0
  44. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/skill_catalog.py +0 -0
  45. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
  46. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/skills_install_menu.py +0 -0
  47. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
  48. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
  49. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
  50. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
  51. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
  52. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
  53. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
  54. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
  55. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
  56. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
  57. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
  58. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
  59. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
  60. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
  61. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
  62. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/background_agents/README.md +0 -0
  63. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
  64. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
  65. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/btw/__init__.py +0 -0
  66. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/btw/inline_view.py +0 -0
  67. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
  68. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/btw/side_query.py +0 -0
  69. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
  70. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
  71. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
  72. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
  73. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
  74. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
  75. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
  76. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
  77. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
  78. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
  79. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
  80. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
  81. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
  82. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
  83. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
  84. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
  85. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
  86. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
  87. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
  88. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
  89. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
  90. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
  91. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
  92. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
  93. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
  94. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
  95. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  96. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
  97. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
  98. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
  99. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
  100. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
  101. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
  102. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
  103. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
  104. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
  105. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
  106. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
  107. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
  108. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/config.py +0 -0
  109. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
  110. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
  111. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
  112. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
  113. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
  114. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
  115. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/README.md +0 -0
  116. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
  117. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
  118. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/activation.py +0 -0
  119. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/backend.py +0 -0
  120. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
  121. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/capture.py +0 -0
  122. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/commands.py +0 -0
  123. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
  124. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
  125. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
  126. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/policy.py +0 -0
  127. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
  128. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/safety.py +0 -0
  129. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/settle.py +0 -0
  130. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/state.py +0 -0
  131. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/computer_use/tools.py +0 -0
  132. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
  133. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
  134. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
  135. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
  136. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
  137. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
  138. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
  139. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
  140. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
  141. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
  142. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
  143. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
  144. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
  145. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
  146. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
  147. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
  148. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
  149. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
  150. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
  151. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
  152. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
  153. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
  154. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
  155. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
  156. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
  157. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
  158. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
  159. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
  160. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
  161. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
  162. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
  163. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
  164. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
  165. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
  166. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
  167. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
  168. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
  169. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
  170. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
  171. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
  172. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
  173. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
  174. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
  175. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
  176. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
  177. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
  178. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
  179. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
  180. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
  181. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
  182. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
  183. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
  184. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
  185. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
  186. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
  187. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
  188. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
  189. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
  190. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
  191. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
  192. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
  193. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
  194. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
  195. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
  196. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
  197. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/fork/__init__.py +0 -0
  198. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
  199. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
  200. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
  201. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
  202. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
  203. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
  204. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
  205. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
  206. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
  207. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
  208. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/README.md +0 -0
  209. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/__init__.py +0 -0
  210. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/client.py +0 -0
  211. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
  212. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/reporter.py +0 -0
  213. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/smoke.py +0 -0
  214. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/herdr/sources.py +0 -0
  215. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
  216. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
  217. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
  218. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_manager/config.py +0 -0
  219. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
  220. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
  221. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
  222. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
  223. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
  224. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
  225. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
  226. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
  227. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
  228. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
  229. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
  230. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
  231. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
  232. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
  233. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
  234. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
  235. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
  236. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
  237. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
  238. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
  239. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
  240. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
  241. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
  242. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
  243. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
  244. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
  245. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
  246. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
  247. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
  248. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
  249. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/ollama/__init__.py +0 -0
  250. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
  251. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
  252. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
  253. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
  254. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
  255. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
  256. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
  257. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
  258. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
  259. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
  260. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
  261. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
  262. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
  263. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
  264. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
  265. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
  266. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
  267. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/profiles/README.md +0 -0
  268. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/profiles/__init__.py +0 -0
  269. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/profiles/config.py +0 -0
  270. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
  271. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/profiles/menu.py +0 -0
  272. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
  273. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
  274. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
  275. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
  276. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prune/__init__.py +0 -0
  277. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
  278. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prune/prune_model.py +0 -0
  279. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prune/prune_render.py +0 -0
  280. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
  281. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
  282. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
  283. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
  284. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
  285. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
  286. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
  287. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
  288. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
  289. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
  290. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
  291. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
  292. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
  293. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
  294. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
  295. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
  296. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
  297. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
  298. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
  299. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
  300. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
  301. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
  302. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
  303. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
  304. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
  305. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
  306. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
  307. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
  308. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
  309. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/session_namer/namer.py +0 -0
  310. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
  311. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
  312. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/spill/__init__.py +0 -0
  313. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
  314. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/spill/store.py +0 -0
  315. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
  316. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
  317. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/__init__.py +0 -0
  318. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/config.py +0 -0
  319. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/payload.py +0 -0
  320. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
  321. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
  322. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/runner.py +0 -0
  323. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
  324. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
  325. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
  326. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
  327. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
  328. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
  329. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
  330. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
  331. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
  332. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
  333. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
  334. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
  335. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
  336. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/termflow_tui.py +0 -0
  337. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/README.md +0 -0
  338. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/__init__.py +0 -0
  339. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
  340. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/content_styles.py +0 -0
  341. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
  342. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/picker.py +0 -0
  343. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
  344. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
  345. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
  346. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/theme/themes.py +0 -0
  347. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
  348. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
  349. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -0
  350. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -0
  351. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -0
  352. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
  353. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
  354. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
  355. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
  356. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
  357. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
  358. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
  359. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
  360. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
  361. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
  362. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
  363. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/judge.py +0 -0
  364. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
  365. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
  366. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
  367. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/wiggum/state.py +0 -0
  368. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
  369. {code_puppy_core_plugins-0.0.53 → code_puppy_core_plugins-0.0.54}/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.53
3
+ Version: 0.0.54
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,32 @@
1
+ # mcp_binding_prompt
2
+
3
+ Three MCP-install affordances layered over core at `startup`, no core edits:
4
+
5
+ 1. **Synchronous post-install binding prompt.** Core's installers call
6
+ `mcp_binding_menu.prompt_bind_after_install_sync(server_name)` inside a
7
+ `try/except ImportError` -- without this plugin the call silently no-ops.
8
+ `register_callbacks.py` provides that function: it runs the existing
9
+ `build_post_install_menu` inline in the installer's foreground (inside
10
+ `menu_session()`, with `set_awaiting_user_input` toggled) instead of
11
+ scheduling a competing UI task.
12
+ 2. **`/mcp install` is custom-JSON only** (`custom_install.py`). The bundled
13
+ marketplace is gone: `InstallCommand.execute` opens the custom server form
14
+ directly, `SearchCommand.execute` explains the removal, `HelpCommand.execute`
15
+ prints the trimmed help, and `MCPCompleter` stops advertising `search`.
16
+ 3. **HTTP form fields** (`http_form.py`). When the custom form's type is
17
+ `http`, `run_form_flow`'s `menu_factory` is swapped for `HTTPMenu`, which
18
+ exposes URL / auth (none, OAuth, headers) / headers as proper fields on
19
+ top of the raw JSON blob. Saving validates the URL (scheme, host, no
20
+ embedded credentials or whitespace), the headers (string keys/values, no
21
+ CRLF), and runs the config through core's `http_auth` transport policy.
22
+ Malformed advanced JSON falls back to the core menu so it stays editable.
23
+ Switching type to `http` with an untouched example seeds a minimal config.
24
+
25
+ All strings go through `code_puppy.i18n` (`mcp.custom_install.*`,
26
+ `mcp.http_form.*`); the keys live in core's `en-US` catalog.
27
+
28
+ ## Notes
29
+
30
+ - Every patch is idempotent (`_custom_json_install` / `_http_fields` markers).
31
+ - `HelpCommand.execute` is fully replaced, so new core `/mcp` subcommands must
32
+ also be added to the `mcp.custom_install.help` catalog string.
@@ -0,0 +1 @@
1
+ """Restore the synchronous post-install MCP binding prompt."""
@@ -0,0 +1,58 @@
1
+ """Custom JSON replaces the bundled MCP marketplace at the command boundary."""
2
+
3
+ import logging
4
+ from functools import wraps
5
+
6
+ from code_puppy.i18n import t
7
+ from code_puppy.messaging import emit_error, emit_info
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ def install_custom(command, args, group_id=None):
13
+ """Keep the existing form's save, cancel, and binding semantics."""
14
+ from code_puppy.command_line.mcp.custom_server_form import run_custom_server_form
15
+
16
+ try:
17
+ run_custom_server_form(command.manager)
18
+ except (KeyboardInterrupt, EOFError):
19
+ return
20
+ except Exception as exc:
21
+ logger.exception("Custom MCP installation failed")
22
+ emit_error(
23
+ t("mcp.custom_install.failed", error=str(exc)), message_group=group_id
24
+ )
25
+
26
+
27
+ def marketplace_removed(command, args, group_id=None):
28
+ emit_info(t("mcp.custom_install.no_marketplace"), message_group=group_id)
29
+
30
+
31
+ def custom_help(command, args, group_id=None):
32
+ emit_info(t("mcp.custom_install.help"), message_group=group_id)
33
+
34
+
35
+ def install_routes():
36
+ # Known slash commands do not reach custom_command. Install the override
37
+ # at startup, leaving core command_line files and existing instances intact.
38
+ from code_puppy.command_line.mcp.install_command import InstallCommand
39
+ from code_puppy.command_line.mcp.search_command import SearchCommand
40
+ from code_puppy.command_line.mcp.help_command import HelpCommand
41
+ from code_puppy.command_line.mcp_completion import MCPCompleter
42
+
43
+ original = MCPCompleter.__init__
44
+ if getattr(original, "_custom_json_install", False):
45
+ return # already routed -- never double-wrap the completer
46
+ InstallCommand.execute = install_custom
47
+ SearchCommand.execute = marketplace_removed
48
+ HelpCommand.execute = custom_help
49
+
50
+ @wraps(original)
51
+ def initialize(completer, *args, **kwargs):
52
+ original(completer, *args, **kwargs)
53
+ for commands in (completer.general_subcommands, completer.all_subcommands):
54
+ commands.pop("search", None)
55
+ commands["install"] = t("mcp.custom_install.description")
56
+
57
+ initialize._custom_json_install = True
58
+ MCPCompleter.__init__ = initialize
@@ -0,0 +1,223 @@
1
+ """HTTP fields layered over the existing custom form and persistence loop."""
2
+
3
+ import json
4
+ from urllib.parse import urlsplit
5
+
6
+ from code_puppy.i18n import t
7
+
8
+
9
+ def read_config(form):
10
+ config = json.loads(form.json_config)
11
+ if not isinstance(config, dict):
12
+ raise ValueError(t("mcp.http_form.object_required"))
13
+ return config
14
+
15
+
16
+ def validate_headers(headers):
17
+ """Non-empty string keys, string values, no CRLF (header injection)."""
18
+ if not isinstance(headers, dict) or any(
19
+ not isinstance(key, str)
20
+ or not isinstance(value, str)
21
+ or not key
22
+ or any(char in key + value for char in "\r\n")
23
+ for key, value in headers.items()
24
+ ):
25
+ raise ValueError(t("mcp.http_form.invalid_headers"))
26
+
27
+
28
+ def validate_config(config):
29
+ url = config.get("url", "")
30
+ if not isinstance(url, str):
31
+ raise ValueError(t("mcp.http_form.invalid_url"))
32
+ parsed = urlsplit(url)
33
+ if (
34
+ parsed.scheme not in ("https", "http")
35
+ or not parsed.hostname
36
+ or parsed.username is not None
37
+ or parsed.password is not None
38
+ or any(char.isspace() for char in url)
39
+ ):
40
+ raise ValueError(t("mcp.http_form.invalid_url"))
41
+ headers = config.get("headers", {})
42
+ validate_headers(headers)
43
+ from code_puppy.mcp_.http_auth import http_auth
44
+
45
+ # Reuse transport security policy; constructing OAuth does not start login.
46
+ http_auth(config, url, headers)
47
+
48
+
49
+ def save_config(form, config):
50
+ form.json_config = json.dumps(config, indent=2)
51
+
52
+
53
+ def input_text(title, initial):
54
+ from termflow.tui import TextInputBuilder
55
+ from code_puppy.command_line.tui_style import menu_style
56
+
57
+ builder = TextInputBuilder(title).initial(initial).alt_screen(False)
58
+ style = menu_style()
59
+ if style is not None:
60
+ builder.style(style)
61
+ result = builder.build().run()
62
+ return None if result.cancelled else result.value
63
+
64
+
65
+ def choose_auth(config):
66
+ from termflow.tui import MenuBuilder, MenuItem
67
+ from code_puppy.command_line.tui_style import themed
68
+
69
+ result = (
70
+ themed(
71
+ MenuBuilder(t("mcp.http_form.auth"))
72
+ .items(
73
+ [
74
+ MenuItem(t("mcp.http_form.none"), value="none"),
75
+ MenuItem(t("mcp.http_form.oauth"), value="oauth"),
76
+ MenuItem(t("mcp.http_form.headers_auth"), value="headers"),
77
+ ]
78
+ )
79
+ .alt_screen(False)
80
+ )
81
+ .build()
82
+ .run()
83
+ )
84
+ if result.cancelled or result.item is None:
85
+ return False
86
+ if result.item.value == "oauth":
87
+ config["auth"] = "oauth"
88
+ # New OAuth selections need time for a human to finish browser login.
89
+ if config.get("timeout", 30) == 30:
90
+ config["timeout"] = 330
91
+ else:
92
+ config.pop("auth", None)
93
+ if result.item.value == "none":
94
+ headers = config.get("headers", {})
95
+ config["headers"] = {
96
+ key: val for key, val in headers.items() if key.lower() != "authorization"
97
+ }
98
+ if result.item.value == "headers":
99
+ return edit_headers(config)
100
+ return True
101
+
102
+
103
+ def edit_headers(config):
104
+ value = input_text(
105
+ t("mcp.http_form.headers_prompt"), json.dumps(config.get("headers", {}))
106
+ )
107
+ if value is None:
108
+ return False
109
+ try:
110
+ headers = json.loads(value or "{}")
111
+ except ValueError:
112
+ # A JSONDecodeError message is noise in the footer; say what we mean.
113
+ raise ValueError(t("mcp.http_form.invalid_headers")) from None
114
+ validate_headers(headers)
115
+ if headers:
116
+ config["headers"] = headers
117
+ else:
118
+ config.pop("headers", None)
119
+ return True
120
+
121
+
122
+ class HTTPMenu:
123
+ def __init__(self, form, original, overrides):
124
+ self.form = form
125
+ self.original = original
126
+ self.overrides = overrides
127
+
128
+ def run(self):
129
+ from termflow.tui import MenuBuilder, MenuItem
130
+ from code_puppy.command_line.tui_style import themed
131
+
132
+ form = self.form
133
+ while True:
134
+ try:
135
+ config = read_config(form)
136
+ except (ValueError, TypeError):
137
+ # Advanced malformed JSON remains editable, never discarded.
138
+ return self.original(form, **self.overrides).run()
139
+ auth = (
140
+ "oauth"
141
+ if config.get("auth") == "oauth"
142
+ else (
143
+ "headers_auth"
144
+ if any(
145
+ key.lower() == "authorization"
146
+ for key in config.get("headers", {})
147
+ )
148
+ else "none"
149
+ )
150
+ )
151
+ items = [
152
+ MenuItem(t("mcp.http_form.name", name=form.server_name), value="name"),
153
+ MenuItem(t("mcp.http_form.type"), value="type"),
154
+ MenuItem(t("mcp.http_form.url"), value="http_url"),
155
+ MenuItem(
156
+ t("mcp.http_form.auth_value", auth=t("mcp.http_form." + auth)),
157
+ value="http_auth",
158
+ ),
159
+ MenuItem(t("mcp.http_form.headers"), value="http_headers"),
160
+ MenuItem(t("mcp.http_form.advanced"), value="json"),
161
+ MenuItem(t("mcp.http_form.save"), value="save"),
162
+ MenuItem(t("mcp.http_form.cancel"), value="cancel"),
163
+ ]
164
+ # Do not echo credentials, header values, or URL query secrets.
165
+ builder = themed(
166
+ MenuBuilder(t("mcp.http_form.title")).items(items).alt_screen(False)
167
+ )
168
+ if form.validation_error:
169
+ builder.footer_hint(form.validation_error)
170
+ result = builder.build().run()
171
+ if result.cancelled or result.item is None:
172
+ return result
173
+ field = result.item.value
174
+ try:
175
+ if field == "http_url":
176
+ value = input_text(t("mcp.http_form.url"), config.get("url", ""))
177
+ if value is not None:
178
+ config["url"] = value.strip()
179
+ save_config(form, config)
180
+ elif field == "http_auth":
181
+ if choose_auth(config):
182
+ save_config(form, config)
183
+ elif field == "http_headers":
184
+ if edit_headers(config):
185
+ save_config(form, config)
186
+ elif field == "save":
187
+ validate_config(config)
188
+ return result
189
+ else:
190
+ return result
191
+ form.validation_error = None
192
+ except (ValueError, TypeError) as exc:
193
+ form.validation_error = str(exc)
194
+
195
+
196
+ def install_http_form():
197
+ from code_puppy.command_line.mcp import custom_server_form as core
198
+
199
+ original = core.run_form_flow
200
+ if getattr(original, "_http_fields", False):
201
+ return
202
+
203
+ def menu(form, **overrides):
204
+ if form._get_current_type() == "http":
205
+ return HTTPMenu(form, core.build_form_menu, overrides)
206
+ return core.build_form_menu(form, **overrides)
207
+
208
+ def type_menu(form):
209
+ old_type = form._get_current_type()
210
+ untouched = (
211
+ form.json_config.strip() == core.CUSTOM_SERVER_EXAMPLES[old_type].strip()
212
+ )
213
+ core.run_type_menu(form)
214
+ if old_type != "http" and form._get_current_type() == "http" and untouched:
215
+ save_config(form, {"type": "http", "url": "", "timeout": 30})
216
+
217
+ def run(form, **kwargs):
218
+ kwargs.setdefault("menu_factory", menu)
219
+ kwargs.setdefault("type_menu", type_menu)
220
+ return original(form, **kwargs)
221
+
222
+ run._http_fields = True
223
+ core.run_form_flow = run
@@ -0,0 +1,48 @@
1
+ """Bridge synchronous installers to the existing binding menu via startup."""
2
+
3
+ import logging
4
+
5
+ from code_puppy.callbacks import register_callback
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+
10
+ def prompt_bind_after_install_sync(server_name: str) -> None:
11
+ """Run in the installer's foreground, never schedule a competing UI task."""
12
+ from code_puppy.agents import get_available_agents
13
+ from code_puppy.command_line.mcp_binding_menu import (
14
+ build_post_install_menu,
15
+ menu_session,
16
+ set_awaiting_user_input,
17
+ )
18
+
19
+ agents = sorted(get_available_agents(), key=str.lower)
20
+ if not agents:
21
+ return
22
+ set_awaiting_user_input(True)
23
+ try:
24
+ with menu_session():
25
+ build_post_install_menu(server_name, agents, alt_screen=False).run()
26
+ finally:
27
+ set_awaiting_user_input(False)
28
+
29
+
30
+ def _install() -> None:
31
+ try:
32
+ from code_puppy.command_line import mcp_binding_menu
33
+
34
+ if not hasattr(mcp_binding_menu, "prompt_bind_after_install_sync"):
35
+ mcp_binding_menu.prompt_bind_after_install_sync = (
36
+ prompt_bind_after_install_sync
37
+ )
38
+ from .custom_install import install_routes
39
+
40
+ install_routes()
41
+ from .http_form import install_http_form
42
+
43
+ install_http_form()
44
+ except Exception:
45
+ logger.exception("Could not install MCP binding prompt compatibility bridge")
46
+
47
+
48
+ register_callback("startup", _install)
@@ -82,8 +82,6 @@ class PluginsMenu:
82
82
  self.plugins: List[_PluginEntry] = []
83
83
  self.disabled: set[str] = set()
84
84
  self.project_dir: Optional[str] = None
85
- self.lock_builtin: bool = False
86
- self.hidden_builtin_count: int = 0
87
85
 
88
86
  # The trust modal disables list bindings while open, keeping accept-word
89
87
  # typing from triggering shortcuts; focus remains on its input.
@@ -131,27 +129,19 @@ class PluginsMenu:
131
129
  get_project_plugins_directory,
132
130
  )
133
131
  from code_puppy.plugins.config import get_disabled_plugins
134
- from code_puppy.plugins.config import (
135
- get_lock_builtin_plugins,
136
- )
137
132
 
138
133
  loaded = get_loaded_plugins()
139
134
  self.disabled = get_disabled_plugins()
140
- self.lock_builtin = get_lock_builtin_plugins()
141
135
 
142
136
  project_dir = get_project_plugins_directory()
143
137
  self.project_dir = project_dir.as_posix() if project_dir else None
144
138
 
145
- entries: List[_PluginEntry] = []
146
- self.hidden_builtin_count = 0
147
- for tier in ("builtin", "user", "project"):
148
- for name in sorted(loaded.get(tier, [])):
149
- # When locked, builtins are managed/protected — hide them so
150
- # they can't be toggled (the config layer refuses anyway).
151
- if self.lock_builtin and tier == "builtin":
152
- self.hidden_builtin_count += 1
153
- continue
154
- entries.append(_PluginEntry(name, tier))
139
+ # Every tier is listed and toggleable -- builtins included.
140
+ entries: List[_PluginEntry] = [
141
+ _PluginEntry(name, tier)
142
+ for tier in ("builtin", "user", "project")
143
+ for name in sorted(loaded.get(tier, []))
144
+ ]
155
145
 
156
146
  # Project plugins held back by the trust gate — shown so Enter can
157
147
  # open the ceremony popup on them.
@@ -72,21 +72,8 @@ def render_list(menu: "PluginsMenu") -> Fragments:
72
72
  lines.append(("bold", " Plugins"))
73
73
  lines.append(("", "\n\n"))
74
74
 
75
- if menu.lock_builtin and menu.hidden_builtin_count:
76
- lines.append(
77
- (
78
- "class:tui.muted",
79
- f" {menu.hidden_builtin_count} builtin plugins are "
80
- f"managed and hidden.",
81
- )
82
- )
83
- lines.append(("", "\n\n"))
84
-
85
75
  if not menu.plugins:
86
- if menu.lock_builtin and menu.hidden_builtin_count:
87
- lines.append(("class:tui.warning", " No user or project plugins loaded."))
88
- else:
89
- lines.append(("class:tui.warning", " No plugins loaded."))
76
+ lines.append(("class:tui.warning", " No plugins loaded."))
90
77
  lines.append(("", "\n"))
91
78
  _render_hints(lines)
92
79
  return lines
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy-core-plugins"
7
- version = "0.0.53"
7
+ version = "0.0.54"
8
8
  description = "Official plugin bundle for Code Puppy"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -61,6 +61,7 @@ hook_creator = "code_puppy_core_plugins.hook_creator.register_callbacks"
61
61
  hook_manager = "code_puppy_core_plugins.hook_manager.register_callbacks"
62
62
  logfire_oauth = "code_puppy_core_plugins.logfire_oauth.register_callbacks"
63
63
  logfire_sessions = "code_puppy_core_plugins.logfire_sessions.register_callbacks"
64
+ mcp_binding_prompt = "code_puppy_core_plugins.mcp_binding_prompt.register_callbacks"
64
65
  meta_oauth = "code_puppy_core_plugins.meta_oauth.register_callbacks"
65
66
  namespace_skill_search = "code_puppy_core_plugins.namespace_skill_search.register_callbacks"
66
67
  no_tools = "code_puppy_core_plugins.no_tools.register_callbacks"