code-puppy-core-plugins 0.0.17__tar.gz → 0.0.20__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 (341) hide show
  1. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/PKG-INFO +2 -1
  2. code_puppy_core_plugins-0.0.20/code_puppy_core_plugins/session_namer/__init__.py +1 -0
  3. code_puppy_core_plugins-0.0.20/code_puppy_core_plugins/session_namer/namer.py +255 -0
  4. code_puppy_core_plugins-0.0.20/code_puppy_core_plugins/session_namer/register_callbacks.py +86 -0
  5. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/pyproject.toml +3 -1
  6. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/.gitignore +0 -0
  7. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/LICENSE +0 -0
  8. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/README.md +0 -0
  9. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/__init__.py +0 -0
  10. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/README.md +0 -0
  11. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/__init__.py +0 -0
  12. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/agent.py +0 -0
  13. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/bridge.py +0 -0
  14. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/capabilities.py +0 -0
  15. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/commands.py +0 -0
  16. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/content.py +0 -0
  17. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
  18. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
  19. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/permissions.py +0 -0
  20. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/persistence.py +0 -0
  21. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
  22. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/replay.py +0 -0
  23. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/session.py +0 -0
  24. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/session_config.py +0 -0
  25. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/acp/state.py +0 -0
  26. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
  27. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
  28. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
  29. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
  30. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/config.py +0 -0
  31. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
  32. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/downloader.py +0 -0
  33. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
  34. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/installer.py +0 -0
  35. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
  36. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
  37. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
  38. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
  39. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/remote_catalog.py +0 -0
  40. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/skill_catalog.py +0 -0
  41. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
  42. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/skills_install_menu.py +0 -0
  43. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
  44. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
  45. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
  46. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
  47. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
  48. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
  49. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
  50. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
  51. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
  52. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
  53. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
  54. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
  55. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/btw/__init__.py +0 -0
  56. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/btw/inline_view.py +0 -0
  57. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
  58. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/btw/side_query.py +0 -0
  59. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
  60. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
  61. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
  62. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
  63. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
  64. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
  65. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
  66. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
  67. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
  68. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
  69. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
  70. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
  71. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
  72. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
  73. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
  74. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
  75. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
  76. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
  77. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
  78. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
  79. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
  80. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
  81. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
  82. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  83. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
  84. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
  85. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
  86. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
  87. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
  88. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
  89. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
  90. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
  91. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
  92. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
  93. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
  94. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/README.md +0 -0
  95. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
  96. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
  97. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/activation.py +0 -0
  98. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/backend.py +0 -0
  99. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
  100. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/capture.py +0 -0
  101. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/commands.py +0 -0
  102. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
  103. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
  104. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
  105. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/policy.py +0 -0
  106. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
  107. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/safety.py +0 -0
  108. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/settle.py +0 -0
  109. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/state.py +0 -0
  110. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/computer_use/tools.py +0 -0
  111. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
  112. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
  113. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
  114. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
  115. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
  116. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
  117. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
  118. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
  119. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
  120. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
  121. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
  122. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
  123. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
  124. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
  125. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
  126. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
  127. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
  128. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
  129. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
  130. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
  131. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
  132. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
  133. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
  134. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
  135. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
  136. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
  137. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
  138. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
  139. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
  140. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
  141. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
  142. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
  143. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
  144. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
  145. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
  146. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
  147. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
  148. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
  149. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
  150. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
  151. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
  152. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
  153. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
  154. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
  155. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
  156. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
  157. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
  158. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
  159. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
  160. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
  161. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
  162. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
  163. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
  164. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
  165. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
  166. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
  167. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
  168. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
  169. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
  170. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
  171. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
  172. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
  173. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
  174. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
  175. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/fork/__init__.py +0 -0
  176. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
  177. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
  178. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
  179. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
  180. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
  181. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
  182. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
  183. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
  184. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
  185. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
  186. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/README.md +0 -0
  187. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/__init__.py +0 -0
  188. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/client.py +0 -0
  189. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
  190. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/reporter.py +0 -0
  191. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/smoke.py +0 -0
  192. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/herdr/sources.py +0 -0
  193. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
  194. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
  195. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
  196. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_manager/config.py +0 -0
  197. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
  198. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
  199. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
  200. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
  201. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
  202. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
  203. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
  204. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
  205. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
  206. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
  207. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
  208. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
  209. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
  210. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
  211. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
  212. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
  213. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
  214. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
  215. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
  216. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
  217. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
  218. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
  219. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
  220. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
  221. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
  222. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
  223. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
  224. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
  225. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
  226. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
  227. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/ollama/__init__.py +0 -0
  228. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
  229. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
  230. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
  231. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
  232. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
  233. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
  234. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
  235. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
  236. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
  237. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/plugins_menu_layout.py +0 -0
  238. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
  239. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
  240. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
  241. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
  242. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
  243. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
  244. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
  245. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
  246. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prune/__init__.py +0 -0
  247. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
  248. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prune/prune_model.py +0 -0
  249. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prune/prune_render.py +0 -0
  250. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
  251. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
  252. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
  253. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
  254. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
  255. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
  256. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
  257. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
  258. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
  259. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
  260. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
  261. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
  262. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
  263. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
  264. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
  265. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
  266. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
  267. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
  268. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
  269. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
  270. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
  271. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
  272. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
  273. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
  274. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
  275. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
  276. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
  277. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
  278. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/shell_safety/__init__.py +0 -0
  279. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/shell_safety/agent_shell_safety.py +0 -0
  280. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/shell_safety/command_cache.py +0 -0
  281. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/shell_safety/register_callbacks.py +0 -0
  282. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
  283. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/spill/__init__.py +0 -0
  284. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
  285. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/spill/store.py +0 -0
  286. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
  287. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
  288. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/__init__.py +0 -0
  289. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/config.py +0 -0
  290. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/payload.py +0 -0
  291. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
  292. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
  293. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/runner.py +0 -0
  294. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
  295. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
  296. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
  297. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
  298. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
  299. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
  300. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
  301. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
  302. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
  303. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
  304. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
  305. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
  306. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
  307. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/README.md +0 -0
  308. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/__init__.py +0 -0
  309. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
  310. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/content_styles.py +0 -0
  311. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
  312. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/picker.py +0 -0
  313. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
  314. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
  315. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
  316. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/theme/themes.py +0 -0
  317. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
  318. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
  319. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -0
  320. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -0
  321. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -0
  322. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
  323. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
  324. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
  325. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
  326. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
  327. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
  328. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
  329. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
  330. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
  331. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wide_completion_menu/__init__.py +0 -0
  332. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wide_completion_menu/register_callbacks.py +0 -0
  333. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
  334. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
  335. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/judge.py +0 -0
  336. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
  337. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
  338. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
  339. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/wiggum/state.py +0 -0
  340. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
  341. {code_puppy_core_plugins-0.0.17 → code_puppy_core_plugins-0.0.20}/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.17
3
+ Version: 0.0.20
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
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Requires-Python: <3.15,>=3.11
17
17
  Requires-Dist: httpx<1,>=0.24.1
18
+ Requires-Dist: prompt-toolkit<4,>=3.0.0
18
19
  Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai]<3,>=2.31.0
19
20
  Description-Content-Type: text/markdown
20
21
 
@@ -0,0 +1 @@
1
+ """AI session naming: titles, subtitles, and tags for /resume."""
@@ -0,0 +1,255 @@
1
+ """One-shot model calls that name autosave sessions for the /resume browser.
2
+
3
+ Writes ``title`` / ``subtitle`` / ``tags`` into the session's metadata
4
+ sidecar -- the exact keys the two-pane session browser already reads --
5
+ plus ``ai_named_at`` (the message count at naming time) so re-naming is
6
+ **incremental**: the previous summary and only the messages since the
7
+ last naming are fed back to the model, letting the title evolve
8
+ gracefully instead of being regenerated from scratch.
9
+
10
+ Follows the ``btw`` side-query pattern: a throwaway history-free
11
+ pydantic_ai Agent on a worker thread with its own event loop. All work
12
+ funnels through a single-worker executor so a burst of autosaves can
13
+ never stampede the model.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import asyncio
19
+ import concurrent.futures
20
+ import json
21
+ import logging
22
+ import re
23
+ import threading
24
+ from pathlib import Path
25
+ from typing import Optional
26
+
27
+ logger = logging.getLogger(__name__)
28
+
29
+ QUERY_TIMEOUT_S = 60.0
30
+ # Re-name after this many new messages accumulate since the last naming.
31
+ RENAME_DELTA = 16
32
+ # Max sessions to backfill per browser open (cost control).
33
+ BACKFILL_LIMIT = 10
34
+ _DIGEST_CHAR_BUDGET = 2400
35
+ _SNIPPET_CHARS = 240
36
+ _MAX_TAGS = 4
37
+
38
+ _INSTRUCTIONS = (
39
+ "You name coding-agent chat sessions for a resume picker. Given a "
40
+ "digest of the conversation (and possibly the previous summary), "
41
+ "reply with ONLY a JSON object: "
42
+ '{"title": <=8 words naming the main task, '
43
+ '"subtitle": <=12 words of concrete detail, '
44
+ '"tags": up to 4 lowercase single-word topic tags}. '
45
+ "When a previous summary is provided, refine it: keep the title "
46
+ "stable unless the session's focus materially changed. "
47
+ "No prose, no code fences -- just the JSON object."
48
+ )
49
+
50
+ _executor = concurrent.futures.ThreadPoolExecutor(
51
+ max_workers=1, thread_name_prefix="session-namer"
52
+ )
53
+ _inflight: set[str] = set()
54
+ _inflight_lock = threading.Lock()
55
+
56
+
57
+ def naming_needed(meta: dict) -> bool:
58
+ """True when a session has never been AI-named or grew enough since."""
59
+ named_at = meta.get("ai_named_at")
60
+ if not isinstance(named_at, int):
61
+ return True
62
+ try:
63
+ count = int(meta.get("message_count", 0))
64
+ except (TypeError, ValueError):
65
+ return False
66
+ return count - named_at >= RENAME_DELTA
67
+
68
+
69
+ def build_digest(history: list, since: int = 0) -> str:
70
+ """Compact plain-text digest of user/assistant turns from ``since``."""
71
+ lines: list[str] = []
72
+ used = 0
73
+ for msg in history[since:]:
74
+ for part in getattr(msg, "parts", ()) or ():
75
+ kind = getattr(part, "part_kind", "")
76
+ if kind not in ("user-prompt", "text"):
77
+ continue
78
+ content = getattr(part, "content", None)
79
+ if not isinstance(content, str) or not content.strip():
80
+ continue
81
+ role = "user" if kind == "user-prompt" else "assistant"
82
+ snippet = content.strip()[:_SNIPPET_CHARS]
83
+ line = f"{role}: {snippet}"
84
+ if used + len(line) > _DIGEST_CHAR_BUDGET:
85
+ return "\n".join(lines)
86
+ lines.append(line)
87
+ used += len(line)
88
+ return "\n".join(lines)
89
+
90
+
91
+ def build_prompt(digest: str, previous: Optional[dict]) -> str:
92
+ if previous:
93
+ prior = {
94
+ "title": previous.get("title", ""),
95
+ "subtitle": previous.get("subtitle", ""),
96
+ "tags": previous.get("tags", []),
97
+ }
98
+ return (
99
+ f"Previous summary:\n{json.dumps(prior)}\n\n"
100
+ f"Conversation since then:\n{digest}"
101
+ )
102
+ return f"Conversation digest:\n{digest}"
103
+
104
+
105
+ def parse_naming(raw: str) -> Optional[dict]:
106
+ """Tolerantly extract ``{title, subtitle, tags}`` from model output."""
107
+ match = re.search(r"\{.*\}", raw, re.DOTALL)
108
+ if not match:
109
+ return None
110
+ try:
111
+ data = json.loads(match.group(0))
112
+ except (ValueError, TypeError):
113
+ return None
114
+ if not isinstance(data, dict):
115
+ return None
116
+ title = data.get("title")
117
+ if not isinstance(title, str) or not title.strip():
118
+ return None
119
+ subtitle = data.get("subtitle")
120
+ tags = data.get("tags")
121
+ clean_tags = []
122
+ if isinstance(tags, list):
123
+ for tag in tags:
124
+ if len(clean_tags) >= _MAX_TAGS:
125
+ break
126
+ if isinstance(tag, str) and tag.strip():
127
+ clean_tags.append(tag.strip().lstrip("#").lower())
128
+ return {
129
+ "title": title.strip(),
130
+ "subtitle": subtitle.strip() if isinstance(subtitle, str) else "",
131
+ "tags": clean_tags,
132
+ }
133
+
134
+
135
+ async def _ask(model_name: str, prompt: str) -> str:
136
+ """Single-turn, history-free naming query. Raises on failure."""
137
+ from pydantic_ai import Agent, UsageLimits
138
+
139
+ from code_puppy.model_factory import ModelFactory, make_model_settings
140
+ from code_puppy.model_utils import prepare_prompt_for_model
141
+
142
+ models_config = ModelFactory.load_config()
143
+ if model_name not in models_config:
144
+ raise ValueError(f"model {model_name!r} not present in the model config")
145
+
146
+ model = ModelFactory.get_model(model_name, models_config)
147
+ prepared = prepare_prompt_for_model(
148
+ model_name,
149
+ _INSTRUCTIONS,
150
+ prompt,
151
+ prepend_system_to_user=True,
152
+ )
153
+ agent = Agent(
154
+ model=model,
155
+ instructions=prepared.instructions,
156
+ retries=1,
157
+ model_settings=make_model_settings(model_name),
158
+ )
159
+ result = await agent.run(
160
+ prepared.user_prompt,
161
+ usage_limits=UsageLimits(request_limit=2),
162
+ )
163
+ return str(result.output)
164
+
165
+
166
+ def resolve_model_name() -> Optional[str]:
167
+ """Configured override first, else the ``btw`` current-model logic."""
168
+ try:
169
+ from code_puppy.config import get_value
170
+
171
+ override = str(get_value("session_namer_model") or "").strip()
172
+ if override:
173
+ return override
174
+ except Exception:
175
+ pass
176
+ from ..btw.side_query import resolve_model_name as btw_resolve
177
+
178
+ return btw_resolve()
179
+
180
+
181
+ def name_session(
182
+ base_dir: Path, session_name: str, live_meta: Optional[dict] = None
183
+ ) -> bool:
184
+ """Name (or incrementally re-name) one session. Returns True on write.
185
+
186
+ Runs on the namer worker thread. ``live_meta`` is the browser's
187
+ in-memory metadata dict; updating it in place surfaces the new
188
+ title/tags on the next repaint without a disk re-read.
189
+ """
190
+ try:
191
+ from code_puppy.command_line.session_browser_data import (
192
+ _get_session_metadata,
193
+ merge_sidecar,
194
+ )
195
+ from code_puppy.session_storage import load_session
196
+
197
+ meta = _get_session_metadata(base_dir, session_name)
198
+ if not naming_needed(meta):
199
+ return False
200
+ history = load_session(session_name, base_dir)
201
+ named_at = meta.get("ai_named_at")
202
+ since = named_at if isinstance(named_at, int) else 0
203
+ previous = meta if isinstance(named_at, int) else None
204
+ digest = build_digest(history, since)
205
+ if not digest.strip():
206
+ # Nothing nameable yet; snooze until the session grows.
207
+ merge_sidecar(base_dir, session_name, {"ai_named_at": len(history)})
208
+ return False
209
+
210
+ model_name = resolve_model_name()
211
+ if not model_name:
212
+ return False
213
+ raw = asyncio.run(
214
+ asyncio.wait_for(
215
+ _ask(model_name, build_prompt(digest, previous)),
216
+ timeout=QUERY_TIMEOUT_S,
217
+ )
218
+ )
219
+ naming = parse_naming(raw)
220
+ if naming is None:
221
+ logger.debug("session_namer: unparseable output for %s", session_name)
222
+ return False
223
+
224
+ updates = {**naming, "ai_named_at": len(history)}
225
+ if not merge_sidecar(base_dir, session_name, updates):
226
+ return False
227
+ if live_meta is not None:
228
+ live_meta.update(updates)
229
+ return True
230
+ except Exception:
231
+ logger.debug("session_namer: naming %s failed", session_name, exc_info=True)
232
+ return False
233
+
234
+
235
+ def submit(base_dir: Path, session_name: str, live_meta: Optional[dict] = None) -> bool:
236
+ """Queue a naming job unless one is already in flight for the session."""
237
+ with _inflight_lock:
238
+ if session_name in _inflight:
239
+ return False
240
+ _inflight.add(session_name)
241
+
242
+ def job() -> None:
243
+ try:
244
+ name_session(base_dir, session_name, live_meta)
245
+ finally:
246
+ with _inflight_lock:
247
+ _inflight.discard(session_name)
248
+
249
+ try:
250
+ _executor.submit(job)
251
+ return True
252
+ except Exception: # pragma: no cover - interpreter shutdown
253
+ with _inflight_lock:
254
+ _inflight.discard(session_name)
255
+ return False
@@ -0,0 +1,86 @@
1
+ """Register the session-namer plugin.
2
+
3
+ Two triggers, both decorative (failures never surface):
4
+
5
+ * ``post_autosave`` -- name the just-saved session when it has never
6
+ been AI-named or has grown by ``RENAME_DELTA`` messages since. The
7
+ previous summary is fed back in, so titles refine instead of thrash.
8
+ * ``session_browser_open`` -- when ``/resume`` opens, backfill up to
9
+ ``BACKFILL_LIMIT`` of the newest un-named sessions. The browser hands
10
+ over its live metadata dicts, so names pop in on repaint as the
11
+ worker finishes them.
12
+
13
+ Enabled by default; ``/set session_namer off`` disables, and
14
+ ``session_namer_model`` overrides the model (defaults to the current
15
+ agent/global model via the ``btw`` resolution chain).
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ import logging
21
+ from pathlib import Path
22
+ from typing import Any
23
+
24
+ from code_puppy.callbacks import register_callback
25
+
26
+ logger = logging.getLogger(__name__)
27
+
28
+
29
+ def _enabled() -> bool:
30
+ try:
31
+ from code_puppy.config import get_value
32
+
33
+ raw = get_value("session_namer")
34
+ if raw is None or str(raw).strip() == "":
35
+ return True # on by default -- the naming IS the feature
36
+ return str(raw).strip().lower() not in {"0", "false", "no", "off"}
37
+ except Exception:
38
+ return False
39
+
40
+
41
+ def _on_post_autosave(metadata: Any) -> None:
42
+ """Queue naming for a freshly autosaved session. Never raises."""
43
+ try:
44
+ if not _enabled():
45
+ return
46
+ from code_puppy.command_line.session_browser_data import (
47
+ _get_session_metadata,
48
+ )
49
+
50
+ from .namer import naming_needed, submit
51
+
52
+ # Sidecar is the source of truth for ai_named_at; re-read it.
53
+ base_dir = Path(metadata.json_path).parent
54
+ meta = _get_session_metadata(base_dir, metadata.session_name)
55
+ meta.setdefault("message_count", metadata.message_count)
56
+ if naming_needed(meta):
57
+ submit(base_dir, metadata.session_name)
58
+ except Exception:
59
+ logger.debug("session_namer: post_autosave hook failed", exc_info=True)
60
+
61
+
62
+ def _on_session_browser_open(base_dir: str, entries: list) -> None:
63
+ """Backfill names for the newest un-named sessions. Never raises."""
64
+ try:
65
+ if not _enabled():
66
+ return
67
+ from .namer import BACKFILL_LIMIT, naming_needed, submit
68
+
69
+ queued = 0
70
+ directory = Path(base_dir)
71
+ for session_name, meta in entries:
72
+ if queued >= BACKFILL_LIMIT:
73
+ break
74
+ if isinstance(meta, dict) and naming_needed(meta):
75
+ if submit(directory, session_name, live_meta=meta):
76
+ queued += 1
77
+ except Exception:
78
+ logger.debug("session_namer: browser_open hook failed", exc_info=True)
79
+
80
+
81
+ register_callback("post_autosave", _on_post_autosave)
82
+ try:
83
+ register_callback("session_browser_open", _on_session_browser_open)
84
+ except ValueError:
85
+ # Core predates the session_browser_open hook; autosave naming still works.
86
+ logger.debug("session_namer: core lacks session_browser_open hook")
@@ -4,12 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy-core-plugins"
7
- version = "0.0.17"
7
+ version = "0.0.20"
8
8
  description = "Official plugin bundle for Code Puppy"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
11
11
  dependencies = [
12
12
  "httpx>=0.24.1,<1",
13
+ "prompt-toolkit>=3.0.0,<4",
13
14
  "pydantic-ai-slim[openai,anthropic,mcp]>=2.31.0,<3",
14
15
  ]
15
16
  license = {text = "MIT"}
@@ -73,6 +74,7 @@ puppy_spinner = "code_puppy_core_plugins.puppy_spinner.register_callbacks"
73
74
  qa_kitten_skill = "code_puppy_core_plugins.qa_kitten_skill.register_callbacks"
74
75
  quick_resume = "code_puppy_core_plugins.quick_resume.register_callbacks"
75
76
  review_pr = "code_puppy_core_plugins.review_pr.register_callbacks"
77
+ session_namer = "code_puppy_core_plugins.session_namer.register_callbacks"
76
78
  shell_safety = "code_puppy_core_plugins.shell_safety.register_callbacks"
77
79
  spill = "code_puppy_core_plugins.spill.register_callbacks"
78
80
  stack_dump = "code_puppy_core_plugins.stack_dump.register_callbacks"