code-puppy-core-plugins 0.0.77__tar.gz → 0.0.78__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 (397) hide show
  1. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/PKG-INFO +1 -1
  2. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/pyproject.toml +1 -2
  3. code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/__init__.py +0 -5
  4. code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/ratios.py +0 -208
  5. code_puppy_core_plugins-0.0.77/code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +0 -218
  6. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/.gitignore +0 -0
  7. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/LICENSE +0 -0
  8. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/README.md +0 -0
  9. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/THIRD_PARTY_NOTICES.md +0 -0
  10. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/__init__.py +0 -0
  11. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/README.md +0 -0
  12. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/__init__.py +0 -0
  13. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/agent.py +0 -0
  14. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/bridge.py +0 -0
  15. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/capabilities.py +0 -0
  16. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/commands.py +0 -0
  17. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/content.py +0 -0
  18. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/io_delegation.py +0 -0
  19. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/mcp_config.py +0 -0
  20. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/permissions.py +0 -0
  21. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/persistence.py +0 -0
  22. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/register_callbacks.py +0 -0
  23. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/replay.py +0 -0
  24. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/session.py +0 -0
  25. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/session_config.py +0 -0
  26. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/acp/state.py +0 -0
  27. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_creator_skill/SKILL.md +0 -0
  28. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_creator_skill/__init__.py +0 -0
  29. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_creator_skill/register_callbacks.py +0 -0
  30. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/__init__.py +0 -0
  31. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/config.py +0 -0
  32. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/discovery.py +0 -0
  33. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/enabled_skills.py +0 -0
  34. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/metadata.py +0 -0
  35. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/prompt_builder.py +0 -0
  36. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/provider.py +0 -0
  37. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/register_callbacks.py +0 -0
  38. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/skill_commands.py +0 -0
  39. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/agent_skills/skills_menu.py +0 -0
  40. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/attachment_references/__init__.py +0 -0
  41. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/attachment_references/register_callbacks.py +0 -0
  42. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/attachment_references/tool.py +0 -0
  43. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/auto_continue/__init__.py +0 -0
  44. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/auto_continue/classifier.py +0 -0
  45. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/auto_continue/register_callbacks.py +0 -0
  46. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/__init__.py +0 -0
  47. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/config.py +0 -0
  48. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/register_callbacks.py +0 -0
  49. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/aws_bedrock/utils.py +0 -0
  50. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/README.md +0 -0
  51. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/__init__.py +0 -0
  52. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/config.py +0 -0
  53. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/discovery.py +0 -0
  54. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/register_callbacks.py +0 -0
  55. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/token.py +0 -0
  56. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/azure_foundry/utils.py +0 -0
  57. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/background_agents/README.md +0 -0
  58. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/background_agents/__init__.py +0 -0
  59. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/background_agents/register_callbacks.py +0 -0
  60. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/__init__.py +0 -0
  61. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/inline_view.py +0 -0
  62. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/register_callbacks.py +0 -0
  63. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/btw/side_query.py +0 -0
  64. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +0 -0
  65. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/__init__.py +0 -0
  66. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/config.py +0 -0
  67. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/image_generation.py +0 -0
  68. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/image_tool.py +0 -0
  69. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/model_catalog.py +0 -0
  70. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +0 -0
  71. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +0 -0
  72. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +0 -0
  73. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/usage.py +0 -0
  74. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/chatgpt_oauth/utils.py +0 -0
  75. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_hooks/__init__.py +0 -0
  76. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_hooks/config.py +0 -0
  77. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +0 -0
  78. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_hooks/trust.py +0 -0
  79. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/README.md +0 -0
  80. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/SETUP.md +0 -0
  81. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/__init__.py +0 -0
  82. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/config.py +0 -0
  83. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/fast_mode.py +0 -0
  84. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/model_filter.py +0 -0
  85. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/model_provider.py +0 -0
  86. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +0 -0
  87. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +0 -0
  88. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/runtime_credentials.py +0 -0
  89. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/test_plugin.py +0 -0
  90. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  91. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/token_store.py +0 -0
  92. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/claude_code_oauth/utils.py +0 -0
  93. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +0 -0
  94. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +0 -0
  95. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +0 -0
  96. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +0 -0
  97. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/SKILL.md +0 -0
  98. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +0 -0
  99. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +0 -0
  100. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/__init__.py +0 -0
  101. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +0 -0
  102. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/__init__.py +0 -0
  103. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/config.py +0 -0
  104. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/locales/en-US.json +0 -0
  105. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/locales/es.json +0 -0
  106. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/locales/fr-CA.json +0 -0
  107. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/notifier.py +0 -0
  108. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/completion_notification/register_callbacks.py +0 -0
  109. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/FOCUS_INVESTIGATION.md +0 -0
  110. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/NativeCapture.swift +0 -0
  111. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/PARITY.md +0 -0
  112. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/README.md +0 -0
  113. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/WINDOWS.md +0 -0
  114. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/__init__.py +0 -0
  115. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/accessibility.py +0 -0
  116. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/activation.py +0 -0
  117. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/backend.py +0 -0
  118. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/backend_types.py +0 -0
  119. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/batch.py +0 -0
  120. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/capture.py +0 -0
  121. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/commands.py +0 -0
  122. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/geometry.py +0 -0
  123. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/inline_image.py +0 -0
  124. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/keycodes.py +0 -0
  125. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/locales/en-US.json +0 -0
  126. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/locales/es.json +0 -0
  127. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/locales/fr-CA.json +0 -0
  128. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/macos_backend.py +0 -0
  129. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/permissions.py +0 -0
  130. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/policy.py +0 -0
  131. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/register_callbacks.py +0 -0
  132. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/safety.py +0 -0
  133. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/settle.py +0 -0
  134. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/state.py +0 -0
  135. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/tools.py +0 -0
  136. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_accessibility.py +0 -0
  137. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_activation.py +0 -0
  138. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_backend.py +0 -0
  139. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_capture.py +0 -0
  140. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_input.py +0 -0
  141. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_native.py +0 -0
  142. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/computer_use/windows_runtime.py +0 -0
  143. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/context_indicator/__init__.py +0 -0
  144. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/context_indicator/register_callbacks.py +0 -0
  145. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/context_indicator/usage.py +0 -0
  146. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/__init__.py +0 -0
  147. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/config.py +0 -0
  148. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/reasoning_client.py +0 -0
  149. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/register_callbacks.py +0 -0
  150. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/responses_stream.py +0 -0
  151. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/copilot_auth/utils.py +0 -0
  152. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
  153. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/customizable_commands/register_callbacks.py +0 -0
  154. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/__init__.py +0 -0
  155. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/cancel.py +0 -0
  156. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/commands.py +0 -0
  157. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/config.py +0 -0
  158. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +0 -0
  159. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +0 -0
  160. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/runtime.py +0 -0
  161. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +0 -0
  162. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +0 -0
  163. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/dbos_durable_exec/wrapper.py +0 -0
  164. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/AGENTS.md +0 -0
  165. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/__init__.py +0 -0
  166. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/detector.py +0 -0
  167. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +0 -0
  168. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/__init__.py +0 -0
  169. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/config.py +0 -0
  170. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/register_callbacks.py +0 -0
  171. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/emoji_filter/stripper.py +0 -0
  172. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +0 -0
  173. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/example_custom_command/README.md +0 -0
  174. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/example_custom_command/register_callbacks.py +0 -0
  175. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/file_permission_handler/__init__.py +0 -0
  176. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/file_permission_handler/register_callbacks.py +0 -0
  177. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/__init__.py +0 -0
  178. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
  179. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
  180. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
  181. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
  182. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
  183. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
  184. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
  185. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
  186. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
  187. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
  188. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
  189. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
  190. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
  191. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
  192. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
  193. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
  194. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
  195. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
  196. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
  197. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
  198. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
  199. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
  200. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
  201. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
  202. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
  203. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/installer.py +0 -0
  204. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +0 -0
  205. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/force_push_guard/__init__.py +0 -0
  206. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/force_push_guard/detector.py +0 -0
  207. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/force_push_guard/register_callbacks.py +0 -0
  208. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/fork/__init__.py +0 -0
  209. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/fork/register_callbacks.py +0 -0
  210. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/__init__.py +0 -0
  211. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/emitter.py +0 -0
  212. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/register_callbacks.py +0 -0
  213. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/frontend_emitter/session_context.py +0 -0
  214. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/__init__.py +0 -0
  215. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/config.py +0 -0
  216. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/oauth_flow.py +0 -0
  217. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/register_callbacks.py +0 -0
  218. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/grok_oauth/utils.py +0 -0
  219. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/README.md +0 -0
  220. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/__init__.py +0 -0
  221. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/client.py +0 -0
  222. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/register_callbacks.py +0 -0
  223. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/reporter.py +0 -0
  224. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/restore.py +0 -0
  225. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/smoke.py +0 -0
  226. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/herdr/sources.py +0 -0
  227. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_creator/__init__.py +0 -0
  228. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_creator/register_callbacks.py +0 -0
  229. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/__init__.py +0 -0
  230. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/config.py +0 -0
  231. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/hooks_menu.py +0 -0
  232. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/register_callbacks.py +0 -0
  233. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/hook_manager/trust_handler.py +0 -0
  234. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/__init__.py +0 -0
  235. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/chunks.py +0 -0
  236. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/config.py +0 -0
  237. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/judge.py +0 -0
  238. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/locales/en-US.json +0 -0
  239. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/register_callbacks.py +0 -0
  240. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/retrieve.py +0 -0
  241. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/search.py +0 -0
  242. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/structure.py +0 -0
  243. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/tool.py +0 -0
  244. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/jev_grep/treesitter.py +0 -0
  245. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/__init__.py +0 -0
  246. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/oauth.py +0 -0
  247. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/query_tool.py +0 -0
  248. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_oauth/register_callbacks.py +0 -0
  249. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/__init__.py +0 -0
  250. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/mirror.py +0 -0
  251. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/query.py +0 -0
  252. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/register_callbacks.py +0 -0
  253. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/logfire_sessions/sync.py +0 -0
  254. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/README.md +0 -0
  255. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/__init__.py +0 -0
  256. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/custom_install.py +0 -0
  257. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/http_form.py +0 -0
  258. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/mcp_binding_prompt/register_callbacks.py +0 -0
  259. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/__init__.py +0 -0
  260. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/config.py +0 -0
  261. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/oauth_flow.py +0 -0
  262. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/register_callbacks.py +0 -0
  263. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/meta_oauth/utils.py +0 -0
  264. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/README.md +0 -0
  265. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/__init__.py +0 -0
  266. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/namespaces.py +0 -0
  267. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +0 -0
  268. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/namespace_skill_search/search_tool.py +0 -0
  269. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/no_tools/__init__.py +0 -0
  270. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/no_tools/register_callbacks.py +0 -0
  271. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/oauth_pasteback.py +0 -0
  272. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/oauth_puppy_html.py +0 -0
  273. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/README.md +0 -0
  274. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/__init__.py +0 -0
  275. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +0 -0
  276. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/obsidian_agent/register_callbacks.py +0 -0
  277. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama/__init__.py +0 -0
  278. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama/register_callbacks.py +0 -0
  279. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama_setup/__init__.py +0 -0
  280. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama_setup/completer.py +0 -0
  281. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/ollama_setup/register_callbacks.py +0 -0
  282. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/__init__.py +0 -0
  283. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/config.py +0 -0
  284. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/oauth_flow.py +0 -0
  285. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/register_callbacks.py +0 -0
  286. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/openrouter_oauth/test_plugin.py +0 -0
  287. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/__init__.py +0 -0
  288. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugin_contributions.py +0 -0
  289. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugin_meta.py +0 -0
  290. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugin_text_utils.py +0 -0
  291. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugins_menu.py +0 -0
  292. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/plugins_menu_render.py +0 -0
  293. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/project_trust_flow.py +0 -0
  294. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_list/register_callbacks.py +0 -0
  295. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/plugin_settings.py +0 -0
  296. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/pop_command/__init__.py +0 -0
  297. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/pop_command/register_callbacks.py +0 -0
  298. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/README.md +0 -0
  299. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/__init__.py +0 -0
  300. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/config.py +0 -0
  301. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/locales/en-US.json +0 -0
  302. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/menu.py +0 -0
  303. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/profiles/register_callbacks.py +0 -0
  304. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prompt_newline/__init__.py +0 -0
  305. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prompt_newline/config.py +0 -0
  306. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prompt_newline/register_callbacks.py +0 -0
  307. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/__init__.py +0 -0
  308. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/prune_menu.py +0 -0
  309. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/prune_model.py +0 -0
  310. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/prune_render.py +0 -0
  311. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/prune/register_callbacks.py +0 -0
  312. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/README.md +0 -0
  313. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/__init__.py +0 -0
  314. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/commands.py +0 -0
  315. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/config.py +0 -0
  316. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/kennel.py +0 -0
  317. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/packer.py +0 -0
  318. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/recorder.py +0 -0
  319. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/register_callbacks.py +0 -0
  320. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/retriever.py +0 -0
  321. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/schema.py +0 -0
  322. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/state.py +0 -0
  323. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/tools.py +0 -0
  324. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_kennel/wings.py +0 -0
  325. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/README.md +0 -0
  326. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/__init__.py +0 -0
  327. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/builtin_frames.py +0 -0
  328. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/commands.py +0 -0
  329. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/picker.py +0 -0
  330. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/register_callbacks.py +0 -0
  331. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/puppy_spinner/spinners.py +0 -0
  332. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/qa_kitten_skill/SKILL.md +0 -0
  333. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/qa_kitten_skill/__init__.py +0 -0
  334. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/qa_kitten_skill/register_callbacks.py +0 -0
  335. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/quick_resume/__init__.py +0 -0
  336. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/quick_resume/register_callbacks.py +0 -0
  337. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/review_pr/__init__.py +0 -0
  338. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/review_pr/register_callbacks.py +0 -0
  339. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/session_namer/__init__.py +0 -0
  340. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/session_namer/namer.py +0 -0
  341. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/session_namer/register_callbacks.py +0 -0
  342. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/LICENSE.deepseek +0 -0
  343. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/__init__.py +0 -0
  344. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/register_callbacks.py +0 -0
  345. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/spill/store.py +0 -0
  346. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/stack_dump/__init__.py +0 -0
  347. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/stack_dump/register_callbacks.py +0 -0
  348. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/__init__.py +0 -0
  349. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/config.py +0 -0
  350. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/payload.py +0 -0
  351. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/prompt_patch.py +0 -0
  352. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/register_callbacks.py +0 -0
  353. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/runner.py +0 -0
  354. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/statusline/statusline_command.py +0 -0
  355. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/steer_queue/__init__.py +0 -0
  356. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/steer_queue/queue_menu.py +0 -0
  357. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/steer_queue/register_callbacks.py +0 -0
  358. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/README.md +0 -0
  359. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/__init__.py +0 -0
  360. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/coalesce_patch.py +0 -0
  361. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/panel_render.py +0 -0
  362. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/register_callbacks.py +0 -0
  363. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/resume_repaint.py +0 -0
  364. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/subagent_panel/state.py +0 -0
  365. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/switch_agent_resume/__init__.py +0 -0
  366. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +0 -0
  367. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/termflow_tui.py +0 -0
  368. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/README.md +0 -0
  369. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/__init__.py +0 -0
  370. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/bundled_palettes.py +0 -0
  371. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/content_styles.py +0 -0
  372. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/osc_palette.py +0 -0
  373. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/picker.py +0 -0
  374. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/prompt_toolkit_theme.py +0 -0
  375. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/register_callbacks.py +0 -0
  376. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/rich_themes.py +0 -0
  377. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/theme/themes.py +0 -0
  378. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/timestamp_heartbeat/__init__.py +0 -0
  379. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +0 -0
  380. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/__init__.py +0 -0
  381. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/models.py +0 -0
  382. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/provider.py +0 -0
  383. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/register_callbacks.py +0 -0
  384. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/registry.py +0 -0
  385. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/universal_constructor/sandbox.py +0 -0
  386. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/web_retriever_skill/SKILL.md +0 -0
  387. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/web_retriever_skill/__init__.py +0 -0
  388. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/web_retriever_skill/register_callbacks.py +0 -0
  389. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/__init__.py +0 -0
  390. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/goal_runs.py +0 -0
  391. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/judge.py +0 -0
  392. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/judge_config.py +0 -0
  393. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/judges_menu.py +0 -0
  394. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/register_callbacks.py +0 -0
  395. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/wiggum/state.py +0 -0
  396. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/yolo_cli/__init__.py +0 -0
  397. {code_puppy_core_plugins-0.0.77 → code_puppy_core_plugins-0.0.78}/code_puppy_core_plugins/yolo_cli/register_callbacks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: code-puppy-core-plugins
3
- Version: 0.0.77
3
+ Version: 0.0.78
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy-core-plugins"
7
- version = "0.0.77"
7
+ version = "0.0.78"
8
8
  description = "Official plugin bundle for Code Puppy"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -122,7 +122,6 @@ subagent_panel = "code_puppy_core_plugins.subagent_panel.register_callbacks"
122
122
  switch_agent_resume = "code_puppy_core_plugins.switch_agent_resume.register_callbacks"
123
123
  theme = "code_puppy_core_plugins.theme.register_callbacks"
124
124
  timestamp_heartbeat = "code_puppy_core_plugins.timestamp_heartbeat.register_callbacks"
125
- token_ratio_learner = "code_puppy_core_plugins.token_ratio_learner.register_callbacks"
126
125
  universal_constructor = "code_puppy_core_plugins.universal_constructor.register_callbacks"
127
126
  web_retriever_skill = "code_puppy_core_plugins.web_retriever_skill.register_callbacks"
128
127
  wiggum = "code_puppy_core_plugins.wiggum.register_callbacks"
@@ -1,5 +0,0 @@
1
- """Token ratio learner plugin — per-model chars/token ratio learning.
2
-
3
- Provides ``count_tokens()`` using learned ratios, falling back to a safe
4
- overestimate when no ratio has been learned yet for a given model.
5
- """
@@ -1,208 +0,0 @@
1
- """Learned token-per-character ratios for accurate token estimation.
2
-
3
- When the API reports real prompt_tokens we can compute the actual
4
- chars-per-token ratio for that model and store it keyed by the bare
5
- model name (the part after ``:``). Future ``count_tokens`` calls use the
6
- stored ratio for that model, falling back to a hardcoded default.
7
-
8
- The default (2.5) matches the classic char/token heuristic used across
9
- most models. Real tokenizers vary (GPT-4 ~3.5, Claude ~2.8), but 2.5
10
- provides a reasonable middle ground. The max clamp (3.5) prevents
11
- absurdly high ratios from inflating token estimates.
12
-
13
- Storage lives at ``~/.code_puppy/token_ratios.json``, overridable via
14
- the env var ``CODE_PUPPY_TOKEN_RATIOS_PATH``.
15
- """
16
-
17
- import json
18
- import logging
19
- import os
20
- import tempfile
21
- import threading
22
- from pathlib import Path
23
-
24
- logger = logging.getLogger(__name__)
25
-
26
- # Constants
27
-
28
- # Default 2.5 chars/token slightly overestimates for safer compaction.
29
- _DEFAULT_RATIO = 2.5
30
-
31
- # Clamp learned ratios to [1.5, 3.5]; extremes imply implausible tokenization and
32
- # can collapse estimates or risk context overflow.
33
- _MIN_RATIO = 1.5
34
- _MAX_RATIO = 3.5
35
-
36
- # Lazy in-memory cache, populated by ``_ensure_ratios_loaded()``.
37
-
38
- _LEARNED_RATIOS: dict[str, float] = {}
39
- _ratios_loaded: bool = False
40
- _ratios_lock = threading.Lock()
41
-
42
- # Learned-ratio storage path.
43
-
44
- _TOKEN_RATIOS_PATH: Path = Path(
45
- os.path.expanduser(
46
- os.environ.get(
47
- "CODE_PUPPY_TOKEN_RATIOS_PATH",
48
- str(Path.home() / ".code_puppy" / "token_ratios.json"),
49
- )
50
- )
51
- )
52
-
53
-
54
- # Internal helpers
55
-
56
-
57
- def _ensure_ratios_loaded() -> None:
58
- """Populate ``_LEARNED_RATIOS`` from disk on first call (idempotent)."""
59
- global _ratios_loaded
60
- with _ratios_lock:
61
- if _ratios_loaded:
62
- return
63
- _LEARNED_RATIOS.clear()
64
- _LEARNED_RATIOS.update(_load_learned_ratios())
65
- _ratios_loaded = True
66
-
67
-
68
- def _load_learned_ratios() -> dict[str, float]:
69
- """Load learned token ratios from the on-disk JSON file.
70
-
71
- Returns an empty dict when the file doesn't exist or is corrupt —
72
- callers fall back to ``_DEFAULT_RATIO``.
73
-
74
- Each loaded value is clamped to ``[_MIN_RATIO, _MAX_RATIO]`` so that
75
- poisoned or corrupted values cannot cause token-count collapse.
76
- """
77
- try:
78
- if _TOKEN_RATIOS_PATH.is_file():
79
- data = json.loads(_TOKEN_RATIOS_PATH.read_text(encoding="utf-8"))
80
- if isinstance(data, dict):
81
- clamped: dict[str, float] = {}
82
- for k, v in data.items():
83
- if isinstance(v, (int, float)) and v > 0:
84
- # Lowercase keys for case-insensitive matching.
85
- clamped[k.lower()] = max(_MIN_RATIO, min(_MAX_RATIO, float(v)))
86
- return clamped
87
- except (OSError, json.JSONDecodeError, ValueError):
88
- pass
89
- return {}
90
-
91
-
92
- def _save_learned_ratios(ratios: dict[str, float]) -> None:
93
- """Persist learned token ratios to disk atomically (best-effort, never raises)."""
94
- try:
95
- parent = _TOKEN_RATIOS_PATH.parent
96
- parent.mkdir(parents=True, exist_ok=True)
97
- fd, tmp_name = tempfile.mkstemp(dir=parent, suffix=".tmp")
98
- try:
99
- with os.fdopen(fd, "w", encoding="utf-8") as tmp:
100
- json.dump(ratios, tmp, indent=2)
101
- os.replace(tmp_name, str(_TOKEN_RATIOS_PATH))
102
- except OSError:
103
- try:
104
- os.unlink(tmp_name)
105
- except OSError:
106
- pass
107
- raise
108
- except OSError:
109
- pass # Silently ignore write failures (permissions, disk full, etc.)
110
-
111
-
112
- def _record_token_ratio(model: str, char_count: int, token_count: int) -> None:
113
- """Record an observed chars-per-token ratio for *model*.
114
-
115
- Called after a successful API response where we know both the input
116
- character count and the actual prompt token count. Stores a running
117
- average keyed by the bare model name (the part after ``:``) so that
118
- the same model accessed through different providers shares the estimate.
119
-
120
- The running average uses a 70/30 blend: 70% old, 30% new. This lets
121
- the estimate adapt to the real tokenizer without swinging wildly on
122
- every call.
123
- """
124
- if char_count <= 0 or token_count <= 0:
125
- return
126
-
127
- # Strip the provider prefix and lowercase the model name.
128
- model_name = model.split(":", 1)[1] if ":" in model else model
129
- model_name = model_name.lower()
130
-
131
- _ensure_ratios_loaded()
132
-
133
- new_ratio = char_count / token_count
134
- new_ratio = max(_MIN_RATIO, min(_MAX_RATIO, new_ratio))
135
-
136
- with _ratios_lock:
137
- old = _LEARNED_RATIOS.get(model_name)
138
- if old is not None:
139
- blended = 0.7 * old + 0.3 * new_ratio
140
- else:
141
- blended = new_ratio
142
- _LEARNED_RATIOS[model_name] = round(blended, 4)
143
- _save_learned_ratios(_LEARNED_RATIOS)
144
-
145
-
146
- # Public API
147
-
148
-
149
- def count_tokens(text: str, model: str | None = None) -> int:
150
- """Estimate token count using a character-based heuristic.
151
-
152
- If we have a *learned* chars-per-token ratio for *model*, use it.
153
- Otherwise fall back to ``_DEFAULT_RATIO`` (2.5).
154
-
155
- Args:
156
- text: The text content whose token count we need.
157
- model: Optional model identifier string (e.g.
158
- ``"anthropic:claude-sonnet"``). The provider prefix is
159
- stripped before lookup, so ``"wafer:glm5.1"`` and bare
160
- ``"glm5.1"`` resolve to the same key.
161
-
162
- Returns:
163
- Estimated token count (always >= 1 for non-empty input).
164
- """
165
- _ensure_ratios_loaded()
166
-
167
- if not text:
168
- return 0
169
-
170
- # Look up by bare model name (strip provider prefix, lowercase).
171
- model_name = None
172
- if model:
173
- model_name = model.split(":", 1)[1] if ":" in model else model
174
- model_name = model_name.lower()
175
-
176
- raw_ratio = _LEARNED_RATIOS.get(model_name or "", _DEFAULT_RATIO)
177
- ratio = max(_MIN_RATIO, min(_MAX_RATIO, raw_ratio))
178
-
179
- result = round(len(text) / ratio)
180
- return result if result > 0 else 1
181
-
182
-
183
- def get_ratio_for_model(model: str) -> float:
184
- """Return the current chars/token ratio for *model* (or default)."""
185
- _ensure_ratios_loaded()
186
- model_name = model.split(":", 1)[1] if ":" in model else model
187
- model_name = model_name.lower()
188
- raw = _LEARNED_RATIOS.get(model_name, _DEFAULT_RATIO)
189
- return max(_MIN_RATIO, min(_MAX_RATIO, raw))
190
-
191
-
192
- def list_known_ratios() -> dict[str, float]:
193
- """Return a copy of all learned ratios (for debugging/stats)."""
194
- _ensure_ratios_loaded()
195
- with _ratios_lock:
196
- return dict(_LEARNED_RATIOS)
197
-
198
-
199
- # Storage path override (for tests)
200
-
201
-
202
- def set_ratios_path(path: str | Path) -> None:
203
- """Override the token ratios file path (mostly for testing)."""
204
- global _TOKEN_RATIOS_PATH, _ratios_loaded, _LEARNED_RATIOS
205
- _TOKEN_RATIOS_PATH = Path(path)
206
- with _ratios_lock:
207
- _LEARNED_RATIOS.clear()
208
- _ratios_loaded = False
@@ -1,218 +0,0 @@
1
- """Register callbacks for the token-ratio-learner plugin.
2
-
3
- On startup we monkeypatch four things:
4
-
5
- 1. ``_history.estimate_tokens`` — replaces the hardcoded
6
- ``max(1, floor(len(text)/2.5))`` with a learned-ratio lookup, falling
7
- back to ``_DEFAULT_RATIO`` (2.5) which matches the classic heuristic.
8
-
9
- 2. ``_history.estimate_tokens_for_message`` — replaces per-part char/2.5
10
- summing + ``model_token_multiplier`` with direct
11
- ``ratios.count_tokens(part_str, model=model_name)`` per part. The
12
- learned ratio is already model-calibrated, so the multiplier becomes
13
- redundant.
14
-
15
- 3. ``_runtime.run_with_mcp`` — wraps the orchestration so that after every
16
- successful agent run we extract ``result.usage.input_tokens`` and
17
- the character count of the input, then call
18
- ``ratios._record_token_ratio()`` to update the running average.
19
-
20
- 4. ``subagent_stream_handler._estimate_tokens`` — same replacement as
21
- (1) so that subagent streaming token counts use learned ratios.
22
-
23
- We do **not** touch ``event_stream_handler`` inlining — that code is for
24
- progress display only, not for compaction decisions.
25
- """
26
-
27
- import logging
28
- from typing import Any, Optional, Union
29
-
30
- from code_puppy.callbacks import register_callback
31
-
32
- logger = logging.getLogger(__name__)
33
-
34
- # Original references, populated during startup.
35
-
36
- _original_estimate_tokens = None
37
- _original_estimate_tokens_for_message = None
38
- _original_run_with_mcp = None
39
- _original_subagent_estimate_tokens = None
40
-
41
-
42
- # Patched ``estimate_tokens`` (root text-level)
43
-
44
-
45
- def _patched_estimate_tokens(text: str) -> int:
46
- """Drop-in replacement that uses learned char/token ratios.
47
-
48
- No model argument — uses the default ratio. Callers that need
49
- model-specific calibration go through ``estimate_tokens_for_message``.
50
- """
51
- from code_puppy_core_plugins.token_ratio_learner.ratios import count_tokens
52
-
53
- return count_tokens(text, model=None)
54
-
55
-
56
- # Patched ``estimate_tokens_for_message``
57
-
58
-
59
- def _patched_estimate_tokens_for_message(
60
- message: Any,
61
- model_name: Optional[str] = None,
62
- ) -> int:
63
- """Per-message token estimation using learned model-specific ratios.
64
-
65
- Iterates over ``message.parts``, stringifying each with
66
- ``stringify_part``, then calls ``ratios.count_tokens(part_str, model)``.
67
- Bypasses the old ``estimate_tokens`` + ``model_token_multiplier`` chain
68
- entirely — the learned ratio *is* the calibration.
69
- """
70
- # Import stringify_part from the same module the original lives in
71
- from code_puppy.agents._history import stringify_part
72
- from code_puppy_core_plugins.token_ratio_learner.ratios import count_tokens
73
-
74
- total = 0
75
- for part in getattr(message, "parts", []) or []:
76
- part_str = stringify_part(part)
77
- if part_str:
78
- total += count_tokens(part_str, model=model_name)
79
- return max(1, total)
80
-
81
-
82
- # Patched ``run_with_mcp`` records ratios after each API call.
83
-
84
-
85
- def _compute_input_char_count(
86
- agent: Any, prompt: Union[str, list], attachments: Any, link_attachments: Any
87
- ) -> int:
88
- """Compute a reasonable character count for the input to the model.
89
-
90
- Counts the prompt text (or list items) plus the stringified message
91
- history. Binary/URL attachments aren't tokenized as text so they're
92
- skipped.
93
- """
94
- char_count = 0
95
-
96
- if isinstance(prompt, str):
97
- char_count += len(prompt)
98
- elif isinstance(prompt, list):
99
- for item in prompt:
100
- if isinstance(item, str):
101
- char_count += len(item)
102
-
103
- try:
104
- history = agent._message_history
105
- from code_puppy.agents._history import stringify_part
106
-
107
- for msg in history:
108
- for part in getattr(msg, "parts", []) or []:
109
- part_str = stringify_part(part)
110
- if part_str:
111
- char_count += len(part_str)
112
- except Exception:
113
- pass
114
-
115
- return char_count
116
-
117
-
118
- async def _patched_run_with_mcp(
119
- agent: Any,
120
- prompt: str,
121
- *,
122
- attachments: Optional[Any] = None,
123
- link_attachments: Optional[Any] = None,
124
- output_type: Optional[Any] = None,
125
- **kwargs: Any,
126
- ) -> Any:
127
- """Wrap ``run_with_mcp`` to learn token ratios from real API responses."""
128
- global _original_run_with_mcp
129
-
130
- input_char_count = _compute_input_char_count(
131
- agent, prompt, attachments, link_attachments
132
- )
133
-
134
- result = await _original_run_with_mcp(
135
- agent,
136
- prompt,
137
- attachments=attachments,
138
- link_attachments=link_attachments,
139
- output_type=output_type,
140
- **kwargs,
141
- )
142
-
143
- # Try to extract token usage from the result
144
- try:
145
- usage = getattr(result, "usage", None)
146
- # pydantic-ai 2.31.0 exposes usage as a property. A callable value
147
- # belongs to an older method-style host; ignore it rather than
148
- # triggering the deprecated call path.
149
- if callable(usage):
150
- return result
151
- input_tokens = getattr(usage, "input_tokens", 0) or getattr(
152
- usage, "request_tokens", 0
153
- )
154
- if input_tokens > 0 and input_char_count > 0:
155
- from code_puppy_core_plugins.token_ratio_learner.ratios import (
156
- _record_token_ratio,
157
- )
158
-
159
- model = agent.get_model_name()
160
- if model:
161
- _record_token_ratio(model, input_char_count, input_tokens)
162
- except Exception:
163
- pass # Never let ratio recording break the agent run
164
-
165
- return result
166
-
167
-
168
- # Patched subagent ``_estimate_tokens``
169
-
170
-
171
- def _patched_subagent_estimate_tokens(content: str) -> int:
172
- """Drop-in replacement for subagent token estimation."""
173
- from code_puppy_core_plugins.token_ratio_learner.ratios import count_tokens
174
-
175
- return count_tokens(content, model=None)
176
-
177
-
178
- # Startup hook
179
-
180
-
181
- def _on_startup() -> None:
182
- """Apply all monkeypatches on startup."""
183
- global _original_estimate_tokens, _original_estimate_tokens_for_message
184
- global _original_run_with_mcp, _original_subagent_estimate_tokens
185
-
186
- # 1. Patch _history.estimate_tokens (root text-level)
187
- from code_puppy.agents import _history
188
-
189
- _original_estimate_tokens = _history.estimate_tokens
190
- _history.estimate_tokens = _patched_estimate_tokens
191
- logger.info("token_ratio_learner: patched _history.estimate_tokens")
192
-
193
- # 2. Patch _history.estimate_tokens_for_message
194
- _original_estimate_tokens_for_message = _history.estimate_tokens_for_message
195
- _history.estimate_tokens_for_message = _patched_estimate_tokens_for_message
196
- logger.info("token_ratio_learner: patched _history.estimate_tokens_for_message")
197
-
198
- # 3. Patch _runtime.run_with_mcp
199
- from code_puppy.agents import _runtime
200
-
201
- _original_run_with_mcp = _runtime.run_with_mcp
202
- _runtime.run_with_mcp = _patched_run_with_mcp
203
- logger.info("token_ratio_learner: patched _runtime.run_with_mcp")
204
-
205
- # 4. Patch subagent_stream_handler._estimate_tokens
206
- # NOTE: ``subagent_stream_handler`` re-exports a function, not its module;
207
- # import the actual module via ``importlib`` before patching.
208
- import importlib
209
-
210
- ssh_mod = importlib.import_module("code_puppy.agents.subagent_stream_handler")
211
-
212
- _original_subagent_estimate_tokens = ssh_mod._estimate_tokens
213
- ssh_mod._estimate_tokens = _patched_subagent_estimate_tokens
214
- logger.info("token_ratio_learner: patched subagent_stream_handler._estimate_tokens")
215
-
216
-
217
- # Register the startup callback
218
- register_callback("startup", _on_startup)