code-puppy-core-plugins 0.0.80__tar.gz → 0.0.82__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 (398) hide show
  1. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/PKG-INFO +1 -1
  2. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/permissions.py +83 -20
  3. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +4 -2
  4. code_puppy_core_plugins-0.0.82/code_puppy_core_plugins/spill/__init__.py +1 -0
  5. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/spill/register_callbacks.py +51 -14
  6. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/pyproject.toml +1 -1
  7. code_puppy_core_plugins-0.0.80/code_puppy_core_plugins/spill/__init__.py +0 -1
  8. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/.gitignore +0 -0
  9. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/LICENSE +0 -0
  10. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/README.md +0 -0
  11. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/THIRD_PARTY_NOTICES.md +0 -0
  12. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/__init__.py +0 -0
  13. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/README.md +0 -0
  14. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/__init__.py +0 -0
  15. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/agent.py +0 -0
  16. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/bridge.py +0 -0
  17. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/capabilities.py +0 -0
  18. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/commands.py +0 -0
  19. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/content.py +0 -0
  20. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
  21. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
  22. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/persistence.py +0 -0
  23. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
  24. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/replay.py +0 -0
  25. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/session.py +0 -0
  26. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/session_config.py +0 -0
  27. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/acp/state.py +0 -0
  28. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
  29. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
  30. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
  31. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
  32. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/config.py +0 -0
  33. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
  34. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
  35. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
  36. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
  37. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
  38. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
  39. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
  40. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
  41. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/attachment_references/__init__.py +0 -0
  42. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/attachment_references/register_callbacks.py +0 -0
  43. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/attachment_references/tool.py +0 -0
  44. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
  45. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
  46. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
  47. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
  48. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
  49. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
  50. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
  51. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
  52. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
  53. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
  54. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
  55. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
  56. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
  57. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
  58. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/background_agents/README.md +0 -0
  59. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
  60. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
  61. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/__init__.py +0 -0
  62. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/inline_view.py +0 -0
  63. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
  64. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/btw/side_query.py +0 -0
  65. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
  66. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
  67. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
  68. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
  69. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
  70. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
  71. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
  72. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
  73. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
  74. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
  75. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
  76. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
  77. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
  78. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
  79. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
  80. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
  81. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
  82. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
  83. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
  84. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
  85. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
  86. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
  87. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
  88. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
  89. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
  90. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
  91. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  92. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
  93. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
  94. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
  95. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
  96. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
  97. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
  98. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
  99. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
  100. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
  101. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
  102. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
  103. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/config.py +0 -0
  104. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
  105. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
  106. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
  107. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
  108. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
  109. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/FOCUS_INVESTIGATION.md +0 -0
  110. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
  111. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/PARITY.md +0 -0
  112. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/README.md +0 -0
  113. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/WINDOWS.md +0 -0
  114. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
  115. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
  116. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/activation.py +0 -0
  117. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/backend.py +0 -0
  118. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
  119. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/batch.py +0 -0
  120. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/capture.py +0 -0
  121. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/commands.py +0 -0
  122. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
  123. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
  124. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
  125. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/locales/en-US.json +0 -0
  126. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/locales/es.json +0 -0
  127. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/locales/fr-CA.json +0 -0
  128. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/macos_backend.py +0 -0
  129. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/permissions.py +0 -0
  130. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/policy.py +0 -0
  131. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
  132. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/safety.py +0 -0
  133. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/settle.py +0 -0
  134. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/state.py +0 -0
  135. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/tools.py +0 -0
  136. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_accessibility.py +0 -0
  137. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_activation.py +0 -0
  138. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_backend.py +0 -0
  139. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_capture.py +0 -0
  140. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_input.py +0 -0
  141. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_native.py +0 -0
  142. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/computer_use/windows_runtime.py +0 -0
  143. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
  144. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
  145. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
  146. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
  147. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
  148. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
  149. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
  150. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
  151. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
  152. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
  153. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
  154. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
  155. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
  156. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
  157. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
  158. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
  159. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
  160. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
  161. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
  162. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
  163. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
  164. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
  165. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
  166. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
  167. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
  168. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
  169. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
  170. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
  171. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
  172. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
  173. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
  174. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
  175. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
  176. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
  177. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
  178. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
  179. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
  180. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
  181. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
  182. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
  183. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
  184. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
  185. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
  186. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
  187. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
  188. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
  189. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
  190. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
  191. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
  192. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
  193. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
  194. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
  195. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
  196. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
  197. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
  198. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
  199. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
  200. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
  201. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
  202. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
  203. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
  204. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
  205. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
  206. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
  207. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
  208. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/fork/__init__.py +0 -0
  209. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
  210. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
  211. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
  212. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
  213. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
  214. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
  215. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
  216. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
  217. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
  218. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
  219. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/README.md +0 -0
  220. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/__init__.py +0 -0
  221. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/client.py +0 -0
  222. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/command_intent.py +0 -0
  223. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/launch_command.py +0 -0
  224. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/launcher.py +0 -0
  225. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
  226. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/reporter.py +0 -0
  227. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/restore.py +0 -0
  228. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/smoke.py +0 -0
  229. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/herdr/sources.py +0 -0
  230. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
  231. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
  232. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
  233. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/config.py +0 -0
  234. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
  235. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
  236. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
  237. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/__init__.py +0 -0
  238. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/chunks.py +0 -0
  239. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/config.py +0 -0
  240. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/judge.py +0 -0
  241. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/locales/en-US.json +0 -0
  242. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/register_callbacks.py +0 -0
  243. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/retrieve.py +0 -0
  244. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/search.py +0 -0
  245. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/structure.py +0 -0
  246. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/tool.py +0 -0
  247. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/jev_grep/treesitter.py +0 -0
  248. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
  249. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
  250. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
  251. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
  252. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
  253. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
  254. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
  255. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
  256. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
  257. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/README.md +0 -0
  258. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +0 -0
  259. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/custom_install.py +0 -0
  260. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/http_form.py +0 -0
  261. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/mcp_binding_prompt/register_callbacks.py +0 -0
  262. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
  263. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
  264. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
  265. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
  266. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
  267. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
  268. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
  269. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
  270. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
  271. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
  272. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
  273. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
  274. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
  275. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
  276. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
  277. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
  278. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
  279. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
  280. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama/__init__.py +0 -0
  281. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
  282. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
  283. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
  284. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
  285. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
  286. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
  287. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
  288. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
  289. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
  290. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
  291. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
  292. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
  293. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
  294. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
  295. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
  296. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
  297. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
  298. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/plugin_settings.py +0 -0
  299. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
  300. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
  301. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/README.md +0 -0
  302. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/__init__.py +0 -0
  303. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/config.py +0 -0
  304. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
  305. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/menu.py +0 -0
  306. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
  307. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
  308. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
  309. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
  310. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/__init__.py +0 -0
  311. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
  312. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/prune_model.py +0 -0
  313. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/prune_render.py +0 -0
  314. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
  315. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
  316. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
  317. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
  318. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
  319. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
  320. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
  321. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
  322. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
  323. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
  324. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
  325. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
  326. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
  327. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
  328. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
  329. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
  330. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
  331. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
  332. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
  333. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
  334. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
  335. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
  336. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
  337. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
  338. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
  339. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
  340. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
  341. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
  342. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
  343. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/session_namer/namer.py +0 -0
  344. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
  345. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
  346. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/spill/store.py +0 -0
  347. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
  348. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
  349. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/__init__.py +0 -0
  350. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/config.py +0 -0
  351. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/payload.py +0 -0
  352. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
  353. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
  354. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/runner.py +0 -0
  355. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
  356. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
  357. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
  358. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
  359. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
  360. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
  361. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
  362. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
  363. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
  364. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
  365. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
  366. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
  367. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
  368. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/termflow_tui.py +0 -0
  369. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/README.md +0 -0
  370. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/__init__.py +0 -0
  371. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
  372. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/content_styles.py +0 -0
  373. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
  374. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/picker.py +0 -0
  375. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
  376. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
  377. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
  378. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/theme/themes.py +0 -0
  379. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
  380. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
  381. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
  382. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
  383. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
  384. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
  385. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
  386. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
  387. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
  388. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
  389. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
  390. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
  391. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
  392. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/judge.py +0 -0
  393. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
  394. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
  395. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
  396. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/wiggum/state.py +0 -0
  397. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
  398. {code_puppy_core_plugins-0.0.80 → code_puppy_core_plugins-0.0.82}/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.80
3
+ Version: 0.0.82
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
@@ -13,6 +13,9 @@ logic or forcing yolo mode:
13
13
  and already runs on the ACP loop, so it can ``await`` the client directly.
14
14
 
15
15
  Both edges fail **closed** (deny) if the connection is gone or the client errors.
16
+ A denial nobody chose -- a cancelled, failed or timed-out request, or an option
17
+ we do not recognize -- is reported as ``PermissionNotDecided`` rather than as the
18
+ user rejecting the operation, so the model is not told the user said no.
16
19
  """
17
20
 
18
21
  from __future__ import annotations
@@ -27,6 +30,14 @@ from acp.schema import PermissionOption, ToolCallUpdate
27
30
  from code_puppy.callbacks import register_callback
28
31
  from code_puppy_core_plugins.acp import state
29
32
 
33
+ try:
34
+ from code_puppy.tools.file_permission_state import PermissionNotDecided
35
+ except ImportError: # pragma: no cover - code_puppy without the marker type
36
+
37
+ class PermissionNotDecided(str): # type: ignore[no-redef]
38
+ """Stand-in for older cores, which report every denial as a rejection."""
39
+
40
+
30
41
  logger = logging.getLogger(__name__)
31
42
 
32
43
  # How long to wait for a human in the client to answer a permission dialog. Dialogs
@@ -39,6 +50,7 @@ _OPTIONS = [
39
50
  PermissionOption(option_id="reject_once", name="Reject", kind="reject_once"),
40
51
  ]
41
52
  _ALLOW_IDS = {"allow_once"}
53
+ _REJECT_IDS = {"reject_once"}
42
54
 
43
55
 
44
56
  def _tool_call_ref(title: str) -> ToolCallUpdate:
@@ -55,24 +67,55 @@ def _tool_call_ref(title: str) -> ToolCallUpdate:
55
67
  return ToolCallUpdate(tool_call_id=f"perm_{uuid.uuid4().hex[:12]}", title=title)
56
68
 
57
69
 
58
- async def _ask_client(session_id: str, title: str) -> bool:
59
- """Show an allow/deny dialog in the client; return ``True`` if allowed."""
70
+ async def _ask_client_outcome(
71
+ session_id: str, title: str
72
+ ) -> Tuple[bool, Optional[PermissionNotDecided]]:
73
+ """Show an allow/deny dialog in the client.
74
+
75
+ Returns ``(True, None)`` when allowed and ``(False, None)`` when a person
76
+ selected Reject. Every other denial -- no connection, a failed or
77
+ timed-out request, a cancelled dialog, an unknown option -- returns
78
+ ``(False, PermissionNotDecided(reason))``.
79
+ """
60
80
  connection = state.get_connection()
61
81
  if connection is None:
62
- return False
82
+ return False, PermissionNotDecided("The client connection is unavailable.")
63
83
  try:
64
- response = await connection.request_permission(
65
- options=list(_OPTIONS),
66
- session_id=session_id,
67
- tool_call=_tool_call_ref(title),
84
+ response = await asyncio.wait_for(
85
+ connection.request_permission(
86
+ options=list(_OPTIONS),
87
+ session_id=session_id,
88
+ tool_call=_tool_call_ref(title),
89
+ ),
90
+ timeout=_PERMISSION_TIMEOUT_S,
68
91
  )
92
+ except asyncio.TimeoutError:
93
+ logger.warning("session/request_permission timed out; denying")
94
+ return False, PermissionNotDecided("The permission request timed out.")
69
95
  except Exception: # noqa: BLE001
70
96
  logger.exception("session/request_permission failed; denying")
71
- return False
97
+ return False, PermissionNotDecided(
98
+ "The permission request could not be completed."
99
+ )
72
100
  outcome = getattr(response, "outcome", None)
73
101
  if getattr(outcome, "outcome", None) == "selected":
74
- return getattr(outcome, "option_id", None) in _ALLOW_IDS
75
- return False
102
+ option_id = getattr(outcome, "option_id", None)
103
+ if option_id in _ALLOW_IDS:
104
+ return True, None
105
+ if option_id in _REJECT_IDS:
106
+ return False, None
107
+ return False, PermissionNotDecided(
108
+ "The client returned an unknown permission choice."
109
+ )
110
+ return False, PermissionNotDecided(
111
+ "The permission request was cancelled without a decision."
112
+ )
113
+
114
+
115
+ async def _ask_client(session_id: str, title: str) -> bool:
116
+ """Show an allow/deny dialog in the client; return ``True`` if allowed."""
117
+ allowed, _ = await _ask_client_outcome(session_id, title)
118
+ return allowed
76
119
 
77
120
 
78
121
  def _approval_backend(
@@ -80,13 +123,15 @@ def _approval_backend(
80
123
  ) -> Tuple[bool, Optional[str]]:
81
124
  """Approval backend for file ops; asks the client from the tool threadpool.
82
125
 
83
- Returns ``(approved, feedback)``. Feedback is always ``None`` — the client's
84
- dialog is yes/no, not a free-text channel.
126
+ Returns ``(approved, feedback)``. The client's dialog is yes/no, not a
127
+ free-text channel, so feedback is ``None`` for an allow or a Reject, and a
128
+ ``PermissionNotDecided`` when the operation was denied without anyone
129
+ choosing Reject.
85
130
  """
86
131
  loop = state.get_loop()
87
132
  session_id = state.get_active_session_id()
88
133
  if loop is None or session_id is None:
89
- return False, None
134
+ return False, PermissionNotDecided("No client is available to ask.")
90
135
 
91
136
  # Guard against being called on the loop thread itself: blocking on
92
137
  # run_coroutine_threadsafe there would deadlock (file tools run off-loop).
@@ -96,17 +141,24 @@ def _approval_backend(
96
141
  running = None
97
142
  if running is loop:
98
143
  logger.error("Approval backend hit on the ACP loop; denying to avoid deadlock")
99
- return False, None
144
+ return False, PermissionNotDecided(
145
+ "The permission request could not be completed."
146
+ )
100
147
 
101
- future = asyncio.run_coroutine_threadsafe(_ask_client(session_id, title), loop)
148
+ future = asyncio.run_coroutine_threadsafe(
149
+ _ask_client_outcome(session_id, title), loop
150
+ )
102
151
  try:
103
- allowed = future.result(_PERMISSION_TIMEOUT_S)
152
+ # A little longer than the request's own timeout, which answers first.
153
+ allowed, not_decided = future.result(_PERMISSION_TIMEOUT_S + 5)
104
154
  except Exception: # noqa: BLE001 - includes TimeoutError
105
155
  # Abandon the in-flight request so it doesn't linger on the loop.
106
156
  future.cancel()
107
157
  logger.exception("ACP approval bridge failed; denying")
108
- return False, None
109
- return bool(allowed), None
158
+ return False, PermissionNotDecided(
159
+ "The permission request could not be completed."
160
+ )
161
+ return bool(allowed), not_decided
110
162
 
111
163
 
112
164
  async def _on_run_shell_command(
@@ -123,15 +175,26 @@ async def _on_run_shell_command(
123
175
  auto-approve file writes yet still prompt for every shell command.
124
176
  """
125
177
  session_id = state.get_active_session_id()
126
- if state.get_connection() is None or session_id is None:
178
+ if session_id is None:
127
179
  return None
128
180
  from code_puppy.config import get_yolo_mode
129
181
 
130
182
  if get_yolo_mode():
131
183
  return None
132
- allowed = await _ask_client(session_id, f"Run shell command: {command}")
184
+ allowed, not_decided = await _ask_client_outcome(
185
+ session_id, f"Run shell command: {command}"
186
+ )
133
187
  if allowed:
134
188
  return None
189
+ if not_decided is not None:
190
+ return {
191
+ "blocked": True,
192
+ "error_message": "Permission not granted",
193
+ "reasoning": (
194
+ f"{not_decided} The command was not run. The user did not "
195
+ "reject it; do not say they did."
196
+ ),
197
+ }
135
198
  return {
136
199
  "blocked": True,
137
200
  "error_message": "Command rejected in the client",
@@ -80,8 +80,10 @@ did to your config are two separate actions.
80
80
 
81
81
  The builtin `spill` plugin saves oversized top-level string fields to
82
82
  private files and substitutes bounded head/tail previews with retrieval
83
- guidance. It leaves error-only and non-dict results untouched and skips
84
- `read_file` by default to avoid a read → spill → read loop.
83
+ guidance. It handles both dict results and Pydantic `BaseModel` results
84
+ (most built-in tools return the latter), and leaves error-only and other
85
+ result shapes untouched. It skips `read_file` by default to avoid a read →
86
+ spill → read loop.
85
87
 
86
88
  | `puppy.cfg` key | Default | Meaning |
87
89
  |-----------------|---------|---------|
@@ -0,0 +1 @@
1
+ """Keep oversized dict- and BaseModel-shaped tool results out of context."""
@@ -1,12 +1,13 @@
1
- """Plugin: spill oversized dict-shaped tool results to private files.
1
+ """Plugin: spill oversized dict- and BaseModel-shaped tool results to files.
2
2
 
3
3
  Ported from DeepSeek Harness's MIT-licensed spill design. See
4
4
  ``LICENSE.deepseek`` in this package for its copyright and license notice.
5
5
 
6
- The post-tool hook receives the same dict reference that Code Puppy later
6
+ The post-tool hook receives the same result object that Code Puppy later
7
7
  serializes for the model, so this plugin can replace top-level string fields
8
- in place. Non-dict results (notably plain strings) cannot be replaced through
9
- this hook and are deliberately left untouched.
8
+ in place — for dicts via item assignment, for Pydantic ``BaseModel`` results
9
+ via attribute assignment. Other results (notably plain strings) cannot be
10
+ replaced through this hook and are deliberately left untouched.
10
11
 
11
12
  When the combined UTF-8 size of top-level string values exceeds the configured
12
13
  cap, fields are considered largest-first. Their full text is saved verbatim,
@@ -33,6 +34,8 @@ import math
33
34
  from pathlib import Path
34
35
  from typing import Any
35
36
 
37
+ from pydantic import BaseModel
38
+
36
39
  from code_puppy.callbacks import register_callback, unregister_callback
37
40
 
38
41
  from . import store
@@ -190,9 +193,37 @@ def _build_replacement(
190
193
  budget = max(0, budget - max(1, replacement_bytes - limit))
191
194
 
192
195
 
193
- def _spill_result(
194
- tool_name: str, result: dict[Any, Any], session_id: str | None = None
195
- ) -> None:
196
+ def _field_map(result: Any) -> dict | None:
197
+ """Return a mutable mapping view of a dict or BaseModel result."""
198
+ if isinstance(result, dict):
199
+ return result
200
+ if isinstance(result, BaseModel):
201
+ try:
202
+ return dict(result)
203
+ except Exception:
204
+ return None
205
+ return None
206
+
207
+
208
+ def _commit_replacements(result: Any, replacements: dict) -> None:
209
+ if isinstance(result, dict):
210
+ result.update(replacements)
211
+ return
212
+ applied: dict = {}
213
+ try:
214
+ for key, value in replacements.items():
215
+ applied[key] = getattr(result, key)
216
+ setattr(result, key, value)
217
+ except Exception:
218
+ for key, value in applied.items():
219
+ try:
220
+ setattr(result, key, value)
221
+ except Exception:
222
+ pass
223
+ raise
224
+
225
+
226
+ def _spill_result(tool_name: str, result: Any, session_id: str | None = None) -> None:
196
227
  cap = _get_int(MAX_INLINE_KEY, DEFAULT_MAX_INLINE_BYTES)
197
228
  if cap <= 0 or tool_name in _get_skip_tools():
198
229
  return
@@ -205,11 +236,14 @@ def _spill_result(
205
236
  )
206
237
  preview_bytes = DEFAULT_PREVIEW_BYTES
207
238
 
208
- fields = [
209
- (key, value, _byte_size(value))
210
- for key, value in result.items()
211
- if isinstance(value, str)
212
- ]
239
+ fields = []
240
+ field_map = _field_map(result)
241
+ if field_map is not None:
242
+ fields = [
243
+ (key, value, _byte_size(value))
244
+ for key, value in field_map.items()
245
+ if isinstance(value, str)
246
+ ]
213
247
  total = sum(size for _, _, size in fields)
214
248
  if total <= cap:
215
249
  return
@@ -262,7 +296,7 @@ def _spill_result(
262
296
  # Commit atomically. A partial preview set that still exceeds the cap is
263
297
  # neither bounded nor graceful; keep every original inline in that case.
264
298
  if total <= cap:
265
- result.update(replacements)
299
+ _commit_replacements(result, replacements)
266
300
 
267
301
 
268
302
  async def _on_post_tool_call(
@@ -275,7 +309,10 @@ async def _on_post_tool_call(
275
309
  """Spill oversized string fields off the event loop without breaking calls."""
276
310
  _ = tool_args, duration_ms, context
277
311
  try:
278
- if not isinstance(result, dict) or set(result) == {"error"}:
312
+ if not isinstance(result, (dict, BaseModel)):
313
+ return
314
+ field_map = _field_map(result)
315
+ if field_map is None or set(field_map) == {"error"}:
279
316
  return
280
317
  spill_config = _get_executing_agent_spill_config()
281
318
  if not _is_enabled_for_executing_agent(spill_config):
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy-core-plugins"
7
- version = "0.0.80"
7
+ version = "0.0.82"
8
8
  description = "Official plugin bundle for Code Puppy"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -1 +0,0 @@
1
- """Keep oversized dict-shaped tool results out of model context."""