code-puppy-core-plugins 0.0.2__py3-none-any.whl

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 (313) hide show
  1. code_puppy_core_plugins/__init__.py +5 -0
  2. code_puppy_core_plugins/acp/README.md +266 -0
  3. code_puppy_core_plugins/acp/__init__.py +8 -0
  4. code_puppy_core_plugins/acp/agent.py +494 -0
  5. code_puppy_core_plugins/acp/bridge.py +309 -0
  6. code_puppy_core_plugins/acp/capabilities.py +73 -0
  7. code_puppy_core_plugins/acp/commands.py +116 -0
  8. code_puppy_core_plugins/acp/content.py +115 -0
  9. code_puppy_core_plugins/acp/io_delegation.py +231 -0
  10. code_puppy_core_plugins/acp/mcp_config.py +66 -0
  11. code_puppy_core_plugins/acp/permissions.py +159 -0
  12. code_puppy_core_plugins/acp/persistence.py +197 -0
  13. code_puppy_core_plugins/acp/register_callbacks.py +110 -0
  14. code_puppy_core_plugins/acp/replay.py +114 -0
  15. code_puppy_core_plugins/acp/session.py +329 -0
  16. code_puppy_core_plugins/acp/session_config.py +179 -0
  17. code_puppy_core_plugins/acp/state.py +135 -0
  18. code_puppy_core_plugins/agent_skills/__init__.py +22 -0
  19. code_puppy_core_plugins/agent_skills/config.py +208 -0
  20. code_puppy_core_plugins/agent_skills/discovery.py +337 -0
  21. code_puppy_core_plugins/agent_skills/downloader.py +392 -0
  22. code_puppy_core_plugins/agent_skills/enabled_skills.py +82 -0
  23. code_puppy_core_plugins/agent_skills/installer.py +22 -0
  24. code_puppy_core_plugins/agent_skills/metadata.py +219 -0
  25. code_puppy_core_plugins/agent_skills/prompt_builder.py +49 -0
  26. code_puppy_core_plugins/agent_skills/provider.py +52 -0
  27. code_puppy_core_plugins/agent_skills/register_callbacks.py +309 -0
  28. code_puppy_core_plugins/agent_skills/remote_catalog.py +322 -0
  29. code_puppy_core_plugins/agent_skills/skill_catalog.py +257 -0
  30. code_puppy_core_plugins/agent_skills/skill_commands.py +102 -0
  31. code_puppy_core_plugins/agent_skills/skills_install_menu.py +698 -0
  32. code_puppy_core_plugins/agent_skills/skills_menu.py +794 -0
  33. code_puppy_core_plugins/aws_bedrock/__init__.py +14 -0
  34. code_puppy_core_plugins/aws_bedrock/config.py +101 -0
  35. code_puppy_core_plugins/aws_bedrock/register_callbacks.py +243 -0
  36. code_puppy_core_plugins/aws_bedrock/utils.py +186 -0
  37. code_puppy_core_plugins/azure_foundry/README.md +238 -0
  38. code_puppy_core_plugins/azure_foundry/__init__.py +15 -0
  39. code_puppy_core_plugins/azure_foundry/config.py +126 -0
  40. code_puppy_core_plugins/azure_foundry/discovery.py +189 -0
  41. code_puppy_core_plugins/azure_foundry/register_callbacks.py +506 -0
  42. code_puppy_core_plugins/azure_foundry/token.py +182 -0
  43. code_puppy_core_plugins/azure_foundry/utils.py +375 -0
  44. code_puppy_core_plugins/btw/__init__.py +1 -0
  45. code_puppy_core_plugins/btw/inline_view.py +135 -0
  46. code_puppy_core_plugins/btw/register_callbacks.py +106 -0
  47. code_puppy_core_plugins/btw/side_query.py +91 -0
  48. code_puppy_core_plugins/chatgpt_oauth/IMAGEGEN_SKILL.md +83 -0
  49. code_puppy_core_plugins/chatgpt_oauth/__init__.py +8 -0
  50. code_puppy_core_plugins/chatgpt_oauth/config.py +52 -0
  51. code_puppy_core_plugins/chatgpt_oauth/image_generation.py +253 -0
  52. code_puppy_core_plugins/chatgpt_oauth/image_tool.py +70 -0
  53. code_puppy_core_plugins/chatgpt_oauth/oauth_flow.py +461 -0
  54. code_puppy_core_plugins/chatgpt_oauth/register_callbacks.py +288 -0
  55. code_puppy_core_plugins/chatgpt_oauth/test_plugin.py +663 -0
  56. code_puppy_core_plugins/chatgpt_oauth/usage.py +113 -0
  57. code_puppy_core_plugins/chatgpt_oauth/utils.py +534 -0
  58. code_puppy_core_plugins/claude_code_hooks/__init__.py +1 -0
  59. code_puppy_core_plugins/claude_code_hooks/config.py +137 -0
  60. code_puppy_core_plugins/claude_code_hooks/register_callbacks.py +383 -0
  61. code_puppy_core_plugins/claude_code_oauth/README.md +167 -0
  62. code_puppy_core_plugins/claude_code_oauth/SETUP.md +93 -0
  63. code_puppy_core_plugins/claude_code_oauth/__init__.py +25 -0
  64. code_puppy_core_plugins/claude_code_oauth/config.py +59 -0
  65. code_puppy_core_plugins/claude_code_oauth/fast_mode.py +122 -0
  66. code_puppy_core_plugins/claude_code_oauth/prompt_handler.py +64 -0
  67. code_puppy_core_plugins/claude_code_oauth/register_callbacks.py +719 -0
  68. code_puppy_core_plugins/claude_code_oauth/test_plugin.py +285 -0
  69. code_puppy_core_plugins/claude_code_oauth/token_refresh_heartbeat.py +240 -0
  70. code_puppy_core_plugins/claude_code_oauth/utils.py +663 -0
  71. code_puppy_core_plugins/code_puppy_agent/AGENTS_AND_TOOLS.md +155 -0
  72. code_puppy_core_plugins/code_puppy_agent/MODELS_AND_MCP.md +104 -0
  73. code_puppy_core_plugins/code_puppy_agent/PLUGINS_AND_CALLBACKS.md +147 -0
  74. code_puppy_core_plugins/code_puppy_agent/SESSIONS_AND_HISTORY.md +39 -0
  75. code_puppy_core_plugins/code_puppy_agent/SKILL.md +180 -0
  76. code_puppy_core_plugins/code_puppy_agent/SKILLS_SYSTEM.md +136 -0
  77. code_puppy_core_plugins/code_puppy_agent/SYSTEM_PROMPT_CONFIG_AND_I18N.md +160 -0
  78. code_puppy_core_plugins/code_puppy_agent/__init__.py +5 -0
  79. code_puppy_core_plugins/code_puppy_agent/register_callbacks.py +46 -0
  80. code_puppy_core_plugins/computer_use/NativeCapture.swift +123 -0
  81. code_puppy_core_plugins/computer_use/README.md +109 -0
  82. code_puppy_core_plugins/computer_use/__init__.py +1 -0
  83. code_puppy_core_plugins/computer_use/accessibility.py +163 -0
  84. code_puppy_core_plugins/computer_use/activation.py +75 -0
  85. code_puppy_core_plugins/computer_use/backend.py +584 -0
  86. code_puppy_core_plugins/computer_use/backend_types.py +5 -0
  87. code_puppy_core_plugins/computer_use/capture.py +110 -0
  88. code_puppy_core_plugins/computer_use/commands.py +62 -0
  89. code_puppy_core_plugins/computer_use/geometry.py +81 -0
  90. code_puppy_core_plugins/computer_use/inline_image.py +56 -0
  91. code_puppy_core_plugins/computer_use/keycodes.py +47 -0
  92. code_puppy_core_plugins/computer_use/policy.py +144 -0
  93. code_puppy_core_plugins/computer_use/register_callbacks.py +96 -0
  94. code_puppy_core_plugins/computer_use/safety.py +18 -0
  95. code_puppy_core_plugins/computer_use/settle.py +64 -0
  96. code_puppy_core_plugins/computer_use/state.py +86 -0
  97. code_puppy_core_plugins/computer_use/tools.py +469 -0
  98. code_puppy_core_plugins/context_indicator/__init__.py +14 -0
  99. code_puppy_core_plugins/context_indicator/register_callbacks.py +249 -0
  100. code_puppy_core_plugins/context_indicator/usage.py +40 -0
  101. code_puppy_core_plugins/copilot_auth/__init__.py +11 -0
  102. code_puppy_core_plugins/copilot_auth/config.py +93 -0
  103. code_puppy_core_plugins/copilot_auth/reasoning_client.py +409 -0
  104. code_puppy_core_plugins/copilot_auth/register_callbacks.py +460 -0
  105. code_puppy_core_plugins/copilot_auth/utils.py +587 -0
  106. code_puppy_core_plugins/customizable_commands/__init__.py +0 -0
  107. code_puppy_core_plugins/customizable_commands/register_callbacks.py +464 -0
  108. code_puppy_core_plugins/dbos_durable_exec/__init__.py +1 -0
  109. code_puppy_core_plugins/dbos_durable_exec/cancel.py +15 -0
  110. code_puppy_core_plugins/dbos_durable_exec/commands.py +31 -0
  111. code_puppy_core_plugins/dbos_durable_exec/config.py +31 -0
  112. code_puppy_core_plugins/dbos_durable_exec/lifecycle.py +83 -0
  113. code_puppy_core_plugins/dbos_durable_exec/register_callbacks.py +45 -0
  114. code_puppy_core_plugins/dbos_durable_exec/runtime.py +65 -0
  115. code_puppy_core_plugins/dbos_durable_exec/startup_lock.py +155 -0
  116. code_puppy_core_plugins/dbos_durable_exec/workflow_ids.py +16 -0
  117. code_puppy_core_plugins/dbos_durable_exec/wrapper.py +58 -0
  118. code_puppy_core_plugins/destructive_command_guard/AGENTS.md +79 -0
  119. code_puppy_core_plugins/destructive_command_guard/__init__.py +14 -0
  120. code_puppy_core_plugins/destructive_command_guard/detector.py +374 -0
  121. code_puppy_core_plugins/destructive_command_guard/register_callbacks.py +165 -0
  122. code_puppy_core_plugins/emoji_filter/__init__.py +12 -0
  123. code_puppy_core_plugins/emoji_filter/config.py +26 -0
  124. code_puppy_core_plugins/emoji_filter/register_callbacks.py +238 -0
  125. code_puppy_core_plugins/emoji_filter/stripper.py +45 -0
  126. code_puppy_core_plugins/empty_html_comment_filter/register_callbacks.py +116 -0
  127. code_puppy_core_plugins/example_custom_command/README.md +328 -0
  128. code_puppy_core_plugins/example_custom_command/register_callbacks.py +66 -0
  129. code_puppy_core_plugins/file_permission_handler/__init__.py +4 -0
  130. code_puppy_core_plugins/file_permission_handler/register_callbacks.py +575 -0
  131. code_puppy_core_plugins/flux_bootstrap/__init__.py +5 -0
  132. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +173 -0
  133. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +86 -0
  134. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +167 -0
  135. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +392 -0
  136. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/about.md +51 -0
  137. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +129 -0
  138. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/ask.md +211 -0
  139. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/aug.md +181 -0
  140. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +71 -0
  141. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +16 -0
  142. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/commit.md +103 -0
  143. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/config.md +108 -0
  144. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +195 -0
  145. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/exec.md +221 -0
  146. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/new.md +151 -0
  147. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/qa.md +208 -0
  148. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/rebase.md +180 -0
  149. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/review.md +304 -0
  150. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/split.md +120 -0
  151. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +179 -0
  152. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/status.md +46 -0
  153. code_puppy_core_plugins/flux_bootstrap/bundled/commands/flux/tests.md +155 -0
  154. code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_about.py +154 -0
  155. code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +248 -0
  156. code_puppy_core_plugins/flux_bootstrap/bundled/scripts/flux_status.py +345 -0
  157. code_puppy_core_plugins/flux_bootstrap/installer.py +256 -0
  158. code_puppy_core_plugins/flux_bootstrap/register_callbacks.py +71 -0
  159. code_puppy_core_plugins/force_push_guard/__init__.py +5 -0
  160. code_puppy_core_plugins/force_push_guard/detector.py +96 -0
  161. code_puppy_core_plugins/force_push_guard/register_callbacks.py +161 -0
  162. code_puppy_core_plugins/fork/__init__.py +7 -0
  163. code_puppy_core_plugins/fork/register_callbacks.py +445 -0
  164. code_puppy_core_plugins/frontend_emitter/__init__.py +25 -0
  165. code_puppy_core_plugins/frontend_emitter/emitter.py +249 -0
  166. code_puppy_core_plugins/frontend_emitter/register_callbacks.py +412 -0
  167. code_puppy_core_plugins/frontend_emitter/session_context.py +50 -0
  168. code_puppy_core_plugins/grok_oauth/__init__.py +6 -0
  169. code_puppy_core_plugins/grok_oauth/config.py +49 -0
  170. code_puppy_core_plugins/grok_oauth/oauth_flow.py +213 -0
  171. code_puppy_core_plugins/grok_oauth/register_callbacks.py +132 -0
  172. code_puppy_core_plugins/grok_oauth/utils.py +195 -0
  173. code_puppy_core_plugins/herdr/README.md +168 -0
  174. code_puppy_core_plugins/herdr/__init__.py +9 -0
  175. code_puppy_core_plugins/herdr/client.py +339 -0
  176. code_puppy_core_plugins/herdr/register_callbacks.py +140 -0
  177. code_puppy_core_plugins/herdr/reporter.py +212 -0
  178. code_puppy_core_plugins/herdr/smoke.py +143 -0
  179. code_puppy_core_plugins/herdr/sources.py +133 -0
  180. code_puppy_core_plugins/hook_creator/__init__.py +1 -0
  181. code_puppy_core_plugins/hook_creator/register_callbacks.py +33 -0
  182. code_puppy_core_plugins/hook_manager/__init__.py +1 -0
  183. code_puppy_core_plugins/hook_manager/config.py +290 -0
  184. code_puppy_core_plugins/hook_manager/hooks_menu.py +571 -0
  185. code_puppy_core_plugins/hook_manager/register_callbacks.py +227 -0
  186. code_puppy_core_plugins/meta_oauth/__init__.py +1 -0
  187. code_puppy_core_plugins/meta_oauth/config.py +55 -0
  188. code_puppy_core_plugins/meta_oauth/oauth_flow.py +109 -0
  189. code_puppy_core_plugins/meta_oauth/register_callbacks.py +154 -0
  190. code_puppy_core_plugins/meta_oauth/utils.py +252 -0
  191. code_puppy_core_plugins/namespace_skill_search/README.md +118 -0
  192. code_puppy_core_plugins/namespace_skill_search/__init__.py +15 -0
  193. code_puppy_core_plugins/namespace_skill_search/namespaces.py +125 -0
  194. code_puppy_core_plugins/namespace_skill_search/register_callbacks.py +99 -0
  195. code_puppy_core_plugins/namespace_skill_search/search_tool.py +158 -0
  196. code_puppy_core_plugins/no_tools/__init__.py +0 -0
  197. code_puppy_core_plugins/no_tools/register_callbacks.py +42 -0
  198. code_puppy_core_plugins/oauth_pasteback.py +110 -0
  199. code_puppy_core_plugins/oauth_puppy_html.py +194 -0
  200. code_puppy_core_plugins/obsidian_agent/README.md +52 -0
  201. code_puppy_core_plugins/obsidian_agent/__init__.py +8 -0
  202. code_puppy_core_plugins/obsidian_agent/agent_obsidian.py +147 -0
  203. code_puppy_core_plugins/obsidian_agent/register_callbacks.py +13 -0
  204. code_puppy_core_plugins/ollama/__init__.py +1 -0
  205. code_puppy_core_plugins/ollama/register_callbacks.py +127 -0
  206. code_puppy_core_plugins/ollama_setup/__init__.py +5 -0
  207. code_puppy_core_plugins/ollama_setup/completer.py +38 -0
  208. code_puppy_core_plugins/ollama_setup/register_callbacks.py +419 -0
  209. code_puppy_core_plugins/plugin_list/__init__.py +0 -0
  210. code_puppy_core_plugins/plugin_list/plugin_contributions.py +348 -0
  211. code_puppy_core_plugins/plugin_list/plugin_meta.py +67 -0
  212. code_puppy_core_plugins/plugin_list/plugin_text_utils.py +173 -0
  213. code_puppy_core_plugins/plugin_list/plugins_menu.py +455 -0
  214. code_puppy_core_plugins/plugin_list/plugins_menu_layout.py +194 -0
  215. code_puppy_core_plugins/plugin_list/plugins_menu_render.py +431 -0
  216. code_puppy_core_plugins/plugin_list/project_trust_flow.py +162 -0
  217. code_puppy_core_plugins/plugin_list/register_callbacks.py +281 -0
  218. code_puppy_core_plugins/pop_command/__init__.py +1 -0
  219. code_puppy_core_plugins/pop_command/register_callbacks.py +191 -0
  220. code_puppy_core_plugins/prompt_newline/__init__.py +13 -0
  221. code_puppy_core_plugins/prompt_newline/config.py +21 -0
  222. code_puppy_core_plugins/prompt_newline/register_callbacks.py +163 -0
  223. code_puppy_core_plugins/prune/__init__.py +1 -0
  224. code_puppy_core_plugins/prune/prune_menu.py +308 -0
  225. code_puppy_core_plugins/prune/prune_model.py +517 -0
  226. code_puppy_core_plugins/prune/prune_render.py +354 -0
  227. code_puppy_core_plugins/prune/register_callbacks.py +388 -0
  228. code_puppy_core_plugins/puppy_kennel/README.md +203 -0
  229. code_puppy_core_plugins/puppy_kennel/__init__.py +6 -0
  230. code_puppy_core_plugins/puppy_kennel/commands.py +206 -0
  231. code_puppy_core_plugins/puppy_kennel/config.py +36 -0
  232. code_puppy_core_plugins/puppy_kennel/kennel.py +368 -0
  233. code_puppy_core_plugins/puppy_kennel/packer.py +152 -0
  234. code_puppy_core_plugins/puppy_kennel/recorder.py +83 -0
  235. code_puppy_core_plugins/puppy_kennel/register_callbacks.py +109 -0
  236. code_puppy_core_plugins/puppy_kennel/retriever.py +28 -0
  237. code_puppy_core_plugins/puppy_kennel/schema.py +78 -0
  238. code_puppy_core_plugins/puppy_kennel/state.py +68 -0
  239. code_puppy_core_plugins/puppy_kennel/tools.py +449 -0
  240. code_puppy_core_plugins/puppy_kennel/wings.py +110 -0
  241. code_puppy_core_plugins/puppy_spinner/README.md +93 -0
  242. code_puppy_core_plugins/puppy_spinner/__init__.py +11 -0
  243. code_puppy_core_plugins/puppy_spinner/builtin_frames.py +172 -0
  244. code_puppy_core_plugins/puppy_spinner/commands.py +116 -0
  245. code_puppy_core_plugins/puppy_spinner/picker.py +379 -0
  246. code_puppy_core_plugins/puppy_spinner/register_callbacks.py +193 -0
  247. code_puppy_core_plugins/puppy_spinner/spinners.py +444 -0
  248. code_puppy_core_plugins/quick_resume/__init__.py +0 -0
  249. code_puppy_core_plugins/quick_resume/register_callbacks.py +77 -0
  250. code_puppy_core_plugins/review_pr/__init__.py +1 -0
  251. code_puppy_core_plugins/review_pr/register_callbacks.py +162 -0
  252. code_puppy_core_plugins/shell_safety/__init__.py +6 -0
  253. code_puppy_core_plugins/shell_safety/agent_shell_safety.py +69 -0
  254. code_puppy_core_plugins/shell_safety/command_cache.py +156 -0
  255. code_puppy_core_plugins/shell_safety/register_callbacks.py +203 -0
  256. code_puppy_core_plugins/stack_dump/__init__.py +1 -0
  257. code_puppy_core_plugins/stack_dump/register_callbacks.py +79 -0
  258. code_puppy_core_plugins/statusline/__init__.py +14 -0
  259. code_puppy_core_plugins/statusline/config.py +68 -0
  260. code_puppy_core_plugins/statusline/payload.py +138 -0
  261. code_puppy_core_plugins/statusline/prompt_patch.py +76 -0
  262. code_puppy_core_plugins/statusline/register_callbacks.py +45 -0
  263. code_puppy_core_plugins/statusline/runner.py +122 -0
  264. code_puppy_core_plugins/statusline/statusline_command.py +197 -0
  265. code_puppy_core_plugins/steer_queue/__init__.py +10 -0
  266. code_puppy_core_plugins/steer_queue/queue_menu.py +444 -0
  267. code_puppy_core_plugins/steer_queue/register_callbacks.py +138 -0
  268. code_puppy_core_plugins/subagent_panel/README.md +102 -0
  269. code_puppy_core_plugins/subagent_panel/__init__.py +24 -0
  270. code_puppy_core_plugins/subagent_panel/coalesce_patch.py +242 -0
  271. code_puppy_core_plugins/subagent_panel/panel_render.py +145 -0
  272. code_puppy_core_plugins/subagent_panel/register_callbacks.py +535 -0
  273. code_puppy_core_plugins/subagent_panel/resume_repaint.py +112 -0
  274. code_puppy_core_plugins/subagent_panel/state.py +231 -0
  275. code_puppy_core_plugins/switch_agent_resume/__init__.py +5 -0
  276. code_puppy_core_plugins/switch_agent_resume/register_callbacks.py +314 -0
  277. code_puppy_core_plugins/theme/README.md +86 -0
  278. code_puppy_core_plugins/theme/__init__.py +14 -0
  279. code_puppy_core_plugins/theme/bundled_palettes.py +346 -0
  280. code_puppy_core_plugins/theme/content_styles.py +146 -0
  281. code_puppy_core_plugins/theme/osc_palette.py +178 -0
  282. code_puppy_core_plugins/theme/picker.py +358 -0
  283. code_puppy_core_plugins/theme/prompt_toolkit_theme.py +113 -0
  284. code_puppy_core_plugins/theme/register_callbacks.py +348 -0
  285. code_puppy_core_plugins/theme/rich_themes.py +202 -0
  286. code_puppy_core_plugins/theme/themes.py +720 -0
  287. code_puppy_core_plugins/timestamp_heartbeat/__init__.py +1 -0
  288. code_puppy_core_plugins/timestamp_heartbeat/register_callbacks.py +114 -0
  289. code_puppy_core_plugins/token_ratio_learner/__init__.py +5 -0
  290. code_puppy_core_plugins/token_ratio_learner/ratios.py +208 -0
  291. code_puppy_core_plugins/token_ratio_learner/register_callbacks.py +213 -0
  292. code_puppy_core_plugins/universal_constructor/__init__.py +13 -0
  293. code_puppy_core_plugins/universal_constructor/models.py +138 -0
  294. code_puppy_core_plugins/universal_constructor/provider.py +62 -0
  295. code_puppy_core_plugins/universal_constructor/register_callbacks.py +75 -0
  296. code_puppy_core_plugins/universal_constructor/registry.py +302 -0
  297. code_puppy_core_plugins/universal_constructor/sandbox.py +584 -0
  298. code_puppy_core_plugins/wide_completion_menu/__init__.py +6 -0
  299. code_puppy_core_plugins/wide_completion_menu/register_callbacks.py +165 -0
  300. code_puppy_core_plugins/wiggum/__init__.py +1 -0
  301. code_puppy_core_plugins/wiggum/goal_runs.py +91 -0
  302. code_puppy_core_plugins/wiggum/judge.py +299 -0
  303. code_puppy_core_plugins/wiggum/judge_config.py +249 -0
  304. code_puppy_core_plugins/wiggum/judges_menu.py +814 -0
  305. code_puppy_core_plugins/wiggum/register_callbacks.py +569 -0
  306. code_puppy_core_plugins/wiggum/state.py +89 -0
  307. code_puppy_core_plugins/yolo_cli/__init__.py +1 -0
  308. code_puppy_core_plugins/yolo_cli/register_callbacks.py +41 -0
  309. code_puppy_core_plugins-0.0.2.dist-info/METADATA +64 -0
  310. code_puppy_core_plugins-0.0.2.dist-info/RECORD +313 -0
  311. code_puppy_core_plugins-0.0.2.dist-info/WHEEL +4 -0
  312. code_puppy_core_plugins-0.0.2.dist-info/entry_points.txt +55 -0
  313. code_puppy_core_plugins-0.0.2.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,328 @@
1
+ # Example Custom Command Plugin
2
+
3
+ > **Note**: This example demonstrates **custom commands** via the callback system.
4
+ > For **built-in commands**, see the built-in command files in `code_puppy/command_line/`.
5
+
6
+ ## Overview
7
+
8
+ This plugin demonstrates how to create custom commands using Code Puppy's callback system.
9
+
10
+ **Important**: Custom commands use `register_callback()`, NOT `@register_command`.
11
+
12
+ ## Command Types in Code Puppy
13
+
14
+ ### 1. Built-in Commands (Core Functionality)
15
+ - Use `@register_command` decorator
16
+ - Located in `code_puppy/command_line/core_commands.py`, `session_commands.py`, `config_commands.py`
17
+ - Examples: `/help`, `/cd`, `/set`, `/agent`
18
+ - Check those files for implementation examples
19
+
20
+ ### 2. Custom Commands (Plugins) ← **This Example**
21
+ - Use `register_callback()` function
22
+ - Located in plugin directories like this one
23
+ - Examples: `/woof`, `/echo` (from this plugin)
24
+ - Designed for plugin-specific functionality
25
+
26
+ ## How This Plugin Works
27
+
28
+ ### File Structure
29
+
30
+ ```
31
+ code_puppy/plugins/example_custom_command/
32
+ ├── register_callbacks.py # Plugin implementation
33
+ └── README.md # This file
34
+ ```
35
+
36
+ ### Implementation
37
+
38
+ ```python
39
+ from code_puppy.callbacks import register_callback
40
+ from code_puppy.messaging import emit_info
41
+
42
+ # Optional dependency on the sibling ``customizable_commands`` plugin.
43
+ # Returning a ``MarkdownCommandResult`` tells the dispatcher to forward
44
+ # the wrapped content to the agent as a user prompt.
45
+ try:
46
+ from code_puppy_core_plugins.customizable_commands.register_callbacks import (
47
+ MarkdownCommandResult,
48
+ )
49
+ except ImportError:
50
+ MarkdownCommandResult = None
51
+
52
+ # 1. Define help entries for your commands
53
+ def _custom_help():
54
+ return [
55
+ ("woof", "Ask the agent for a dog fact (or any prompt you tack on)"),
56
+ ("echo", "Echo back your text (display only)"),
57
+ ]
58
+
59
+ # 2. Define command handler
60
+ def _handle_custom_command(command: str, name: str):
61
+ """Handle custom commands."""
62
+ if name == "woof":
63
+ parts = command.split(maxsplit=1)
64
+ prompt = parts[1] if len(parts) == 2 else "Tell me a dog fact"
65
+ emit_info(f"🐶 Woof! sending prompt: {prompt}")
66
+ # Forward to the agent when possible; otherwise degrade gracefully
67
+ # to display-only so the user still sees the echoed prompt.
68
+ if MarkdownCommandResult is not None:
69
+ return MarkdownCommandResult(prompt)
70
+ return prompt
71
+
72
+ if name == "echo":
73
+ # Display-only: dispatcher echoes the returned string and stops.
74
+ parts = command.split(maxsplit=1)
75
+ if len(parts) == 2:
76
+ return parts[1]
77
+ return ""
78
+
79
+ return None # Not our command
80
+
81
+ # 3. Register callbacks
82
+ register_callback("custom_command_help", _custom_help)
83
+ register_callback("custom_command", _handle_custom_command)
84
+ ```
85
+
86
+ ## Commands Provided
87
+
88
+ ### `/woof [text]`
89
+
90
+ **Description**: Playful command that sends a prompt to the model.
91
+
92
+ **Behavior**:
93
+ - Without text: Sends "Tell me a dog fact" to the model
94
+ - With text: Sends your text as the prompt
95
+
96
+ **Examples**:
97
+ ```bash
98
+ /woof
99
+ # → Sends prompt: "Tell me a dog fact"
100
+
101
+ /woof What's the best breed?
102
+ # → Sends prompt: "What's the best breed?"
103
+ ```
104
+
105
+ ### `/echo <text>`
106
+
107
+ **Description**: Display-only command that shows your text.
108
+
109
+ **Behavior**:
110
+ - Shows the text you provide via `emit_info`
111
+ - Does **not** send anything to the model — the dispatcher treats a bare
112
+ `str` return as display-only and short-circuits the REPL
113
+
114
+ **Examples**:
115
+ ```bash
116
+ /echo Hello world
117
+ # → Displays: "example plugin echo -> Hello world"
118
+ # → No model round-trip
119
+ ```
120
+
121
+ ## Creating Your Own Plugin
122
+
123
+ Plugins can live at any of the three discovery tiers:
124
+
125
+ | Tier | Location | Scope |
126
+ |------|----------|-------|
127
+ | **Builtin** | `code_puppy/plugins/<name>/` | Shipped with Code Puppy |
128
+ | **User** | `~/.code_puppy/plugins/<name>/` | Personal, all projects |
129
+ | **Project** | `<CWD>/.code_puppy/plugins/<name>/` | Repo-specific, team-shared |
130
+
131
+ All tiers use the exact same `register_callbacks.py` pattern.
132
+
133
+ ### Step 1: Create Plugin Directory
134
+
135
+ **Builtin plugin** (shipped with Code Puppy):
136
+
137
+ ```bash
138
+ mkdir -p code_puppy/plugins/my_plugin
139
+ touch code_puppy/plugins/my_plugin/__init__.py
140
+ touch code_puppy/plugins/my_plugin/register_callbacks.py
141
+ ```
142
+
143
+ **User plugin** (personal, applies to all projects):
144
+
145
+ ```bash
146
+ mkdir -p ~/.code_puppy/plugins/my_plugin
147
+ touch ~/.code_puppy/plugins/my_plugin/register_callbacks.py
148
+ ```
149
+
150
+ **Project plugin** (shared with your team via git):
151
+
152
+ ```bash
153
+ mkdir -p .code_puppy/plugins/my_plugin
154
+ touch .code_puppy/plugins/my_plugin/register_callbacks.py
155
+ ```
156
+
157
+ > **Note:** Code Puppy never auto-creates `.code_puppy/plugins/` — your team
158
+ > opts in by creating the directory. Project plugins load last (after builtin
159
+ > and user), giving them highest precedence for override-style hooks.
160
+
161
+ ### Step 2: Implement Callbacks
162
+
163
+ ```python
164
+ # code_puppy/plugins/my_plugin/register_callbacks.py
165
+
166
+ from code_puppy.callbacks import register_callback
167
+ from code_puppy.messaging import emit_info, emit_success
168
+
169
+ def _custom_help():
170
+ """Provide help text for /help display."""
171
+ return [
172
+ ("mycommand", "Description of my command"),
173
+ ]
174
+
175
+ def _handle_custom_command(command: str, name: str):
176
+ """Handle your custom commands."""
177
+ if name == "mycommand":
178
+ # Your command logic here
179
+ emit_success("My command executed!")
180
+ return True # Command handled
181
+
182
+ return None # Not our command
183
+
184
+ # Register the callbacks
185
+ register_callback("custom_command_help", _custom_help)
186
+ register_callback("custom_command", _handle_custom_command)
187
+ ```
188
+
189
+ ### Step 3: Test Your Plugin
190
+
191
+ ```bash
192
+ # Restart Code Puppy to load the plugin
193
+ code-puppy
194
+
195
+ # Try your command
196
+ /mycommand
197
+ ```
198
+
199
+ ## Return Value Behaviors
200
+
201
+ Your `_handle_custom_command` function can return:
202
+
203
+ | Return Value | Behavior |
204
+ |-------------|----------|
205
+ | `None` | Command not recognized, try next plugin |
206
+ | `True` | Command handled successfully, no model invocation |
207
+ | `str` | Display-only message — dispatcher emits it and stops (agent NOT invoked) |
208
+ | `MarkdownCommandResult(content)` | Forwards `content` to the agent as a user prompt |
209
+
210
+ ## Best Practices
211
+
212
+ ### ✅ DO:
213
+
214
+ - **Use for plugin-specific features**: OAuth flows, integrations, utilities
215
+ - **Return `True` for display-only commands**: Avoid unnecessary model calls
216
+ - **Return strings to invoke the model**: Let users interact naturally
217
+ - **Provide clear help text**: Users see this in `/help`
218
+ - **Handle errors gracefully**: Use try/except and emit_error
219
+ - **Keep commands simple**: Complex logic → separate module
220
+
221
+ ### ❌ DON'T:
222
+
223
+ - **Don't use `@register_command`**: That's for built-in commands only
224
+ - **Don't modify global state**: Use Code Puppy's config system
225
+ - **Don't make blocking calls**: Keep commands fast and responsive
226
+ - **Don't invoke the model directly**: return a `MarkdownCommandResult` and let the dispatcher forward it
227
+ - **Don't duplicate built-in commands**: Check existing commands first
228
+
229
+ ## Command Execution Order
230
+
231
+ 1. **Built-in commands** checked first (via registry)
232
+ 2. **Legacy fallback** checked (for backward compatibility)
233
+ 3. **Custom commands** checked (via callbacks) ← Your plugin runs here
234
+ 4. If no match, show "Unknown command" warning
235
+
236
+ ## Available Messaging Functions
237
+
238
+ ```python
239
+ from code_puppy.messaging import (
240
+ emit_info, # Blue info message
241
+ emit_success, # Green success message
242
+ emit_warning, # Yellow warning message
243
+ emit_error, # Red error message
244
+ )
245
+
246
+ # Examples
247
+ emit_info("Processing...")
248
+ emit_success("Done!")
249
+ emit_warning("This might take a while")
250
+ emit_error("Something went wrong")
251
+ ```
252
+
253
+ ## Testing Your Plugin
254
+
255
+ ### Manual Testing
256
+
257
+ ```bash
258
+ # Start Code Puppy
259
+ code-puppy
260
+
261
+ # Test your commands
262
+ /mycommand
263
+ /help # Verify your command appears
264
+ ```
265
+
266
+ ### Unit Testing
267
+
268
+ ```python
269
+ # tests/test_my_plugin.py
270
+
271
+ from code_puppy.plugins.my_plugin.register_callbacks import _handle_custom_command
272
+
273
+ def test_my_command():
274
+ result = _handle_custom_command("/mycommand", "mycommand")
275
+ assert result is True
276
+
277
+ def test_unknown_command():
278
+ result = _handle_custom_command("/unknown", "unknown")
279
+ assert result is None
280
+ ```
281
+
282
+ ## Plugin Discovery Tiers
283
+
284
+ | Feature | Builtin | User | Project |
285
+ |---------|---------|------|---------|
286
+ | **Location** | `code_puppy/plugins/` | `~/.code_puppy/plugins/` | `<CWD>/.code_puppy/plugins/` |
287
+ | **Load order** | First | Second | Last (highest precedence) |
288
+ | **Auto-created** | N/A (in package) | No | No — team must create intentionally |
289
+ | **Name collisions** | N/A | Warning logged | Warning logged, still loads (shadow) |
290
+ | **Module namespace** | `code_puppy.plugins.<name>` | `<name>.register_callbacks` | `project_plugins.<name>.register_callbacks` |
291
+ | **Shared via git** | Yes (in repo) | No (local only) | Yes (in `.code_puppy/`) |
292
+
293
+ ## Difference from Built-in Commands
294
+
295
+ | Feature | Built-in Commands | Custom Commands (Plugins) |
296
+ |---------|------------------|---------------------------|
297
+ | **Decorator/Function** | `@register_command` | `register_callback()` |
298
+ | **Location** | `core_commands.py`, etc. | Plugin directory |
299
+ | **Purpose** | Core functionality | Plugin features |
300
+ | **Auto-discovery** | Via imports | Via plugin loader |
301
+ | **Priority** | Checked first | Checked last |
302
+ | **Help display** | Automatic | Manual via callback |
303
+
304
+ ## Example Plugins in This Repo
305
+
306
+ - **`example_custom_command/`** (this plugin) - Basic command examples
307
+ - **`customizable_commands/`** - Markdown file commands
308
+ - **`claude_code_oauth/`** - OAuth integration example
309
+ - **`chatgpt_oauth/`** - Another OAuth example
310
+ - **`file_permission_handler/`** - File system integration
311
+
312
+ ## Further Reading
313
+
314
+ - `code_puppy/callbacks.py` - Callback system implementation
315
+ - `code_puppy/command_line/command_handler.py` - Command dispatcher
316
+ - `code_puppy/command_line/core_commands.py` - Example built-in commands
317
+ - `code_puppy/command_line/command_registry.py` - Registry system
318
+
319
+ ## Questions?
320
+
321
+ If you're unsure whether to create a custom command or a built-in command:
322
+
323
+ - **Is it core Code Puppy functionality?** → Use `@register_command` (built-in)
324
+ - Add to appropriate category file: `core_commands.py`, `session_commands.py`, or `config_commands.py`
325
+ - **Is it plugin-specific?** → Use `register_callback()` (custom)
326
+ - Create a plugin directory and use the callback system (like this example)
327
+ - **Is it a prompt template?** → Use markdown file in `.claude/commands/`
328
+ - The `customizable_commands` plugin will auto-load `.md` files
@@ -0,0 +1,66 @@
1
+ from code_puppy.callbacks import register_callback
2
+ from code_puppy.messaging import emit_info
3
+
4
+ # Optional sibling ``customizable_commands`` dep: a ``MarkdownCommandResult`` return
5
+ # forwards the content to the agent as a prompt; absent plugin falls back to
6
+ # display-only behavior rather than failing the whole plugin load.
7
+ try:
8
+ from code_puppy_core_plugins.customizable_commands.register_callbacks import (
9
+ MarkdownCommandResult,
10
+ )
11
+ except ImportError: # pragma: no cover - defensive fallback
12
+ MarkdownCommandResult = None
13
+
14
+
15
+ def _custom_help():
16
+ return [
17
+ ("woof", "Ask the agent for a dog fact (or any prompt you tack on)"),
18
+ ("echo", "Echo back your text (display only)"),
19
+ ]
20
+
21
+
22
+ def _handle_custom_command(command: str, name: str):
23
+ """Handle a demo custom command.
24
+
25
+ Custom commands registered via the ``custom_command`` callback may return:
26
+
27
+ - ``None`` -- not our command, let other plugins try.
28
+ - ``True`` -- fully handled, no further action.
29
+ - ``str`` -- display-only message; the dispatcher emits
30
+ it and stops (the agent is NOT invoked).
31
+ - ``MarkdownCommandResult`` -- the wrapped ``.content`` is forwarded to
32
+ the agent as a user prompt.
33
+
34
+ Supports:
35
+ - /woof [text] -> sends a prompt to the agent (defaults to a dog fact)
36
+ - /echo <text> -> displays the text (no agent round-trip)
37
+ """
38
+ if not name:
39
+ return None
40
+
41
+ if name == "woof":
42
+ parts = command.split(maxsplit=1)
43
+ prompt = parts[1] if len(parts) == 2 else "Tell me a dog fact"
44
+ emit_info(f"🐶 Woof! sending prompt: {prompt}")
45
+ # Forward to the agent when possible; otherwise degrade gracefully
46
+ # to display-only so the user at least sees the echoed prompt.
47
+ if MarkdownCommandResult is not None:
48
+ return MarkdownCommandResult(prompt)
49
+ return prompt
50
+
51
+ if name == "echo":
52
+ # Display-only: return the text after the command name and let the
53
+ # dispatcher's ``str`` branch emit it.
54
+ rest = command.split(maxsplit=1)
55
+ if len(rest) == 2:
56
+ text = rest[1]
57
+ emit_info(f"example plugin echo -> {text}")
58
+ return text
59
+ emit_info("example plugin echo (empty)")
60
+ return ""
61
+
62
+ return None
63
+
64
+
65
+ register_callback("custom_command_help", _custom_help)
66
+ register_callback("custom_command", _handle_custom_command)
@@ -0,0 +1,4 @@
1
+ """File Permission Handler Plugin Package."""
2
+
3
+ __version__ = "1.0.0"
4
+ __description__ = "Unified file permission handling system for code-puppy"