code-puppy-core-plugins 0.0.77__tar.gz → 0.0.79__tar.gz

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