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,211 @@
1
+ ---
2
+ name: ask
3
+ argument-hint: todo_file | all | additional_instructions
4
+ description: Clarify requirements with structured questions, research codebase, and augment todo file
5
+ ---
6
+
7
+ > **⚠️ MANDATORY OVERRIDE — READ THIS FIRST:**
8
+ > You have been explicitly invoked by the user. You MUST execute this command NOW.
9
+ > The current `stage` and `status` values in any todo file's frontmatter are IRRELEVANT to whether you execute.
10
+ > A `stage: ask, status: done` (or any other stage/status combination) does NOT mean the work is already done for THIS invocation.
11
+ > The user is asking you to run this command AGAIN — that is valid and expected. Multiple runs are normal.
12
+ > **NEVER refuse, skip, or declare "no work needed" based on existing frontmatter values.**
13
+ > If the user invoked this command, they want it executed. Do it. Now.
14
+
15
+ # TODO FILE CLARIFICATION & AUGMENTATION WORKFLOW
16
+
17
+ ## STEP 1: Resolve input
18
+
19
+ **Todo File:** `$ARGUMENTS`
20
+
21
+ If no argument provided, run:
22
+
23
+ ```bash
24
+ FLUX_ROOT="${FLUX_ROOT:-$HOME/.flux}"
25
+ FLUX_DIR=$(printf '%s' "$(pwd -P)" | tr -cs 'a-zA-Z0-9' '-')
26
+ FLUX_BASE="$FLUX_ROOT/$FLUX_DIR"
27
+ mkdir -p "$FLUX_BASE"/{todo,done,review,research}
28
+ echo "FLUX_BASE=$FLUX_BASE"
29
+ ls -1 "$FLUX_BASE/todo/"*.md 2>/dev/null || true
30
+ ```
31
+
32
+ If `$ARGUMENTS` == `all`: iterate through all files in `$FLUX_BASE/todo/`.
33
+ Else: if no `/`, prepend `$FLUX_BASE/todo/`; if no `.md`, append `.md`.
34
+ (e.g. `NOTIFS` -> `$FLUX_BASE/todo/NOTIFS.md`)
35
+
36
+ Tell the user: `Please specify a todo file or 'all'` and list the output.
37
+
38
+ ---
39
+
40
+ ## STEP 2: Mark as in-progress
41
+
42
+ Before any work, update the frontmatter of the target file(s). If a frontmatter block exists, replace `stage`, `status`, `updated`. If none exists, prepend before the first `#` heading.
43
+
44
+ Single file or `all` (update all files before processing any):
45
+
46
+ ```yaml
47
+ ---
48
+ stage: ask
49
+ status: in-progress
50
+ updated: <YYYY-MM-DD HH:MM>
51
+ ---
52
+ ```
53
+
54
+ ---
55
+
56
+ ## STEP 3: Read & analyze
57
+
58
+ Read the complete todo file with sequential thinking. Identify the core USER OBJECTIVE, extract explicit requirements, and categorize gaps/ambiguities:
59
+
60
+ - **Business Logic** — unclear rules, edge cases, validation
61
+ - **User Experience** — interactions, feedback, error handling
62
+ - **Data & State** — data needed, flow, persistence
63
+ - **Integration Points** — external dependencies, APIs, services
64
+ - **Constraints** — performance, security, compatibility
65
+
66
+ ---
67
+
68
+ ## STEP 4: Ask clarifying questions (one at a time)
69
+
70
+ Use `ask_user_question` to ask clarifying questions **one at a time**.
71
+
72
+ - Start with the MOST CRITICAL ambiguity
73
+ - Each question: 2–4 concrete options with brief implication descriptions
74
+ - Wait for answer before asking the next
75
+ - Continue until all critical ambiguities are resolved (typically 3–8 questions)
76
+ - Priority order: Core Behavior → Edge Cases → User Expectations → Scope Boundaries → Success Criteria
77
+ - If user selects "Other", record their response verbatim
78
+
79
+ Example format:
80
+
81
+ ```
82
+ Question: "How should the system handle invalid input?"
83
+ Header: "Error handling"
84
+ Options:
85
+ - Label: "Silent rejection"
86
+ Description: "Quietly ignore invalid input, no user feedback"
87
+ - Label: "Inline validation"
88
+ Description: "Show error message next to the field immediately"
89
+ - Label: "Toast notification"
90
+ Description: "Display temporary notification with error details"
91
+ - Label: "Modal dialog"
92
+ Description: "Block user with detailed error explanation and retry option"
93
+ ```
94
+
95
+ ---
96
+
97
+ ## STEP 5: Codebase research
98
+
99
+ ```bash
100
+ lsd --tree ./src/ 2>/dev/null || find ./src -type f | sort
101
+ lsd --tree ./packages/ 2>/dev/null || find ./packages -type f | sort
102
+ ```
103
+
104
+ - Search for files related to the feature
105
+ - Find EXISTING implementations to reuse or adapt
106
+ - Identify established patterns and integration points
107
+ - **CRITICAL:** Much of the code is often ALREADY WRITTEN — USE IT. DO NOT call for duplication.
108
+
109
+ ---
110
+
111
+ ## STEP 6: Augment the todo file
112
+
113
+ Replace the original todo file with the augmented version containing all gathered information.
114
+
115
+ **Add these sections:**
116
+
117
+ ```markdown
118
+ ## Business Requirements (Clarified)
119
+
120
+ ### Core Behavior
121
+
122
+ - [Requirement from Q1 answer]
123
+
124
+ ### Edge Cases & Error Handling
125
+
126
+ - [Requirement from relevant answers]
127
+
128
+ ### User Experience
129
+
130
+ - [Requirement from relevant answers]
131
+
132
+ ### Constraints & Boundaries
133
+
134
+ - [What is OUT of scope]
135
+ - [Performance/security requirements]
136
+
137
+ ## Implementation Research
138
+
139
+ ### Existing Code to Leverage
140
+
141
+ - `./src/path/to/file.ts` - [what can be reused]
142
+ - `./src/other/module.ts` - [pattern to follow]
143
+
144
+ ### Files That Need Changes
145
+
146
+ | File | Change Required |
147
+ | ----------- | ---------------- |
148
+ | `./src/...` | Add/modify X |
149
+ | `./src/...` | Integrate with Y |
150
+
151
+ ### Code Patterns to Follow
152
+
153
+ [Links to existing patterns with relative paths]
154
+
155
+ ## Implementation Plan
156
+
157
+ ### Step 1: [Action]
158
+
159
+ - Specific file: `./src/...`
160
+ - Exact change: [describe precisely]
161
+
162
+ ### Step 2: [Action]
163
+
164
+ ...
165
+
166
+ ### Definition of Done
167
+
168
+ - [ ] [Concrete, verifiable criterion]
169
+ - [ ] [Concrete, verifiable criterion]
170
+ ```
171
+
172
+ **Exclude:** unit/functional/integration tests, benchmarks, extensive documentation, multiple options.
173
+ **Include:** precise `./src` change instructions, citation links, inline code patterns, single prescriptive implementation path, definition of done.
174
+
175
+ ---
176
+
177
+ ## STEP 7: Mark as done
178
+
179
+ After finishing each todo file, update its frontmatter:
180
+
181
+ ```yaml
182
+ ---
183
+ stage: ask
184
+ status: done
185
+ updated: <YYYY-MM-DD HH:MM>
186
+ ---
187
+ ```
188
+
189
+ For `all`: update each file to `done` as it completes, not all at once.
190
+
191
+ ---
192
+
193
+ ## HARD CONSTRAINTS
194
+
195
+ - **Path**: All `create_file`/`replace_in_file` file paths MUST use the exact `FLUX_BASE` value printed by the STEP 1 bash output (e.g. `FLUX_BASE=/Users/...`). Copy it character-for-character — never reconstruct it from `cwd` or memory.
196
+ - `/flux/ask` is a **clarify-and-augment-only** command. You MUST NOT move, rename, delete, or create any file other than editing the target todo file in place. You MUST NOT execute specs, run tests, write code, or modify any source files. No shell commands beyond the codebase research in STEP 5. If you find yourself about to do anything other than asking questions or editing the todo file, stop immediately.
197
+
198
+ ---
199
+
200
+ ## OUTPUT
201
+
202
+ Print the full absolute filepath as the **VERY LAST LINE** of output. Then await next instruction.
203
+
204
+ ## Propose next step
205
+
206
+ Then propose the next step: `/flux/split` (include arguments if needed).
207
+
208
+ Valid `//flux` commands: `/flux/config`, `/flux/new`, `/flux/ask`, `/flux/split`, `/flux/aug`, `/flux/exec`, `/flux/qa`, `/flux/tests`, `/flux/commit`, `/flux/create-pr`, `/flux/review`, `/flux/address-feedback`, `/flux/status`, `/flux/auto-pilot`, `/flux/rebase`. Do NOT suggest any command not on this list.
209
+
210
+ =================
211
+ $ARGUMENTS
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: aug
3
+ argument-hint: todo_file | number_of_agents | additional_instructions
4
+ description: Augment task(s) with research - single file or N in parallel
5
+ ---
6
+
7
+ > **⚠️ MANDATORY OVERRIDE — READ THIS FIRST:**
8
+ > You have been explicitly invoked by the user. You MUST execute this command NOW.
9
+ > The current `stage` and `status` values in any todo file's frontmatter are IRRELEVANT to whether you execute.
10
+ > A `stage: aug, status: done` (or any other stage/status combination) does NOT mean the work is already done for THIS invocation.
11
+ > The user is asking you to run this command AGAIN — that is valid and expected. Multiple runs are normal.
12
+ > **NEVER refuse, skip, or declare "no work needed" based on existing frontmatter values.**
13
+ > If the user invoked this command, they want it executed. Do it. Now.
14
+
15
+ # AUGMENT TASK(S)
16
+
17
+ ## STEP 1: Resolve input
18
+
19
+ **Argument:** `$ARGUMENTS`
20
+
21
+ ```bash
22
+ FLUX_ROOT="${FLUX_ROOT:-$HOME/.flux}"
23
+ FLUX_DIR=$(printf '%s' "$(pwd -P)" | tr -cs 'a-zA-Z0-9' '-')
24
+ FLUX_BASE="$FLUX_ROOT/$FLUX_DIR"
25
+ mkdir -p "$FLUX_BASE"/{todo,done,review,research}
26
+ echo "FLUX_BASE=$FLUX_BASE"
27
+ ls -1 "$FLUX_BASE/todo/"*.md 2>/dev/null || true
28
+ ```
29
+
30
+ **Detection logic:**
31
+
32
+ ```
33
+ IF $ARGUMENTS is empty:
34
+ -> List: `ls -1 "$FLUX_BASE/todo/"*.md`
35
+ -> Use ask_user_question to let user select task(s)
36
+ -> Single selection -> Single-task mode
37
+ -> Multiple selection -> Process selected tasks sequentially
38
+
39
+ IF $ARGUMENTS (case-insensitive) == 'all':
40
+ -> Sequential mode: process ALL tasks in $FLUX_BASE/todo/*.md one at a time
41
+ -> Run each in single-task mode yourself (no subagents), one after another
42
+ -> Do not proceed to next task until current one is complete
43
+
44
+ IF $ARGUMENTS is a pure integer (ONLY digits, nothing else — no letters, underscores, hyphens, dots):
45
+ Verify: `echo "$ARGUMENTS" | grep -qE '^[0-9]+$'` must be true. If the argument contains ANY non-digit character (e.g. "CMPAN_5", "task-3", "3files") it is NOT a number — treat it as a filename instead.
46
+ IF $ARGUMENTS == 1:
47
+ -> Sequential mode: process ALL tasks in $FLUX_BASE/todo/*.md one at a time
48
+ -> Run each in single-task mode yourself (no subagents), one after another
49
+ -> Do not proceed to next task until current one is complete
50
+ ELSE:
51
+ -> Multi-task mode with $ARGUMENTS parallel sub-agents
52
+
53
+ OTHERWISE (argument is a filename — including any argument that contains letters, underscores, hyphens, or dots):
54
+ -> Single-task mode for that file
55
+ ```
56
+
57
+ **Path and suffix inference:** if no `/`, prepend `$FLUX_BASE/todo/`; if no `.md`, append `.md`.
58
+ (e.g. `NOTIFS` -> `$FLUX_BASE/todo/NOTIFS.md`)
59
+
60
+ ---
61
+
62
+ ## SINGLE-TASK MODE
63
+
64
+ ## STEP 2: Mark as in-progress
65
+
66
+ Update the task file's frontmatter before starting. If frontmatter exists, replace `stage`, `status`, `updated`. If none, prepend before the first `#` heading.
67
+
68
+ ```yaml
69
+ ---
70
+ stage: aug
71
+ status: in-progress
72
+ updated: <YYYY-MM-DD HH:MM>
73
+ ---
74
+ ```
75
+
76
+ ## STEP 3: Research & augment
77
+
78
+ ### 3.1 Determine stack
79
+
80
+ ```bash
81
+ FLUX_ROOT="${FLUX_ROOT:-$HOME/.flux}"
82
+ FLUX_DIR=$(printf '%s' "$(pwd -P)" | tr -cs 'a-zA-Z0-9' '-')
83
+ FLUX_BASE="$FLUX_ROOT/$FLUX_DIR"
84
+ echo "FLUX_BASE=$FLUX_BASE"
85
+ ```
86
+
87
+ Act as a `$STACK` expert SOFTWARE ARTISAN. If a file called `stack.env` exists at `$FLUX_BASE/stack.env`, read it and set `$STACK` from its contents. Otherwise, run the following detection script to determine `$STACK` and save it (this only ever runs the first time for this directory):
88
+
89
+ ```bash
90
+ STACK="software"
91
+ if [ -f "package.json" ]; then
92
+ STACK=$(bun -e "
93
+ const d=JSON.parse(require('fs').readFileSync('./package.json','utf8'));
94
+ const deps=Object.assign({}, d.dependencies, d.devDependencies, d.peerDependencies);
95
+ const frameworks=['ink','react','vue','angular','next','express'];
96
+ const fw=frameworks.find(f=>deps[f]);
97
+ const ts=deps['typescript']?'TypeScript':'JavaScript';
98
+ console.log(fw?fw+' + '+ts:ts);
99
+ " 2>/dev/null || echo "JavaScript/TypeScript")
100
+ elif [ -f "Cargo.toml" ]; then STACK="Rust"
101
+ elif [ -f "go.mod" ]; then STACK="Go"
102
+ elif [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then STACK="Python"
103
+ elif [ -f "pom.xml" ] || [ -f "build.gradle" ]; then STACK="Java/Kotlin"
104
+ fi
105
+ mkdir -p "$FLUX_BASE"
106
+ echo "$STACK" > "$FLUX_BASE/stack.env"
107
+ echo "Detected stack: $STACK (saved)"
108
+ ```
109
+
110
+ ### 3.2 Read the task file
111
+
112
+ Read the full task file with sequential thinking. Think "out loud" about the core user OBJECTIVE.
113
+
114
+ ### 3.3 Explore the codebase
115
+
116
+ ```bash
117
+ lsd --tree ./src 2>/dev/null || find ./src -type f | sort
118
+ ```
119
+
120
+ - Examine module hierarchy; search for files related to the feature
121
+ - Much of the code needed is ALREADY WRITTEN — USE IT. DO NOT call for duplication.
122
+
123
+ Think deeply with step-by-step reasoning:
124
+
125
+ - What is the core objective?
126
+ - What needs to change in `./src` to accomplish this task?
127
+ - What questions remain? What needs research?
128
+
129
+ ### 3.4 Augment the task file in place
130
+
131
+ - Clone any needed third-party libraries into `./tmp`
132
+ - Augment the task file with rich research detail
133
+ - Link to citation sources in `./tmp` and `./src` with relative markdown hyperlinks
134
+ - Plan required source code with ULTRATHINK; demonstrate core patterns inline in the task file
135
+ - Remove any language calling for tests, benchmarks, or documentation
136
+ - Provide precise instructions on what to change in `./src` and how
137
+ - Provide a clear definition of done (not requiring extensive testing)
138
+ - Be prescriptive — always select the most feature-rich, code-correct option as the single required implementation path. Do not take the path of least resistance.
139
+
140
+ REPLACE THE ORIGINAL FILE in place. Do not write augmentations to a new file.
141
+
142
+ Print the full absolute filepath as the **VERY LAST LINE** of output. Then return to planning.
143
+
144
+ ## STEP 4: Mark as done
145
+
146
+ ```yaml
147
+ ---
148
+ stage: aug
149
+ status: done
150
+ updated: <YYYY-MM-DD HH:MM>
151
+ ---
152
+ ```
153
+
154
+ ---
155
+
156
+ ## MULTI-TASK MODE
157
+
158
+ Use the `invoke_agent` tool to execute tasks IN PARALLEL. _NEVER_ run agents in the background — always foreground.
159
+
160
+ - Spawn `$ARGUMENTS` subagents at a time (or fewer if fewer tasks exist)
161
+ - As each completes, spawn a new one until all `$FLUX_BASE/todo/*.md` tasks are done
162
+
163
+ ### Subagent prompt template
164
+
165
+ Use the single-task mode steps above as the subagent prompt, substituting `{{absolute_file_path}}` for `$ARGUMENTS`.
166
+
167
+ ---
168
+
169
+ ## HARD CONSTRAINTS
170
+
171
+ - **Path**: All `create_file`/`replace_in_file` file paths MUST use the exact `FLUX_BASE` value printed by the STEP 1 bash output (e.g. `FLUX_BASE=/Users/...`). Copy it character-for-character — never reconstruct it from `cwd` or memory.
172
+ - `/flux/aug` is a **research-and-augment-only** command. You MUST NOT modify any source files, run any tests, or create new files outside of `./tmp`. The only file operation allowed on the project is editing the target task file in place. If you find yourself about to touch any source file, stop immediately.
173
+
174
+ ## Propose next step
175
+
176
+ Then propose the next step: `/flux/exec` (include arguments if needed).
177
+
178
+ Valid `//flux` commands: `/flux/config`, `/flux/new`, `/flux/ask`, `/flux/split`, `/flux/aug`, `/flux/exec`, `/flux/qa`, `/flux/tests`, `/flux/commit`, `/flux/create-pr`, `/flux/review`, `/flux/address-feedback`, `/flux/status`, `/flux/auto-pilot`, `/flux/rebase`. Do NOT suggest any command not on this list.
179
+
180
+ =================
181
+ $ARGUMENTS
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: auto-pilot
3
+ argument-hint: task_description | spec.md | spec.txt | TICKET-123 | additional_instructions
4
+ description: 'Orchestrates the complete //flux pipeline end-to-end. Accepts: a prompt, a .md/.txt spec file, or a Jira ticket (e.g. PROJ-123).'
5
+ ---
6
+
7
+ # auto-pilot
8
+
9
+ Fully autonomous development pipeline orchestrator. Executes the full **//flux pipeline** start to finish — pausing only during `/flux/ask` for clarifying questions.
10
+
11
+ ## STEP 1: Resolve input
12
+
13
+ Resolve `$ARGUMENTS` before starting:
14
+
15
+ - **Jira key** (`PROJ-123` pattern): fetch via `get_issue_by_key_or_link`, extract summary/description/acceptance criteria. Display: `📋 Loaded task from Jira: <KEY> — <summary>`
16
+ - **File path** (`.md`/`.txt`): read with `read_file` tool, use full content. Display: `📄 Loaded task from file: <path>`
17
+ - **Natural language**: use directly. Display: `💬 Task: <description>`
18
+
19
+ ## STEP 2: Execute pipeline
20
+
21
+ Execute each step in sequence. For each step: announce `▶ Step: /flux/<command>`, execute all its instructions with correct arguments, announce `✓ Step: /flux/<command> complete`, carry output artifacts forward.
22
+
23
+ ### 2.1 — `/flux/new`
24
+
25
+ Pass resolved task description. Output: task file name (e.g. `NOTIFS`) — carry forward.
26
+
27
+ ### 2.2 — `/flux/ask`
28
+
29
+ Pass task file name from 2.1. **Only step where you pause** — ask all clarifying questions, wait for user responses, then continue automatically.
30
+
31
+ ### 2.3 — `/flux/split`
32
+
33
+ Pass task file name from 2.1. Output: subtask count — carry forward.
34
+
35
+ ### 2.4 — `/flux/aug`
36
+
37
+ Pass `2` (augment all subtasks with 2 parallel agents). Wait for completion.
38
+
39
+ ### 2.5 — `/flux/exec`
40
+
41
+ Pass `2` (execute all subtasks with 2 parallel agents). Wait for completion.
42
+
43
+ ### 2.6 — `/flux/qa`
44
+
45
+ Pass `2`. If QA produces refined tasks, re-run `/flux/exec 2` and `/flux/qa 2` until all tasks clear (max 3 cycles).
46
+
47
+ ### 2.7 — `/flux/tests`
48
+
49
+ No arguments. Run the test suite, fix regressions introduced by this branch. If unresolved failures remain after 3 fix cycles, report and continue to commit (do not block the pipeline).
50
+
51
+ ### 2.8 — `/flux/commit`
52
+
53
+ No additional arguments. User will be asked for commit confirmation — expected and allowed.
54
+
55
+ ## STEP 3: Error recovery
56
+
57
+ On step failure: identify root cause, apply fix, re-run the failed step. After 3 failed attempts on the same step, stop and report: which step failed, what was attempted, what the user should do next.
58
+
59
+ ## HARD CONSTRAINT
60
+
61
+ `/flux/auto-pilot` orchestrates other `//flux` commands — it does not implement logic of its own beyond sequencing. Each step's own HARD CONSTRAINTs apply in full. Do not skip steps, do not merge steps, do not take shortcuts.
62
+
63
+ ## Output style
64
+
65
+ - Concise and scannable
66
+ - Use `▶`/`✓` step headers
67
+ - Actionable errors — no raw stack traces
68
+ - Do not produce summary files unless a step requires it
69
+
70
+ =================
71
+ $ARGUMENTS
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: cheatsheet
3
+ description: Show the //flux pipeline cheatsheet (all stages, colorized)
4
+ exec: {python} {script:flux_cheatsheet.py} --docs {command:flux/_docs}
5
+ ---
6
+
7
+ # /flux/cheatsheet
8
+
9
+ Renders the //flux pipeline cheatsheet -- a colorized view of every pipeline
10
+ stage (A/B/C/D) sourced from the canonical `pipeline.md` doc.
11
+
12
+ > **Note:** code-puppy executes this command via the `exec:` frontmatter hook,
13
+ > which runs the bundled `flux_cheatsheet.py` (resolved under code-puppy's
14
+ > config dir) and streams its ANSI output back through the message bus. The
15
+ > body below is reference docs only -- it is not sent to the AI when the script
16
+ > is wired up.
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: commit
3
+ description: Create a detailed commit message from branch changes
4
+ argument-hint: amend
5
+ ---
6
+
7
+ # CREATE A DETAILED COMMIT MESSAGE
8
+
9
+ ## STEP 1: Detect mode
10
+
11
+ If argument (case-insensitive) equals `amend`, enter **amend mode**:
12
+
13
+ - Run `git log -1 --format=%B` and display: `"Previous commit message: <message>"`
14
+ - Use it as context in STEP 4; newly generated message is authoritative
15
+ - Use `git commit --amend -m "..."` in STEP 5 instead of `git commit -m "..."`
16
+
17
+ ## STEP 2: Detect commit prefix
18
+
19
+ ```bash
20
+ BRANCH=$(git branch --show-current)
21
+ TICKET=$(echo "$BRANCH" | grep -oE '[A-Z]+-[0-9]+' | head -1 || echo "")
22
+ echo "BRANCH: $BRANCH"
23
+ echo "TICKET: $TICKET"
24
+ ```
25
+
26
+ - `$TICKET` non-empty → prefix: `$TICKET:` (e.g. `PROJ-123: description`)
27
+ - `$TICKET` empty → `ask_user_question`:
28
+ - Question: "No Jira ticket found in branch name. What type of commit is this?"
29
+ - Header: "Commit type"
30
+ - Options: `feat`, `fix`, `chore`, `refactor`, `docs`, `test`
31
+ - Prefix: `<type>: description`
32
+
33
+ ## STEP 3: Identify changed files
34
+
35
+ List all files changed vs main branch (both modified and new).
36
+
37
+ ## STEP 4: Generate commit message
38
+
39
+ Generate an informative commit message for the changes. In amend mode, use the previous message as context to incorporate any new staged changes.
40
+
41
+ ## STEP 5: Confirm and apply
42
+
43
+ ```bash
44
+ git status
45
+ git diff --stat HEAD
46
+ ```
47
+
48
+ If no changes, tell the user and stop.
49
+
50
+ **Amend mode:** if no staged changes, print `"Nothing is staged. Stage your changes with \`git add\` before amending."` and stop.
51
+
52
+ **Amend mode only** — show before confirmation:
53
+
54
+ > ⚠️ `--amend` rewrites history. If this branch has already been pushed, a force-push will be required.
55
+
56
+ Present the message from STEP 4, then `ask_user_question`:
57
+
58
+ - Normal: "Ready to commit with the message above?" → `["Yes, commit now", "No, let me review first"]`
59
+ - Amend: "Ready to amend the previous commit with the message above?" → `["Yes, amend now", "No, let me review first"]`
60
+
61
+ If "No, let me review first" → stop.
62
+
63
+ **Normal mode:**
64
+
65
+ ```bash
66
+ git add .
67
+ git commit -m "$(cat <<'EOF'
68
+ $COMMIT_PREFIX Your generated message here
69
+ EOF
70
+ )"
71
+ ```
72
+
73
+ **Amend mode:**
74
+
75
+ ```bash
76
+ git add .
77
+ git commit --amend -m "$(cat <<'EOF'
78
+ $COMMIT_PREFIX Your refined message here
79
+
80
+ EOF
81
+ )"
82
+ ```
83
+
84
+ IMPORTANT: Never use `$DETAILED_MSG` or any shell variable for the commit message. Write the actual generated message inline in the heredoc.
85
+
86
+ IMPORTANT: DO NOT push unless the user specifically asks!
87
+
88
+ ## STEP 6: Summarize
89
+
90
+ Summarize completion. In amend mode, note "Amended previous commit" instead of "Created new commit".
91
+
92
+ ## HARD CONSTRAINT
93
+
94
+ `/flux/commit` MUST NOT push to any remote unless the user explicitly asks. MUST NOT modify any source files or task files. The only permitted operations are reading git history, staging files, and creating/amending a commit. Write the commit message inline — never via shell variables.
95
+
96
+ ## Propose next step
97
+
98
+ Then propose the next step: `/flux/create-pr` (include arguments if needed).
99
+
100
+ Valid `//flux` commands: `/flux/config`, `/flux/new`, `/flux/ask`, `/flux/split`, `/flux/aug`, `/flux/exec`, `/flux/qa`, `/flux/tests`, `/flux/commit`, `/flux/create-pr`, `/flux/review`, `/flux/address-feedback`, `/flux/status`, `/flux/auto-pilot`, `/flux/rebase`. Do NOT suggest any command not on this list.
101
+
102
+ =================
103
+ $ARGUMENTS
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: config
3
+ description: Create or update the flux config.env with settings used by the flux command suite
4
+ ---
5
+
6
+ # Configure Flux Settings
7
+
8
+ ## STEP 1: Check for existing config
9
+
10
+ ```bash
11
+ FLUX_ROOT="${FLUX_ROOT:-$HOME/.flux}"
12
+ FLUX_DIR=$(printf '%s' "$(pwd -P)" | tr -cs 'a-zA-Z0-9' '-')
13
+ FLUX_BASE="$FLUX_ROOT/$FLUX_DIR"
14
+ mkdir -p "$FLUX_BASE/todo" "$FLUX_BASE/done" "$FLUX_BASE/review" "$FLUX_BASE/research"
15
+ echo "FLUX_BASE=$FLUX_BASE"
16
+ ```
17
+
18
+ ```bash
19
+ cat "$FLUX_BASE/config.env" 2>/dev/null && echo "__EXISTS__" || echo "__MISSING__"
20
+ ```
21
+
22
+ **File exists** — check the mandatory key (`TEST_CMD`):
23
+
24
+ - **Present** → display summary:
25
+
26
+ ```
27
+ TEST_CMD = <value>
28
+ ```
29
+
30
+ `ask_user_question` — question: "Config looks good. Do you want to update any values?" / header: "Update config" / options: `Yes, update values` | `No, looks good`
31
+
32
+ - No → stop. Yes → STEP 2 (update flow).
33
+
34
+ - **Missing** → proceed to STEP 2 (update flow).
35
+
36
+ **File missing** → proceed to STEP 2 (new file flow).
37
+
38
+ ---
39
+
40
+ ## STEP 2: Collect values
41
+
42
+ ### 2a. New file flow
43
+
44
+ If the config file did not exist, do NOT ask questions. Write the file immediately with a blank value and an inline comment:
45
+
46
+ ```bash
47
+ cat > "$FLUX_BASE/config.env" << 'CONFIG_EOF'
48
+ # Command that runs your test suite (e.g. bun run test:quiet, npm test, pytest -q, cargo test -- --quiet)
49
+ # Tip: chain lint + tests together, e.g. bun run lint && bun run test:quiet
50
+ TEST_CMD=
51
+ CONFIG_EOF
52
+ ```
53
+
54
+ ```bash
55
+ echo "=== $FLUX_BASE/config.env ==="
56
+ cat "$FLUX_BASE/config.env"
57
+ ```
58
+
59
+ `ask_user_question` — question: "Config file created at `$FLUX_BASE/config.env`. Please open it, fill in your value, then re-run `/flux/config` to verify. Ready to continue?" / header: "Edit config" / options:
60
+
61
+ - `Done, verify now` — re-read `$FLUX_BASE/config.env`, jump to STEP 4
62
+ - `Exit` — stop
63
+
64
+ ### 2b. Update flow
65
+
66
+ Runs only when the user chose "Yes, update values" from STEP 1, or when the key is missing. Ask via `ask_user_question` with options `Keep current` (pre-filled) and `New value - use Other below` (free-text via Other input).
67
+
68
+ **TEST_CMD**: "What command runs your test suite?" / header: "TEST_CMD"
69
+
70
+ - `Keep current` → description: `Current value: <TEST_CMD>`
71
+ - `New value - use Other below` → description: `e.g. bun run test:quiet, npm test, pytest -q — or chain with lint: bun run lint && bun run test:quiet`
72
+ - Store result as `TEST_CMD_VALUE`.
73
+
74
+ ---
75
+
76
+ ## STEP 3: Write config (update flow only)
77
+
78
+ ```bash
79
+ cat > "$FLUX_BASE/config.env" << 'CONFIG_EOF'
80
+ TEST_CMD=<TEST_CMD_VALUE>
81
+ CONFIG_EOF
82
+ ```
83
+
84
+ Rules: use the actual collected value (not the placeholder name), overwrite completely.
85
+
86
+ ```bash
87
+ echo "=== $FLUX_BASE/config.env ==="
88
+ cat "$FLUX_BASE/config.env"
89
+ ```
90
+
91
+ ---
92
+
93
+ ## STEP 4: Confirm
94
+
95
+ Parse `$FLUX_BASE/config.env` (strip comments and blank lines) and print:
96
+
97
+ ```
98
+ $FLUX_BASE/config.env ready:
99
+
100
+ TEST_CMD = <value or "(not set)">
101
+
102
+ All //flux commands will read this file automatically via:
103
+ source "$FLUX_BASE/config.env" 2>/dev/null
104
+ ```
105
+
106
+ ## HARD CONSTRAINT
107
+
108
+ `/flux/config` MUST NOT modify any source files, task files, or any file outside of `$FLUX_BASE/config.env`. The only permitted file operation is writing/overwriting `$FLUX_BASE/config.env`. No git commands. No task creation.