code-puppy-core-plugins 0.0.72__tar.gz → 0.0.73__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 (381) hide show
  1. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/PKG-INFO +11 -1
  2. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/chunks.py +7 -5
  3. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/structure.py +15 -2
  4. code_puppy_core_plugins-0.0.73/code_puppy_core_plugins/jev_grep/treesitter.py +409 -0
  5. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/pyproject.toml +11 -1
  6. code_puppy_core_plugins-0.0.72/code_puppy_core_plugins/jev_grep/treesitter.py +0 -249
  7. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/.gitignore +0 -0
  8. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/LICENSE +0 -0
  9. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/README.md +0 -0
  10. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/THIRD_PARTY_NOTICES.md +0 -0
  11. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/__init__.py +0 -0
  12. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/README.md +0 -0
  13. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/__init__.py +0 -0
  14. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/agent.py +0 -0
  15. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/bridge.py +0 -0
  16. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/capabilities.py +0 -0
  17. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/commands.py +0 -0
  18. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/content.py +0 -0
  19. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
  20. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
  21. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/permissions.py +0 -0
  22. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/persistence.py +0 -0
  23. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
  24. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/replay.py +0 -0
  25. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/session.py +0 -0
  26. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/session_config.py +0 -0
  27. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/acp/state.py +0 -0
  28. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
  29. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
  30. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
  31. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
  32. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/config.py +0 -0
  33. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
  34. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
  35. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
  36. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
  37. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
  38. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
  39. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
  40. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
  41. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/attachment_references/__init__.py +0 -0
  42. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/attachment_references/register_callbacks.py +0 -0
  43. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/attachment_references/tool.py +0 -0
  44. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
  45. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
  46. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
  47. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
  48. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
  49. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
  50. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
  51. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
  52. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
  53. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
  54. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
  55. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
  56. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
  57. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
  58. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/background_agents/README.md +0 -0
  59. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
  60. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
  61. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/btw/__init__.py +0 -0
  62. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/btw/inline_view.py +0 -0
  63. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
  64. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/btw/side_query.py +0 -0
  65. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
  66. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
  67. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
  68. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
  69. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
  70. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
  71. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
  72. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
  73. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
  74. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
  75. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
  76. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
  77. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
  78. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
  79. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
  80. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
  81. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
  82. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
  83. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
  84. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
  85. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
  86. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
  87. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
  88. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
  89. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
  90. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
  91. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  92. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
  93. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
  94. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
  95. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
  96. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
  97. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
  98. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
  99. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
  100. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
  101. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
  102. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
  103. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
  104. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/config.py +0 -0
  105. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
  106. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
  107. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
  108. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
  109. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
  110. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
  111. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/README.md +0 -0
  112. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
  113. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
  114. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/activation.py +0 -0
  115. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/backend.py +0 -0
  116. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
  117. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/capture.py +0 -0
  118. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/commands.py +0 -0
  119. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
  120. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
  121. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
  122. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/policy.py +0 -0
  123. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
  124. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/safety.py +0 -0
  125. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/settle.py +0 -0
  126. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/state.py +0 -0
  127. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/computer_use/tools.py +0 -0
  128. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
  129. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
  130. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
  131. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
  132. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
  133. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
  134. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
  135. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
  136. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
  137. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
  138. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
  139. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
  140. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
  141. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
  142. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
  143. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
  144. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
  145. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
  146. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
  147. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
  148. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
  149. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
  150. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
  151. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
  152. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
  153. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
  154. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
  155. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
  156. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
  157. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
  158. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
  159. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
  160. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
  161. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
  162. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
  163. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
  164. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
  165. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
  166. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
  167. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
  168. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
  169. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
  170. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
  171. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
  172. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
  173. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
  174. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
  175. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
  176. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
  177. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
  178. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
  179. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
  180. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
  181. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
  182. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
  183. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
  184. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
  185. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
  186. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
  187. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
  188. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
  189. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
  190. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
  191. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
  192. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
  193. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/fork/__init__.py +0 -0
  194. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
  195. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
  196. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
  197. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
  198. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
  199. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
  200. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
  201. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
  202. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
  203. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
  204. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/README.md +0 -0
  205. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/__init__.py +0 -0
  206. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/client.py +0 -0
  207. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
  208. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/reporter.py +0 -0
  209. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/restore.py +0 -0
  210. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/smoke.py +0 -0
  211. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/herdr/sources.py +0 -0
  212. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
  213. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
  214. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
  215. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_manager/config.py +0 -0
  216. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
  217. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
  218. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
  219. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/__init__.py +0 -0
  220. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/config.py +0 -0
  221. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/judge.py +0 -0
  222. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/locales/en-US.json +0 -0
  223. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/register_callbacks.py +0 -0
  224. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/retrieve.py +0 -0
  225. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/search.py +0 -0
  226. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/jev_grep/tool.py +0 -0
  227. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
  228. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
  229. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
  230. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
  231. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
  232. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
  233. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
  234. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
  235. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
  236. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/mcp_binding_prompt/README.md +0 -0
  237. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +0 -0
  238. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/mcp_binding_prompt/custom_install.py +0 -0
  239. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/mcp_binding_prompt/http_form.py +0 -0
  240. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/mcp_binding_prompt/register_callbacks.py +0 -0
  241. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
  242. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
  243. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
  244. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
  245. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
  246. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
  247. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
  248. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
  249. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
  250. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
  251. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
  252. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
  253. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
  254. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
  255. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
  256. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
  257. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
  258. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
  259. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/ollama/__init__.py +0 -0
  260. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
  261. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
  262. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
  263. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
  264. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
  265. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
  266. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
  267. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
  268. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
  269. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
  270. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
  271. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
  272. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
  273. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
  274. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
  275. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
  276. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
  277. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
  278. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
  279. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/profiles/README.md +0 -0
  280. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/profiles/__init__.py +0 -0
  281. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/profiles/config.py +0 -0
  282. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
  283. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/profiles/menu.py +0 -0
  284. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
  285. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
  286. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
  287. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
  288. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prune/__init__.py +0 -0
  289. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
  290. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prune/prune_model.py +0 -0
  291. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prune/prune_render.py +0 -0
  292. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
  293. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
  294. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
  295. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
  296. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
  297. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
  298. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
  299. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
  300. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
  301. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
  302. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
  303. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
  304. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
  305. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
  306. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
  307. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
  308. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
  309. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
  310. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
  311. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
  312. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
  313. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
  314. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
  315. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
  316. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
  317. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
  318. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
  319. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
  320. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
  321. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/session_namer/namer.py +0 -0
  322. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
  323. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
  324. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/spill/__init__.py +0 -0
  325. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
  326. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/spill/store.py +0 -0
  327. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
  328. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
  329. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/__init__.py +0 -0
  330. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/config.py +0 -0
  331. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/payload.py +0 -0
  332. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
  333. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
  334. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/runner.py +0 -0
  335. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
  336. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
  337. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
  338. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
  339. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
  340. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
  341. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
  342. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
  343. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
  344. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
  345. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
  346. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
  347. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
  348. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/termflow_tui.py +0 -0
  349. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/README.md +0 -0
  350. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/__init__.py +0 -0
  351. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
  352. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/content_styles.py +0 -0
  353. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
  354. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/picker.py +0 -0
  355. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
  356. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
  357. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
  358. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/theme/themes.py +0 -0
  359. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
  360. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
  361. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -0
  362. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -0
  363. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -0
  364. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
  365. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
  366. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
  367. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
  368. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
  369. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
  370. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
  371. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
  372. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
  373. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
  374. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
  375. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/judge.py +0 -0
  376. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
  377. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
  378. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
  379. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/wiggum/state.py +0 -0
  380. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
  381. {code_puppy_core_plugins-0.0.72 → code_puppy_core_plugins-0.0.73}/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.72
3
+ Version: 0.0.73
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
@@ -18,10 +18,20 @@ Requires-Python: <3.15,>=3.11
18
18
  Requires-Dist: httpx2>=2.7
19
19
  Requires-Dist: httpx<1,>=0.24.1
20
20
  Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai,typesafe]<3,>=2.51.0
21
+ Requires-Dist: tree-sitter-bash>=0.25.1
22
+ Requires-Dist: tree-sitter-c-sharp>=0.23.5
23
+ Requires-Dist: tree-sitter-c>=0.24.2
24
+ Requires-Dist: tree-sitter-cpp>=0.23.4
21
25
  Requires-Dist: tree-sitter-go>=0.25.0
22
26
  Requires-Dist: tree-sitter-java>=0.23.5
23
27
  Requires-Dist: tree-sitter-javascript>=0.25.0
28
+ Requires-Dist: tree-sitter-kotlin>=1.1.0
29
+ Requires-Dist: tree-sitter-lua>=0.5.0
30
+ Requires-Dist: tree-sitter-php>=0.24.1
31
+ Requires-Dist: tree-sitter-ruby>=0.23.1
24
32
  Requires-Dist: tree-sitter-rust>=0.24.2
33
+ Requires-Dist: tree-sitter-scala>=0.26.2
34
+ Requires-Dist: tree-sitter-swift>=0.7.3
25
35
  Requires-Dist: tree-sitter-typescript>=0.23.2
26
36
  Requires-Dist: tree-sitter<0.26,>=0.25.2
27
37
  Description-Content-Type: text/markdown
@@ -2,10 +2,11 @@
2
2
 
3
3
  Source files are split along their syntax tree (see ``structure.py``):
4
4
  functions and methods stay whole, long declarations split into the blocks
5
- inside them. Python uses the stdlib ``ast``; JavaScript/TypeScript, Go, Rust
6
- and Java use tree-sitter (``treesitter.py``). Everything else, and any file
7
- that does not parse, falls back to overlapping line windows. Line coverage
8
- is exact: every non-blank line lands in at least one snippet.
5
+ inside them. Python uses the stdlib ``ast``; fourteen more languages use
6
+ tree-sitter (``treesitter.py``), where regions that do not parse fall back to
7
+ overlapping line windows. Other file types, and Python that does not parse,
8
+ are cut into line windows entirely. Line coverage is exact: every non-blank
9
+ line lands in at least one snippet.
9
10
  """
10
11
 
11
12
  from __future__ import annotations
@@ -96,7 +97,8 @@ def _chunks_from_ranges(
96
97
  continue
97
98
  part = lines[start - 1 : end]
98
99
  whole = (
99
- end - start < WHOLE_DECLARATION_LINES
100
+ not r.window
101
+ and end - start < WHOLE_DECLARATION_LINES
100
102
  and len("\n".join(part)) <= MAX_CHUNK_CHARS
101
103
  )
102
104
  size, overlap = (len(part), 0) if whole else (WINDOW, OVERLAP)
@@ -10,7 +10,10 @@ One algorithm for every parser. A language plugs in by implementing
10
10
  them, so each range is one behaviour. Splits cover every line of the
11
11
  original range, so coverage is unchanged;
12
12
  * runs of short neighbours (imports, one-liners) merge into one range,
13
- since each range costs a relevance judgment.
13
+ since each range costs a relevance judgment;
14
+ * a node the parser could not read cleanly is not split or trusted: it
15
+ becomes a ``window`` range, cut into overlapping line windows like an
16
+ unparsed file. One bad macro costs its own region, not the whole file.
14
17
  """
15
18
 
16
19
  from __future__ import annotations
@@ -29,6 +32,7 @@ class Range:
29
32
  start: int
30
33
  end: int
31
34
  symbol: str | None
35
+ window: bool = False # parse error inside: use line windows, not one blob
32
36
 
33
37
 
34
38
  class Syntax(Protocol):
@@ -46,6 +50,9 @@ class Syntax(Protocol):
46
50
  def statements(self, node: Any) -> Sequence[Any] | None:
47
51
  """The statements of ``node``'s body, if it has one."""
48
52
 
53
+ def broken(self, node: Any) -> bool:
54
+ """True when the parser could not read ``node`` cleanly."""
55
+
49
56
 
50
57
  def partition(node: Any, start: int, end: int, symbol, syntax: Syntax, depth=0):
51
58
  """Split a long body into its blocks, covering every line of [start, end]."""
@@ -106,6 +113,9 @@ def structure_ranges(nodes: Sequence[Any], syntax: Syntax) -> list[Range]:
106
113
  if ranges and ranges[-1].end < end:
107
114
  ranges[-1].end = end
108
115
  return
116
+ if syntax.broken(node):
117
+ ranges.append(Range(start, end, symbol, window=True))
118
+ return
109
119
  ranges.extend(
110
120
  partition(node, start, end, symbol, syntax) or [Range(start, end, symbol)]
111
121
  )
@@ -139,7 +149,7 @@ def merge_short_neighbours(ranges: list[Range]) -> list[Range]:
139
149
  names = dict.fromkeys(s for s in (last.symbol, r.symbol) if s)
140
150
  last.end, last.symbol = r.end, ", ".join(names) or None
141
151
  else:
142
- merged.append(Range(r.start, r.end, r.symbol))
152
+ merged.append(Range(r.start, r.end, r.symbol, r.window))
143
153
  return merged
144
154
 
145
155
 
@@ -162,6 +172,9 @@ class PythonSyntax:
162
172
  return None
163
173
  return [s for s in body if hasattr(s, "end_lineno")]
164
174
 
175
+ def broken(self, node: ast.AST) -> bool:
176
+ return False # ast.parse either succeeds for the whole file or raises
177
+
165
178
 
166
179
  def python_ranges(text: str) -> list[Range]:
167
180
  """Raises SyntaxError/ValueError/RecursionError on unparseable source."""
@@ -0,0 +1,409 @@
1
+ """tree-sitter :class:`~.structure.Syntax` for JavaScript/TypeScript, Go, Rust,
2
+ Java, C, C++, C#, Ruby, PHP, Kotlin, Swift, Scala, Bash and Lua.
3
+
4
+ Grammars are pinned, offline wheels (one package per language); nothing is
5
+ downloaded at runtime. They are optional at runtime: if tree-sitter or a
6
+ grammar cannot be imported (e.g. an unsupported platform) or the installed
7
+ tree-sitter is a known-bad version, :func:`treesitter_ranges` returns
8
+ ``None`` and the caller falls back to line windows. A file with parse errors
9
+ (macros, newer syntax than the grammar knows) keeps its structure where the
10
+ tree is clean; only the broken regions fall back to line windows.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import importlib
16
+ import os
17
+ from collections.abc import Callable, Iterable, Sequence
18
+ from functools import cache
19
+ from importlib.metadata import PackageNotFoundError, version
20
+ from typing import Any
21
+
22
+ from .structure import Range, structure_ranges
23
+
24
+
25
+ def _grammar(module: str, attr: str = "language") -> Callable[[], Any]:
26
+ """A lazy loader for one grammar (the wheel is imported on first use)."""
27
+
28
+ def load() -> Any:
29
+ return getattr(importlib.import_module(module), attr)()
30
+
31
+ load.__qualname__ = f"load<{module}.{attr}>"
32
+ return load
33
+
34
+
35
+ _JAVASCRIPT = ("javascript", _grammar("tree_sitter_javascript"))
36
+ _TYPESCRIPT = ("typescript", _grammar("tree_sitter_typescript", "language_typescript"))
37
+ _C = ("c", _grammar("tree_sitter_c"))
38
+ _CPP = ("cpp", _grammar("tree_sitter_cpp"))
39
+
40
+ # extension -> (parser name, grammar loader)
41
+ LANGUAGES: dict[str, tuple[str, Callable[[], Any]]] = {
42
+ **dict.fromkeys((".js", ".jsx", ".mjs", ".cjs"), _JAVASCRIPT),
43
+ **dict.fromkeys((".ts", ".mts", ".cts"), _TYPESCRIPT),
44
+ ".tsx": ("tsx", _grammar("tree_sitter_typescript", "language_tsx")),
45
+ ".go": ("go", _grammar("tree_sitter_go")),
46
+ ".rs": ("rust", _grammar("tree_sitter_rust")),
47
+ ".java": ("java", _grammar("tree_sitter_java")),
48
+ ".c": _C,
49
+ # .h is C or C++: parse as C++ (a near-superset), retry as C (_RETRY).
50
+ **dict.fromkeys(
51
+ (
52
+ ".h",
53
+ ".cc",
54
+ ".cpp",
55
+ ".cxx",
56
+ ".c++",
57
+ ".hh",
58
+ ".hpp",
59
+ ".hxx",
60
+ ".h++",
61
+ ".ipp",
62
+ ".tpp",
63
+ ".inl",
64
+ ),
65
+ _CPP,
66
+ ),
67
+ ".cs": ("csharp", _grammar("tree_sitter_c_sharp")),
68
+ **dict.fromkeys(
69
+ (".rb", ".rake", ".gemspec"), ("ruby", _grammar("tree_sitter_ruby"))
70
+ ),
71
+ ".php": ("php", _grammar("tree_sitter_php", "language_php")),
72
+ **dict.fromkeys((".kt", ".kts"), ("kotlin", _grammar("tree_sitter_kotlin"))),
73
+ ".swift": ("swift", _grammar("tree_sitter_swift")),
74
+ **dict.fromkeys((".scala", ".sc"), ("scala", _grammar("tree_sitter_scala"))),
75
+ **dict.fromkeys((".sh", ".bash"), ("bash", _grammar("tree_sitter_bash"))),
76
+ ".lua": ("lua", _grammar("tree_sitter_lua")),
77
+ }
78
+ # Tried in order when the primary grammar leaves parse errors.
79
+ _RETRY: dict[str, tuple[tuple[str, Callable[[], Any]], ...]] = {".h": (_C,)}
80
+
81
+ # Declarations split into a header plus one range per member.
82
+ _CONTAINERS = frozenset(
83
+ {
84
+ "class_declaration", # Java, C#, PHP, Kotlin, Swift (class/struct/extension)
85
+ "abstract_class_declaration",
86
+ "class", # JS class expressions, Ruby
87
+ "enum_declaration",
88
+ "record_declaration",
89
+ "struct_declaration", # C#
90
+ "impl_item", # Rust
91
+ "trait_item",
92
+ "mod_item",
93
+ "class_specifier", # C++ (C structs are data and stay whole)
94
+ "module", # Ruby
95
+ "trait_declaration", # PHP
96
+ "object_declaration", # Kotlin
97
+ "companion_object",
98
+ "class_definition", # Scala
99
+ "object_definition",
100
+ "trait_definition",
101
+ }
102
+ )
103
+ # Bodies: of functions (statements) and of containers (members).
104
+ _BLOCKS = frozenset(
105
+ {
106
+ "statement_block",
107
+ "block",
108
+ "class_body",
109
+ "declaration_list",
110
+ "enum_body",
111
+ "switch_body",
112
+ "compound_statement", # C, C++, PHP, Bash
113
+ "body_statement", # Ruby
114
+ "function_body", # Kotlin, Swift
115
+ "template_body", # Scala
116
+ "enum_class_body", # Kotlin
117
+ }
118
+ )
119
+ # A body that holds its statements in one wrapper node (Go, Swift, Kotlin).
120
+ _STATEMENT_WRAPPERS = frozenset(
121
+ {"statement_list", "statements", "block", "body_statement"}
122
+ )
123
+ # Unwrapped wherever they appear: they scope code rather than being code.
124
+ # A namespace or include guard often wraps a whole file; kept, it would make
125
+ # the file one range.
126
+ _TRANSPARENT = frozenset(
127
+ {
128
+ "preproc_ifdef",
129
+ "preproc_if",
130
+ "preproc_else",
131
+ "preproc_elif",
132
+ "preproc_elifdef",
133
+ "namespace_definition", # C++, PHP (braced)
134
+ "namespace_declaration", # C#
135
+ "file_scoped_namespace_declaration", # C# `namespace X;`
136
+ "linkage_specification", # extern "C" { ... }
137
+ "declaration_list", # the body of the three above
138
+ }
139
+ )
140
+ _TRANSPARENT_FIELDS = ("name", "condition", "value") # the wrapper's own label
141
+ _WRAPPERS = frozenset({"export_statement", "template_declaration"})
142
+ # Never named: an imported name would earn BM25's symbol boost for a line
143
+ # that is almost never the answer (Python's ast leaves imports unnamed too).
144
+ _UNNAMED = frozenset(
145
+ {
146
+ "import_declaration",
147
+ "package_declaration",
148
+ "use_declaration",
149
+ "preproc_include",
150
+ "using_directive", # C#
151
+ "namespace_use_declaration", # PHP
152
+ "import", # Kotlin
153
+ "package_header",
154
+ "package_clause", # Scala
155
+ "command", # Bash: a call site, not a declaration
156
+ }
157
+ )
158
+ _DECLARATORS = frozenset({"lexical_declaration", "variable_declaration"})
159
+ # Where a C/C++ declarator chain ends in a name.
160
+ _DECLARATOR_NAMES = frozenset(
161
+ {
162
+ "identifier",
163
+ "field_identifier",
164
+ "type_identifier",
165
+ "qualified_identifier",
166
+ "destructor_name",
167
+ "operator_name",
168
+ }
169
+ )
170
+ _QUALIFIED = frozenset({"qualified_identifier", "method_index_expression"})
171
+ _SKIPPED = frozenset({"access_specifier"}) # C++ `public:` labels
172
+ _BODY_SEARCH_DEPTH = 4
173
+ _DECLARATOR_DEPTH = 8
174
+ _MAX_ABSORBED_TAIL = 3 # lines: a closing brace or #endif, not a comment block
175
+
176
+ # py-tree-sitter 0.26.0 segfaults walking ordinary trees (reproduced on
177
+ # CPython 3.13 and 3.14; 0.25.2 is clean on the same input). A native crash
178
+ # would kill the whole session, so refuse it even if something pins it.
179
+ _BROKEN_TREE_SITTER = ((0, 26),)
180
+
181
+
182
+ def _tree_sitter_is_safe() -> bool:
183
+ try:
184
+ major, minor = (int(p) for p in version("tree-sitter").split(".")[:2])
185
+ except (PackageNotFoundError, ValueError):
186
+ return False
187
+ return (major, minor) not in _BROKEN_TREE_SITTER
188
+
189
+
190
+ def _code_children(node: Any) -> list[Any]:
191
+ """Named children minus comments and labels. A skipped leading comment is
192
+ absorbed into the declaration after it (as Python's ``ast``, which has no
193
+ comment nodes, already behaves)."""
194
+ return [
195
+ c
196
+ for c in node.named_children
197
+ if "comment" not in c.type and c.type not in _SKIPPED
198
+ ]
199
+
200
+
201
+ def _flatten(nodes: Iterable[Any]) -> list[Any]:
202
+ """Replace namespaces, include guards and ``extern "C"`` blocks with the
203
+ declarations inside them. Their own lines are absorbed by the neighbouring
204
+ ranges, so line coverage is unchanged."""
205
+ out: list[Any] = []
206
+ for node in nodes:
207
+ if node.type not in _TRANSPARENT:
208
+ out.append(node)
209
+ continue
210
+ labels = {
211
+ (c.start_byte, c.end_byte)
212
+ for field in _TRANSPARENT_FIELDS
213
+ if (c := node.child_by_field_name(field)) is not None
214
+ }
215
+ inner = [
216
+ c for c in _code_children(node) if (c.start_byte, c.end_byte) not in labels
217
+ ]
218
+ out.extend(_flatten(inner))
219
+ return out
220
+
221
+
222
+ class TreeSitterSyntax:
223
+ """:class:`~.structure.Syntax` over any tree-sitter grammar.
224
+
225
+ Node text is sliced from the ``source`` bytes that were parsed, by byte
226
+ offset, so names come from exactly the input we hold.
227
+ """
228
+
229
+ def __init__(self, source: bytes) -> None:
230
+ self._source = source
231
+
232
+ def _text(self, node: Any) -> str:
233
+ return self._source[node.start_byte : node.end_byte].decode(
234
+ "utf-8", errors="replace"
235
+ )
236
+
237
+ @staticmethod
238
+ def _inner(node: Any) -> Any:
239
+ """The declaration an ``export`` or ``template<...>`` wraps (the wrapper
240
+ keeps the span)."""
241
+ if node.type == "export_statement":
242
+ inner = node.child_by_field_name("declaration")
243
+ if inner is not None:
244
+ return inner
245
+ elif node.type == "template_declaration":
246
+ children = _code_children(node)
247
+ if children and children[-1].type != "template_parameter_list":
248
+ return children[-1]
249
+ return node
250
+
251
+ def span(self, node: Any) -> tuple[int, int]:
252
+ start = node.start_point.row + 1
253
+ end = node.end_point.row + (1 if node.end_point.column else 0)
254
+ return start, max(start, end)
255
+
256
+ def _name(self, node: Any) -> str:
257
+ text = self._text(node)
258
+ if node.type in _QUALIFIED: # C++ Server::port, Lua Account:deposit
259
+ text = text.replace("::", ".").replace(":", ".")
260
+ return text
261
+
262
+ def symbol(self, node: Any) -> str | None:
263
+ node = self._inner(node)
264
+ if node.type in _UNNAMED:
265
+ return None
266
+ if node.type == "impl_item": # `impl Cache` / `impl Trait for Cache`
267
+ target = node.child_by_field_name("type")
268
+ return self._text(target) if target is not None else None
269
+ name = node.child_by_field_name("name")
270
+ if name is None:
271
+ declared = self._declarator_name(node) # C/C++: int *make_buf(...)
272
+ if declared:
273
+ return declared
274
+ if node.type in _DECLARATORS or node.type.endswith("_declaration"):
275
+ return self._declared_names(node) # const a, b / Go type / Java field
276
+ return None
277
+ receiver = node.child_by_field_name("receiver") # Go: (s *Server) Serve
278
+ if receiver is not None:
279
+ owner = self._receiver_type(receiver)
280
+ if owner:
281
+ return f"{owner}.{self._text(name)}"
282
+ return self._name(name)
283
+
284
+ def _declarator_name(self, node: Any) -> str | None:
285
+ """Follow a C/C++ declarator chain (pointer -> function -> name)."""
286
+ current = node.child_by_field_name("declarator")
287
+ for _ in range(_DECLARATOR_DEPTH):
288
+ if current is None:
289
+ return None
290
+ if current.type in _DECLARATOR_NAMES:
291
+ return self._name(current)
292
+ children = current.named_children
293
+ current = current.child_by_field_name("declarator") or (
294
+ children[0] if children else None
295
+ )
296
+ return None
297
+
298
+ def _declared_names(self, node: Any) -> str | None:
299
+ """Names one level down: ``const a, b``, Go ``type_spec``, Java fields."""
300
+ candidates = [node.child_by_field_name("declarator"), *node.named_children]
301
+ names = dict.fromkeys(
302
+ self._text(name)
303
+ for child in candidates
304
+ if child is not None and (name := child.child_by_field_name("name"))
305
+ )
306
+ return ", ".join(names) or None
307
+
308
+ def _receiver_type(self, receiver: Any) -> str | None:
309
+ for param in receiver.named_children:
310
+ kind = param.child_by_field_name("type")
311
+ if kind is not None:
312
+ return self._text(kind).lstrip("*&").split("[", 1)[0] or None
313
+ return None
314
+
315
+ def members(self, node: Any) -> Sequence[Any] | None:
316
+ node = self._inner(node)
317
+ if node.type not in _CONTAINERS:
318
+ return None
319
+ body = node.child_by_field_name("body") or next(
320
+ (c for c in node.named_children if c.type in _BLOCKS), None
321
+ )
322
+ members = _flatten(_code_children(body)) if body is not None else []
323
+ # Only one-line members (fields, enum constants, prototypes, interface
324
+ # signatures): keep the declaration whole. A range per line would cost
325
+ # a judgment each and hold no behaviour.
326
+ if all(self.span(m)[1] - self.span(m)[0] < 1 for m in members):
327
+ return None
328
+ return members
329
+
330
+ def broken(self, node: Any) -> bool:
331
+ return node.type == "ERROR" or node.has_error
332
+
333
+ def statements(self, node: Any) -> Sequence[Any] | None:
334
+ block = _body_block(self._inner(node))
335
+ if block is None:
336
+ return None
337
+ children = _code_children(block)
338
+ for _ in range(_BODY_SEARCH_DEPTH): # function_body -> block -> statements
339
+ if len(children) != 1 or children[0].type not in _STATEMENT_WRAPPERS:
340
+ break
341
+ children = _code_children(children[0])
342
+ return children or None
343
+
344
+
345
+ def _body_block(node: Any) -> Any | None:
346
+ """The nearest block under ``node``: its own body, or one inside a wrapper
347
+ (``const f = () => {...}``, ``app.get("/x", (req, res) => {...})``)."""
348
+ if node.type in _BLOCKS:
349
+ return node
350
+ body = node.child_by_field_name("body")
351
+ if body is not None and body.type in _BLOCKS:
352
+ return body
353
+ frontier = list(node.named_children)
354
+ for _ in range(_BODY_SEARCH_DEPTH):
355
+ for child in frontier:
356
+ if child.type in _BLOCKS:
357
+ return child
358
+ frontier = [grand for child in frontier for grand in child.named_children]
359
+ return None
360
+
361
+
362
+ @cache
363
+ def _parser(loader: Callable[[], Any]) -> Any | None:
364
+ if not _tree_sitter_is_safe():
365
+ return None
366
+ try:
367
+ from tree_sitter import Language, Parser
368
+
369
+ return Parser(Language(loader()))
370
+ except Exception: # noqa: BLE001 - unavailable grammar => line windows
371
+ return None
372
+
373
+
374
+ def treesitter_ranges(text: str, path: str) -> tuple[list[Range], str] | None:
375
+ """(ranges, parser name), or None when this file should use line windows."""
376
+ ext = os.path.splitext(path)[1].lower()
377
+ entry = LANGUAGES.get(ext)
378
+ if entry is None:
379
+ return None
380
+ source = text.encode("utf-8")
381
+ syntax = TreeSitterSyntax(source)
382
+ # First clean parse wins; otherwise the tree with the fewest broken lines.
383
+ best: tuple[int, str, Any, list[Any]] | None = None
384
+ for name, loader in (entry, *_RETRY.get(ext, ())):
385
+ parser = _parser(loader)
386
+ if parser is None:
387
+ continue
388
+ root = parser.parse(source).root_node
389
+ nodes = _flatten(_code_children(root))
390
+ broken = sum(
391
+ syntax.span(n)[1] - syntax.span(n)[0] + 1 for n in nodes if syntax.broken(n)
392
+ )
393
+ if best is None or broken < best[0]:
394
+ best = (broken, name, root, nodes)
395
+ if not broken:
396
+ break
397
+ if best is None:
398
+ return None
399
+ broken, name, root, nodes = best
400
+ ranges = structure_ranges(nodes, syntax)
401
+ if not ranges:
402
+ return None
403
+ # Close the last range over a short tail (a namespace's closing brace,
404
+ # an include guard's #endif) instead of leaving it to become a
405
+ # judgment-costing snippet of its own. Longer tails stay separate.
406
+ tail = syntax.span(root)[1]
407
+ if 0 < tail - ranges[-1].end <= _MAX_ABSORBED_TAIL:
408
+ ranges[-1].end = tail
409
+ return ranges, f"{name}-partial" if broken else name
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy-core-plugins"
7
- version = "0.0.72"
7
+ version = "0.0.73"
8
8
  description = "Official plugin bundle for Code Puppy"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -15,10 +15,20 @@ dependencies = [
15
15
  # smart_grep syntax-aware chunking. <0.26: py-tree-sitter 0.26.0
16
16
  # segfaults walking ordinary trees (see jev_grep/treesitter.py).
17
17
  "tree-sitter>=0.25.2,<0.26",
18
+ "tree-sitter-bash>=0.25.1",
19
+ "tree-sitter-c>=0.24.2",
20
+ "tree-sitter-c-sharp>=0.23.5",
21
+ "tree-sitter-cpp>=0.23.4",
18
22
  "tree-sitter-go>=0.25.0",
19
23
  "tree-sitter-java>=0.23.5",
20
24
  "tree-sitter-javascript>=0.25.0",
25
+ "tree-sitter-kotlin>=1.1.0",
26
+ "tree-sitter-lua>=0.5.0",
27
+ "tree-sitter-php>=0.24.1",
28
+ "tree-sitter-ruby>=0.23.1",
21
29
  "tree-sitter-rust>=0.24.2",
30
+ "tree-sitter-scala>=0.26.2",
31
+ "tree-sitter-swift>=0.7.3",
22
32
  "tree-sitter-typescript>=0.23.2",
23
33
  ]
24
34
  license = {text = "MIT"}