connectonion 0.6.2__py3-none-any.whl → 0.6.3__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 (407) hide show
  1. connectonion/__init__.py +46 -9
  2. connectonion/cli/__init__.py +11 -1
  3. connectonion/cli/browser_agent/__init__.py +11 -1
  4. connectonion/cli/browser_agent/browser.py +13 -3
  5. connectonion/cli/browser_agent/element_finder.py +8 -0
  6. connectonion/cli/browser_agent/highlight_screenshot.py +9 -1
  7. connectonion/cli/browser_agent/scroll.py +8 -0
  8. connectonion/cli/co_ai/__init__.py +6 -0
  9. connectonion/cli/co_ai/agent.py +87 -0
  10. connectonion/cli/co_ai/agents/__init__.py +5 -0
  11. connectonion/cli/co_ai/agents/registry.py +57 -0
  12. connectonion/cli/co_ai/commands/__init__.py +45 -0
  13. connectonion/cli/co_ai/commands/compact.py +173 -0
  14. connectonion/cli/co_ai/commands/cost.py +77 -0
  15. connectonion/cli/co_ai/commands/export.py +60 -0
  16. connectonion/cli/co_ai/commands/help.py +80 -0
  17. connectonion/cli/co_ai/commands/init.py +101 -0
  18. connectonion/cli/co_ai/commands/sessions.py +55 -0
  19. connectonion/cli/co_ai/commands/tasks.py +63 -0
  20. connectonion/cli/co_ai/commands/undo.py +103 -0
  21. connectonion/cli/co_ai/context.py +127 -0
  22. connectonion/cli/co_ai/main.py +52 -0
  23. connectonion/cli/co_ai/plugins/__init__.py +6 -0
  24. connectonion/cli/co_ai/plugins/reminder.py +76 -0
  25. connectonion/cli/co_ai/plugins/shell_approval.py +105 -0
  26. connectonion/cli/co_ai/prompts/agents/explore.md +79 -0
  27. connectonion/cli/co_ai/prompts/agents/plan.md +60 -0
  28. connectonion/cli/co_ai/prompts/assembler.py +303 -0
  29. connectonion/cli/{docs/co-vibecoding-principles-docs-contexts-all-in-one.md → co_ai/prompts/connectonion/README.md} +26 -0
  30. connectonion/cli/co_ai/prompts/connectonion/api.md +457 -0
  31. connectonion/cli/co_ai/prompts/connectonion/cli/README.md +805 -0
  32. connectonion/cli/co_ai/prompts/connectonion/cli/auth.md +46 -0
  33. connectonion/cli/co_ai/prompts/connectonion/cli/browser.md +235 -0
  34. connectonion/cli/co_ai/prompts/connectonion/cli/copy.md +184 -0
  35. connectonion/cli/co_ai/prompts/connectonion/cli/create.md +335 -0
  36. connectonion/cli/co_ai/prompts/connectonion/cli/init.md +431 -0
  37. connectonion/cli/co_ai/prompts/connectonion/co-directory-structure.md +214 -0
  38. connectonion/cli/co_ai/prompts/connectonion/concepts/agent.md +1078 -0
  39. connectonion/cli/co_ai/prompts/connectonion/concepts/events.md +816 -0
  40. connectonion/cli/co_ai/prompts/connectonion/concepts/llm_do.md +256 -0
  41. connectonion/cli/co_ai/prompts/connectonion/concepts/max_iterations.md +362 -0
  42. connectonion/cli/co_ai/prompts/connectonion/concepts/models.md +641 -0
  43. connectonion/cli/co_ai/prompts/connectonion/concepts/plugins.md +100 -0
  44. connectonion/cli/co_ai/prompts/connectonion/concepts/prompts.md +122 -0
  45. connectonion/cli/co_ai/prompts/connectonion/concepts/tools.md +512 -0
  46. connectonion/cli/co_ai/prompts/connectonion/concepts/transcribe.md +156 -0
  47. connectonion/cli/co_ai/prompts/connectonion/concepts/trust.md +291 -0
  48. connectonion/cli/co_ai/prompts/connectonion/debug/README.md +18 -0
  49. connectonion/cli/co_ai/prompts/connectonion/debug/auto_debug.md +1026 -0
  50. connectonion/cli/co_ai/prompts/connectonion/debug/console.md +129 -0
  51. connectonion/cli/co_ai/prompts/connectonion/debug/eval-format.md +178 -0
  52. connectonion/cli/co_ai/prompts/connectonion/debug/eval.md +230 -0
  53. connectonion/cli/co_ai/prompts/connectonion/debug/exceptions.md +307 -0
  54. connectonion/cli/co_ai/prompts/connectonion/debug/log.md +117 -0
  55. connectonion/cli/co_ai/prompts/connectonion/debug/xray.md +215 -0
  56. connectonion/cli/co_ai/prompts/connectonion/design-decisions/001-choosing-input-method.md +202 -0
  57. connectonion/cli/co_ai/prompts/connectonion/design-decisions/002-choosing-llm-function-name.md +202 -0
  58. connectonion/cli/co_ai/prompts/connectonion/design-decisions/003-choosing-trust-keyword.md +141 -0
  59. connectonion/cli/co_ai/prompts/connectonion/design-decisions/004-cli-create-flow.md +117 -0
  60. connectonion/cli/co_ai/prompts/connectonion/design-decisions/005-designing-agent-network-protocol.md +503 -0
  61. connectonion/cli/co_ai/prompts/connectonion/design-decisions/006-agent-address-format.md +305 -0
  62. connectonion/cli/co_ai/prompts/connectonion/design-decisions/007-authentication-backend-design.md +240 -0
  63. connectonion/cli/co_ai/prompts/connectonion/design-decisions/008-naming-is-hard.md +228 -0
  64. connectonion/cli/co_ai/prompts/connectonion/design-decisions/009-why-connect-function.md +167 -0
  65. connectonion/cli/co_ai/prompts/connectonion/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
  66. connectonion/cli/co_ai/prompts/connectonion/design-decisions/011-global-config-identity-management.md +357 -0
  67. connectonion/cli/co_ai/prompts/connectonion/design-decisions/012-tool-execution-separation.md +259 -0
  68. connectonion/cli/co_ai/prompts/connectonion/design-decisions/013-debug-and-logging-design.md +253 -0
  69. connectonion/cli/co_ai/prompts/connectonion/design-decisions/014-hook-system-design.md +510 -0
  70. connectonion/cli/co_ai/prompts/connectonion/design-decisions/015-interactive-auto-debug-design.md +837 -0
  71. connectonion/cli/co_ai/prompts/connectonion/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
  72. connectonion/cli/co_ai/prompts/connectonion/design-decisions/017-session-logging-and-eval-format.md +120 -0
  73. connectonion/cli/co_ai/prompts/connectonion/design-decisions/018-event-api-naming.md +274 -0
  74. connectonion/cli/co_ai/prompts/connectonion/design-decisions/019-agent-lifecycle-design.md +655 -0
  75. connectonion/cli/co_ai/prompts/connectonion/design-decisions/020-trust-system-and-network-architecture.md +503 -0
  76. connectonion/cli/co_ai/prompts/connectonion/design-decisions/021-task-storage-jsonl-design.md +496 -0
  77. connectonion/cli/co_ai/prompts/connectonion/design-decisions/022-raw-asgi-implementation.md +273 -0
  78. connectonion/cli/co_ai/prompts/connectonion/examples/agent_reasoning.md +62 -0
  79. connectonion/cli/co_ai/prompts/connectonion/examples/atomic_tools.md +24 -0
  80. connectonion/cli/co_ai/prompts/connectonion/examples/load_guide.md +18 -0
  81. connectonion/cli/co_ai/prompts/connectonion/examples.md +0 -0
  82. connectonion/cli/co_ai/prompts/connectonion/hook-system-options.md +364 -0
  83. connectonion/cli/co_ai/prompts/connectonion/index.md +162 -0
  84. connectonion/cli/co_ai/prompts/connectonion/integrations/README.md +12 -0
  85. connectonion/cli/co_ai/prompts/connectonion/integrations/auth.md +450 -0
  86. connectonion/cli/co_ai/prompts/connectonion/integrations/google.md +431 -0
  87. connectonion/cli/co_ai/prompts/connectonion/integrations/microsoft.md +370 -0
  88. connectonion/cli/co_ai/prompts/connectonion/network/README.md +14 -0
  89. connectonion/cli/co_ai/prompts/connectonion/network/connect.md +543 -0
  90. connectonion/cli/co_ai/prompts/connectonion/network/connection.md +538 -0
  91. connectonion/cli/co_ai/prompts/connectonion/network/deploy.md +123 -0
  92. connectonion/cli/co_ai/prompts/connectonion/network/host.md +1049 -0
  93. connectonion/cli/co_ai/prompts/connectonion/network/protocol/agent-relay-protocol.md +495 -0
  94. connectonion/cli/co_ai/prompts/connectonion/network/protocol/announce-message.md +115 -0
  95. connectonion/cli/co_ai/prompts/connectonion/principles.md +124 -0
  96. connectonion/cli/co_ai/prompts/connectonion/quickstart.md +261 -0
  97. connectonion/cli/co_ai/prompts/connectonion/roadmap.md +81 -0
  98. connectonion/cli/co_ai/prompts/connectonion/templates/README.md +77 -0
  99. connectonion/cli/co_ai/prompts/connectonion/templates/meta-agent.md +152 -0
  100. connectonion/cli/co_ai/prompts/connectonion/templates/minimal.md +105 -0
  101. connectonion/cli/co_ai/prompts/connectonion/templates/playwright.md +130 -0
  102. connectonion/cli/co_ai/prompts/connectonion/templates/web-research.md +144 -0
  103. connectonion/cli/co_ai/prompts/connectonion/tui/README.md +95 -0
  104. connectonion/cli/co_ai/prompts/connectonion/tui/chat.md +181 -0
  105. connectonion/cli/co_ai/prompts/connectonion/tui/divider.md +63 -0
  106. connectonion/cli/co_ai/prompts/connectonion/tui/dropdown.md +83 -0
  107. connectonion/cli/co_ai/prompts/connectonion/tui/footer.md +44 -0
  108. connectonion/cli/co_ai/prompts/connectonion/tui/fuzzy.md +68 -0
  109. connectonion/cli/co_ai/prompts/connectonion/tui/input.md +84 -0
  110. connectonion/cli/co_ai/prompts/connectonion/tui/keys.md +77 -0
  111. connectonion/cli/co_ai/prompts/connectonion/tui/pick.md +71 -0
  112. connectonion/cli/co_ai/prompts/connectonion/tui/providers.md +89 -0
  113. connectonion/cli/co_ai/prompts/connectonion/tui/status_bar.md +67 -0
  114. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/README.md +156 -0
  115. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/calendar_plugin.md +68 -0
  116. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/eval.md +89 -0
  117. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/gmail_plugin.md +68 -0
  118. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/image_result_formatter.md +74 -0
  119. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/re_act.md +86 -0
  120. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/shell_approval.md +69 -0
  121. connectonion/cli/co_ai/prompts/connectonion/useful_tools/README.md +81 -0
  122. connectonion/cli/co_ai/prompts/connectonion/useful_tools/diff_writer.md +138 -0
  123. connectonion/cli/co_ai/prompts/connectonion/useful_tools/get_emails.md +499 -0
  124. connectonion/cli/co_ai/prompts/connectonion/useful_tools/gmail.md +135 -0
  125. connectonion/cli/co_ai/prompts/connectonion/useful_tools/google_calendar.md +106 -0
  126. connectonion/cli/co_ai/prompts/connectonion/useful_tools/memory.md +486 -0
  127. connectonion/cli/co_ai/prompts/connectonion/useful_tools/microsoft_calendar.md +106 -0
  128. connectonion/cli/co_ai/prompts/connectonion/useful_tools/outlook.md +120 -0
  129. connectonion/cli/co_ai/prompts/connectonion/useful_tools/send_email.md +403 -0
  130. connectonion/cli/co_ai/prompts/connectonion/useful_tools/shell.md +95 -0
  131. connectonion/cli/co_ai/prompts/connectonion/useful_tools/slash_command.md +96 -0
  132. connectonion/cli/co_ai/prompts/connectonion/useful_tools/terminal.md +97 -0
  133. connectonion/cli/co_ai/prompts/connectonion/useful_tools/todo_list.md +252 -0
  134. connectonion/cli/co_ai/prompts/connectonion/useful_tools/web_fetch.md +130 -0
  135. connectonion/cli/co_ai/prompts/connectonion/vibe-coding-guide.md +97 -0
  136. connectonion/cli/co_ai/prompts/connectonion/windows-support.md +258 -0
  137. connectonion/cli/co_ai/prompts/main.md +247 -0
  138. connectonion/cli/co_ai/prompts/reminders/plan_mode.md +34 -0
  139. connectonion/cli/co_ai/prompts/summarization.md +55 -0
  140. connectonion/cli/co_ai/prompts/tools/ask_user.md +61 -0
  141. connectonion/cli/co_ai/prompts/tools/background.md +57 -0
  142. connectonion/cli/co_ai/prompts/tools/edit.md +90 -0
  143. connectonion/cli/co_ai/prompts/tools/glob.md +52 -0
  144. connectonion/cli/co_ai/prompts/tools/grep.md +55 -0
  145. connectonion/cli/co_ai/prompts/tools/plan_mode.md +80 -0
  146. connectonion/cli/co_ai/prompts/tools/read.md +40 -0
  147. connectonion/cli/co_ai/prompts/tools/shell.md +67 -0
  148. connectonion/cli/co_ai/prompts/tools/task.md +51 -0
  149. connectonion/cli/co_ai/prompts/tools/todo.md +139 -0
  150. connectonion/cli/co_ai/prompts/tools/write.md +47 -0
  151. connectonion/cli/co_ai/prompts/workflow.md +89 -0
  152. connectonion/cli/co_ai/reminders.py +159 -0
  153. connectonion/cli/co_ai/sessions.py +110 -0
  154. connectonion/cli/co_ai/skills/__init__.py +37 -0
  155. connectonion/cli/co_ai/skills/builtin/commit/SKILL.md +63 -0
  156. connectonion/cli/co_ai/skills/builtin/review-pr/SKILL.md +76 -0
  157. connectonion/cli/co_ai/skills/loader.py +166 -0
  158. connectonion/cli/co_ai/skills/tool.py +46 -0
  159. connectonion/cli/co_ai/tools/__init__.py +92 -0
  160. connectonion/cli/co_ai/tools/ask_user.py +35 -0
  161. connectonion/cli/co_ai/tools/background.py +201 -0
  162. connectonion/cli/co_ai/tools/diff_writer.py +291 -0
  163. connectonion/cli/co_ai/tools/edit.py +89 -0
  164. connectonion/cli/co_ai/tools/glob.py +84 -0
  165. connectonion/cli/co_ai/tools/grep.py +158 -0
  166. connectonion/cli/co_ai/tools/load_guide.py +23 -0
  167. connectonion/cli/co_ai/tools/multi_edit.py +116 -0
  168. connectonion/cli/co_ai/tools/plan_mode.py +172 -0
  169. connectonion/cli/co_ai/tools/read.py +67 -0
  170. connectonion/cli/co_ai/tools/task.py +59 -0
  171. connectonion/cli/co_ai/tools/todo_list.py +159 -0
  172. connectonion/cli/co_ai/tools/write.py +126 -0
  173. connectonion/cli/commands/__init__.py +11 -1
  174. connectonion/cli/commands/ai_commands.py +34 -0
  175. connectonion/cli/commands/copy_commands.py +55 -6
  176. connectonion/cli/commands/create.py +20 -17
  177. connectonion/cli/commands/init.py +19 -22
  178. connectonion/cli/commands/project_cmd_lib.py +15 -0
  179. connectonion/cli/main.py +11 -0
  180. connectonion/console.py +15 -1
  181. connectonion/core/__init__.py +10 -1
  182. connectonion/core/agent.py +37 -16
  183. connectonion/core/exceptions.py +74 -0
  184. connectonion/core/llm.py +54 -6
  185. connectonion/core/tool_executor.py +32 -31
  186. connectonion/core/tool_factory.py +47 -10
  187. connectonion/debug/__init__.py +10 -1
  188. connectonion/debug/debug_explainer/__init__.py +10 -1
  189. connectonion/debug/execution_analyzer/__init__.py +10 -1
  190. connectonion/debug/execution_analyzer/execution_analysis.py +5 -2
  191. connectonion/debug/runtime_inspector/__init__.py +10 -1
  192. connectonion/docs/.package-ignore +6 -0
  193. connectonion/docs/README.md +2036 -0
  194. connectonion/docs/api.md +457 -0
  195. connectonion/docs/archive/001-ai-agent-is-just-prompt-plus-function.md +249 -0
  196. connectonion/docs/archive/README.md +53 -0
  197. connectonion/docs/archive/archive/consolidation-plan.md +72 -0
  198. connectonion/docs/archive/archive/core-principles-extracted.md +239 -0
  199. connectonion/docs/archive/archive/master-principles.md +222 -0
  200. connectonion/docs/archive/archive/principles.md +293 -0
  201. connectonion/docs/archive/archive/simplicity-principles.md +221 -0
  202. connectonion/docs/archive/attack-defense-insights.md +410 -0
  203. connectonion/docs/archive/business-model.md +305 -0
  204. connectonion/docs/archive/core-principles-unified.md +190 -0
  205. connectonion/docs/archive/discussion-journey.md +178 -0
  206. connectonion/docs/archive/economic-analysis.md +323 -0
  207. connectonion/docs/archive/features/01-share-and-find.md +256 -0
  208. connectonion/docs/archive/features/02-agent-authentication.md +93 -0
  209. connectonion/docs/archive/features/03-test-before-trust.md +71 -0
  210. connectonion/docs/archive/features/06-reliability-and-offline.md +197 -0
  211. connectonion/docs/archive/features/README.md +46 -0
  212. connectonion/docs/archive/features-roadmap.md +247 -0
  213. connectonion/docs/archive/mcp-comparison-insights.md +215 -0
  214. connectonion/docs/archive/migration-strategy.md +571 -0
  215. connectonion/docs/archive/mini-whitepaper.md +293 -0
  216. connectonion/docs/archive/network-protocol.md +394 -0
  217. connectonion/docs/archive/semantic-revolution.md +367 -0
  218. connectonion/docs/archive/technical-architecture.md +453 -0
  219. connectonion/docs/archive/the-semantic-insight.md +207 -0
  220. connectonion/docs/archive/threat-model.md +164 -0
  221. connectonion/docs/cli/README.md +805 -0
  222. connectonion/docs/cli/auth.md +46 -0
  223. connectonion/docs/cli/browser.md +235 -0
  224. connectonion/docs/cli/copy.md +232 -0
  225. connectonion/docs/cli/create.md +335 -0
  226. connectonion/docs/cli/init.md +431 -0
  227. connectonion/docs/co-directory-structure.md +214 -0
  228. connectonion/docs/concepts/agent.md +1078 -0
  229. connectonion/docs/concepts/events.md +699 -0
  230. connectonion/docs/concepts/llm_do.md +256 -0
  231. connectonion/docs/concepts/max_iterations.md +362 -0
  232. connectonion/docs/concepts/models.md +641 -0
  233. connectonion/docs/concepts/plugins.md +100 -0
  234. connectonion/docs/concepts/prompts.md +122 -0
  235. connectonion/docs/concepts/session.md +428 -0
  236. connectonion/docs/concepts/tools.md +512 -0
  237. connectonion/docs/concepts/transcribe.md +156 -0
  238. connectonion/docs/concepts/trust.md +291 -0
  239. connectonion/docs/connectonion.md +1256 -0
  240. connectonion/docs/debug/README.md +18 -0
  241. connectonion/docs/debug/auto_debug.md +1026 -0
  242. connectonion/docs/debug/console.md +129 -0
  243. connectonion/docs/debug/eval-format.md +178 -0
  244. connectonion/docs/debug/eval.md +230 -0
  245. connectonion/docs/debug/exceptions.md +307 -0
  246. connectonion/docs/debug/log.md +117 -0
  247. connectonion/docs/debug/xray.md +215 -0
  248. connectonion/docs/design-decisions/001-choosing-input-method.md +202 -0
  249. connectonion/docs/design-decisions/002-choosing-llm-function-name.md +202 -0
  250. connectonion/docs/design-decisions/003-choosing-trust-keyword.md +141 -0
  251. connectonion/docs/design-decisions/004-cli-create-flow.md +117 -0
  252. connectonion/docs/design-decisions/005-designing-agent-network-protocol.md +503 -0
  253. connectonion/docs/design-decisions/006-agent-address-format.md +305 -0
  254. connectonion/docs/design-decisions/007-authentication-backend-design.md +240 -0
  255. connectonion/docs/design-decisions/008-naming-is-hard.md +228 -0
  256. connectonion/docs/design-decisions/009-why-connect-function.md +167 -0
  257. connectonion/docs/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
  258. connectonion/docs/design-decisions/011-global-config-identity-management.md +357 -0
  259. connectonion/docs/design-decisions/012-tool-execution-separation.md +259 -0
  260. connectonion/docs/design-decisions/013-debug-and-logging-design.md +253 -0
  261. connectonion/docs/design-decisions/014-hook-system-design.md +510 -0
  262. connectonion/docs/design-decisions/015-interactive-auto-debug-design.md +837 -0
  263. connectonion/docs/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
  264. connectonion/docs/design-decisions/017-session-logging-and-eval-format.md +120 -0
  265. connectonion/docs/design-decisions/018-event-api-naming.md +274 -0
  266. connectonion/docs/design-decisions/019-agent-lifecycle-design.md +655 -0
  267. connectonion/docs/design-decisions/020-trust-system-and-network-architecture.md +503 -0
  268. connectonion/docs/design-decisions/021-task-storage-jsonl-design.md +496 -0
  269. connectonion/docs/design-decisions/022-raw-asgi-implementation.md +273 -0
  270. connectonion/docs/examples.md +0 -0
  271. connectonion/docs/hook-system-options.md +364 -0
  272. connectonion/docs/integrations/README.md +12 -0
  273. connectonion/docs/integrations/auth.md +450 -0
  274. connectonion/docs/integrations/google.md +431 -0
  275. connectonion/docs/integrations/microsoft.md +370 -0
  276. connectonion/docs/network/README.md +14 -0
  277. connectonion/docs/network/connect.md +629 -0
  278. connectonion/docs/network/deploy.md +124 -0
  279. connectonion/docs/network/host.md +1087 -0
  280. connectonion/docs/network/io.md +538 -0
  281. connectonion/docs/network/protocol/agent-relay-protocol.md +495 -0
  282. connectonion/docs/network/protocol/announce-message.md +115 -0
  283. connectonion/docs/principles.md +124 -0
  284. connectonion/docs/quickstart.md +261 -0
  285. connectonion/docs/roadmap.md +81 -0
  286. connectonion/docs/templates/README.md +77 -0
  287. connectonion/docs/templates/meta-agent.md +152 -0
  288. connectonion/docs/templates/minimal.md +105 -0
  289. connectonion/docs/templates/playwright.md +130 -0
  290. connectonion/docs/templates/web-research.md +144 -0
  291. connectonion/docs/tui/README.md +95 -0
  292. connectonion/docs/tui/chat.md +181 -0
  293. connectonion/docs/tui/divider.md +63 -0
  294. connectonion/docs/tui/dropdown.md +83 -0
  295. connectonion/docs/tui/footer.md +44 -0
  296. connectonion/docs/tui/fuzzy.md +68 -0
  297. connectonion/docs/tui/input.md +84 -0
  298. connectonion/docs/tui/keys.md +77 -0
  299. connectonion/docs/tui/pick.md +71 -0
  300. connectonion/docs/tui/providers.md +89 -0
  301. connectonion/docs/tui/status_bar.md +67 -0
  302. connectonion/docs/useful_plugins/README.md +160 -0
  303. connectonion/docs/useful_plugins/calendar_plugin.md +68 -0
  304. connectonion/docs/useful_plugins/eval.md +89 -0
  305. connectonion/docs/useful_plugins/gmail_plugin.md +68 -0
  306. connectonion/docs/useful_plugins/image_result_formatter.md +74 -0
  307. connectonion/docs/useful_plugins/re_act.md +86 -0
  308. connectonion/docs/useful_plugins/shell_approval.md +69 -0
  309. connectonion/docs/useful_plugins/system_reminder.md +210 -0
  310. connectonion/docs/useful_prompts/README.md +127 -0
  311. connectonion/docs/useful_prompts/coding_agent.md +214 -0
  312. connectonion/docs/useful_tools/README.md +81 -0
  313. connectonion/docs/useful_tools/ask_user.md +103 -0
  314. connectonion/docs/useful_tools/diff_writer.md +158 -0
  315. connectonion/docs/useful_tools/get_emails.md +519 -0
  316. connectonion/docs/useful_tools/gmail.md +155 -0
  317. connectonion/docs/useful_tools/google_calendar.md +126 -0
  318. connectonion/docs/useful_tools/memory.md +506 -0
  319. connectonion/docs/useful_tools/microsoft_calendar.md +126 -0
  320. connectonion/docs/useful_tools/outlook.md +140 -0
  321. connectonion/docs/useful_tools/send_email.md +423 -0
  322. connectonion/docs/useful_tools/shell.md +115 -0
  323. connectonion/docs/useful_tools/slash_command.md +116 -0
  324. connectonion/docs/useful_tools/terminal.md +115 -0
  325. connectonion/docs/useful_tools/todo_list.md +272 -0
  326. connectonion/docs/useful_tools/web_fetch.md +150 -0
  327. connectonion/docs/vibe-coding-guide.md +97 -0
  328. connectonion/docs/windows-support.md +258 -0
  329. connectonion/logger.py +3 -3
  330. connectonion/network/__init__.py +19 -6
  331. connectonion/network/asgi/__init__.py +81 -0
  332. connectonion/network/asgi/http.py +205 -0
  333. connectonion/network/asgi/websocket.py +217 -0
  334. connectonion/network/connect.py +232 -185
  335. connectonion/network/host/__init__.py +59 -0
  336. connectonion/network/host/auth.py +191 -0
  337. connectonion/network/host/routes.py +135 -0
  338. connectonion/network/host/server.py +289 -0
  339. connectonion/network/host/session.py +78 -0
  340. connectonion/network/io/__init__.py +21 -0
  341. connectonion/network/{connection.py → io/base.py} +17 -42
  342. connectonion/network/io/websocket.py +55 -0
  343. connectonion/network/relay.py +37 -16
  344. connectonion/network/trust/__init__.py +30 -0
  345. connectonion/network/trust/factory.py +138 -0
  346. connectonion/network/{trust_agents.py → trust/prompts.py} +3 -3
  347. connectonion/network/{trust_functions.py → trust/tools.py} +2 -2
  348. connectonion/prompt_files/__init__.py +11 -1
  349. connectonion/prompt_files/react_acknowledge.md +26 -0
  350. connectonion/prompts.py +10 -1
  351. connectonion/tui/chat.py +10 -1
  352. connectonion/tui/divider.py +10 -1
  353. connectonion/tui/dropdown.py +10 -1
  354. connectonion/tui/footer.py +8 -0
  355. connectonion/tui/fuzzy.py +11 -1
  356. connectonion/tui/input.py +118 -70
  357. connectonion/tui/keys.py +133 -6
  358. connectonion/tui/providers.py +11 -1
  359. connectonion/tui/status_bar.py +10 -1
  360. connectonion/useful_events_handlers/__init__.py +8 -0
  361. connectonion/useful_events_handlers/reflect.py +19 -4
  362. connectonion/useful_plugins/__init__.py +2 -1
  363. connectonion/useful_plugins/eval.py +2 -2
  364. connectonion/useful_plugins/gmail_plugin.py +3 -3
  365. connectonion/useful_plugins/image_result_formatter.py +3 -3
  366. connectonion/useful_plugins/re_act.py +114 -28
  367. connectonion/useful_plugins/shell_approval.py +2 -2
  368. connectonion/useful_plugins/system_reminder.py +103 -0
  369. connectonion/useful_plugins/ui_stream.py +18 -133
  370. connectonion/useful_prompts/README.md +61 -0
  371. connectonion/useful_prompts/__init__.py +45 -0
  372. connectonion/useful_prompts/coding_agent/README.md +106 -0
  373. connectonion/useful_prompts/coding_agent/assembler.py +123 -0
  374. connectonion/useful_prompts/coding_agent/prompts/main.md +227 -0
  375. connectonion/useful_prompts/coding_agent/prompts/tools/ask_user.md +61 -0
  376. connectonion/useful_prompts/coding_agent/prompts/tools/background.md +57 -0
  377. connectonion/useful_prompts/coding_agent/prompts/tools/edit.md +90 -0
  378. connectonion/useful_prompts/coding_agent/prompts/tools/glob.md +52 -0
  379. connectonion/useful_prompts/coding_agent/prompts/tools/grep.md +55 -0
  380. connectonion/useful_prompts/coding_agent/prompts/tools/plan_mode.md +80 -0
  381. connectonion/useful_prompts/coding_agent/prompts/tools/read.md +40 -0
  382. connectonion/useful_prompts/coding_agent/prompts/tools/shell.md +67 -0
  383. connectonion/useful_prompts/coding_agent/prompts/tools/task.md +51 -0
  384. connectonion/useful_prompts/coding_agent/prompts/tools/todo.md +139 -0
  385. connectonion/useful_prompts/coding_agent/prompts/tools/write.md +48 -0
  386. connectonion/useful_prompts/system-reminders/security-warning.md +14 -0
  387. connectonion/useful_prompts/system-reminders/test-reminder.md +11 -0
  388. connectonion/useful_tools/__init__.py +31 -4
  389. connectonion/useful_tools/ask_user.py +35 -0
  390. connectonion/useful_tools/bash.py +69 -0
  391. connectonion/useful_tools/diff_writer.py +186 -94
  392. connectonion/useful_tools/edit.py +102 -0
  393. connectonion/useful_tools/glob_files.py +97 -0
  394. connectonion/useful_tools/grep_files.py +171 -0
  395. connectonion/useful_tools/multi_edit.py +116 -0
  396. connectonion/useful_tools/read_file.py +73 -0
  397. connectonion/useful_tools/shell.py +50 -45
  398. connectonion/useful_tools/write_file.py +129 -0
  399. {connectonion-0.6.2.dist-info → connectonion-0.6.3.dist-info}/METADATA +10 -3
  400. connectonion-0.6.3.dist-info/RECORD +469 -0
  401. connectonion/network/asgi.py +0 -407
  402. connectonion/network/host.py +0 -616
  403. connectonion/network/trust.py +0 -166
  404. connectonion-0.6.2.dist-info/RECORD +0 -129
  405. /connectonion/cli/{docs → co_ai/prompts/connectonion}/connectonion.md +0 -0
  406. {connectonion-0.6.2.dist-info → connectonion-0.6.3.dist-info}/WHEEL +0 -0
  407. {connectonion-0.6.2.dist-info → connectonion-0.6.3.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,106 @@
1
+ # Coding Agent Prompt
2
+
3
+ A modular **prompt template** for building coding agents. This is a prompt (not code) - copy it to your project and customize the markdown files.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ coding_agent/
9
+ ├── prompts/
10
+ │ ├── main.md # Core agent behavior
11
+ │ └── tools/ # Per-tool guidance
12
+ │ ├── shell.md # Shell/bash usage
13
+ │ ├── read.md # File reading
14
+ │ ├── write.md # File writing
15
+ │ └── todo.md # Task tracking
16
+ ├── assembler.py # Prompt assembly utility
17
+ └── README.md
18
+ ```
19
+
20
+ ## Quick Start
21
+
22
+ 1. **Copy to your project:**
23
+ ```bash
24
+ cp -r coding_agent/ my-project/
25
+ cd my-project/coding_agent
26
+ ```
27
+
28
+ 2. **Use the assembler:**
29
+ ```python
30
+ from assembler import assemble_prompt
31
+ from connectonion import Agent
32
+ from connectonion.useful_tools import Shell, DiffWriter
33
+
34
+ def read_file(path: str) -> str:
35
+ return open(path).read()
36
+
37
+ tools = [Shell(), read_file, DiffWriter()]
38
+ prompt = assemble_prompt(prompts_dir="prompts", tools=tools)
39
+
40
+ agent = Agent("my-agent", system_prompt=prompt, tools=tools)
41
+ agent.run()
42
+ ```
43
+
44
+ ## Customization
45
+
46
+ ### Modify main.md
47
+ Edit `prompts/main.md` to change:
48
+ - Agent personality and tone
49
+ - Workflow steps
50
+ - General guidelines
51
+
52
+ ### Add/modify tool descriptions
53
+ Each file in `prompts/tools/` provides guidance for one tool:
54
+ - `shell.md` - When to use shell, when not to
55
+ - `read.md` - File reading best practices
56
+ - `write.md` - File writing guidelines
57
+ - `todo.md` - Task tracking guidance
58
+
59
+ Add new files for your custom tools:
60
+ ```markdown
61
+ # prompts/tools/my_custom_tool.md
62
+
63
+ # Tool: My Custom Tool
64
+
65
+ ## When to Use
66
+ - Situation A
67
+ - Situation B
68
+
69
+ ## When NOT to Use
70
+ - Situation C
71
+ ```
72
+
73
+ ### Add project context
74
+ Create `.co/AGENT.md` in your project root for project-specific instructions:
75
+ ```markdown
76
+ # Project: My App
77
+
78
+ ## Tech Stack
79
+ - Python 3.11
80
+ - FastAPI
81
+ - PostgreSQL
82
+
83
+ ## Conventions
84
+ - Use snake_case for functions
85
+ - Type hints required
86
+ ```
87
+
88
+ Then pass it to the assembler:
89
+ ```python
90
+ prompt = assemble_prompt(
91
+ prompts_dir="prompts",
92
+ tools=tools,
93
+ context_file=".co/AGENT.md"
94
+ )
95
+ ```
96
+
97
+ ## Philosophy
98
+
99
+ This is NOT a framework. It's an example you own completely.
100
+
101
+ - Modify any file freely
102
+ - Delete what you don't need
103
+ - Add what you want
104
+ - No dependencies on ConnectOnion internals
105
+
106
+ The assembler is ~50 lines of simple Python. Read it, understand it, change it.
@@ -0,0 +1,123 @@
1
+ """
2
+ Purpose: Modular prompt assembly for coding agents from main.md + tool-specific prompts + project context
3
+ LLM-Note:
4
+ Dependencies: imports from [pathlib, typing] | imported by [examples/coding_agent/, user code] | tested by [tests/prompts/test_assembler.py]
5
+ Data flow: assemble_prompt(prompts_dir, tools, context_file) → reads prompts/main.md → for each tool reads prompts/tools/{tool_name}.md → optionally reads context_file (.co/AGENT.md) → concatenates with separators → returns assembled prompt
6
+ State/Effects: reads markdown files from filesystem | no persistent state
7
+ Integration: exposes assemble_prompt(prompts_dir, tools, context_file) → str | expects directory structure: prompts/main.md, prompts/tools/*.md | tool name extracted from tool.__name__ or tool.name | user customizable (copy to project and modify)
8
+ Performance: file I/O only (fast for typical prompt files) | lazy loading (only reads requested tool prompts)
9
+ Errors: skips missing tool prompt files silently | raises if main.md missing | context_file optional
10
+ Prompt Assembler - Copy this to your project and customize!
11
+
12
+ This is NOT a framework class. It's an example you can modify freely.
13
+ The assembled prompt combines:
14
+ - Main prompt (core agent behavior)
15
+ - Tool descriptions (for each tool you use)
16
+ - Project context (optional .co/AGENT.md)
17
+
18
+ Usage:
19
+ from assembler import assemble_prompt
20
+
21
+ prompt = assemble_prompt(
22
+ tools=[shell, read_file, writer],
23
+ context_file=".co/AGENT.md" # optional
24
+ )
25
+
26
+ agent = Agent("my-agent", system_prompt=prompt, tools=tools)
27
+ """
28
+
29
+ from pathlib import Path
30
+ from typing import List, Any, Optional
31
+
32
+
33
+ def assemble_prompt(
34
+ prompts_dir: str = "prompts",
35
+ tools: Optional[List[Any]] = None,
36
+ context_file: Optional[str] = None,
37
+ ) -> str:
38
+ """
39
+ Assemble a system prompt from modular files.
40
+
41
+ Directory structure:
42
+ prompts/
43
+ ├── main.md # Core agent behavior
44
+ └── tools/ # Tool-specific guidance
45
+ ├── shell.md
46
+ ├── read.md
47
+ └── write.md
48
+
49
+ Args:
50
+ prompts_dir: Path to prompts directory
51
+ tools: List of tool objects/functions (loads matching .md files)
52
+ context_file: Optional project-specific context file
53
+
54
+ Returns:
55
+ Assembled prompt string
56
+ """
57
+ prompts_path = Path(prompts_dir)
58
+ parts = []
59
+
60
+ # 1. Main prompt (required)
61
+ main_file = prompts_path / "main.md"
62
+ if main_file.exists():
63
+ parts.append(main_file.read_text())
64
+
65
+ # 2. Tool descriptions (for each available tool)
66
+ tools_dir = prompts_path / "tools"
67
+ if tools_dir.exists() and tools:
68
+ for tool in tools:
69
+ tool_name = _get_tool_name(tool).lower()
70
+ tool_file = tools_dir / f"{tool_name}.md"
71
+ if tool_file.exists():
72
+ parts.append(tool_file.read_text())
73
+
74
+ # 3. Project context (optional)
75
+ if context_file:
76
+ context_path = Path(context_file)
77
+ if context_path.exists():
78
+ parts.append(f"# Project Context\n\n{context_path.read_text()}")
79
+
80
+ return "\n\n---\n\n".join(parts)
81
+
82
+
83
+ def _get_tool_name(tool: Any) -> str:
84
+ """Extract tool name from function or class instance."""
85
+ # Function
86
+ if callable(tool) and hasattr(tool, "__name__"):
87
+ return tool.__name__
88
+
89
+ # Class instance with name attribute
90
+ if hasattr(tool, "name"):
91
+ return tool.name
92
+
93
+ # Class instance - use class name
94
+ return tool.__class__.__name__
95
+
96
+
97
+ # Example usage
98
+ if __name__ == "__main__":
99
+ from connectonion import Agent
100
+ from connectonion.useful_tools import bash, DiffWriter, TodoList
101
+
102
+ # Define tools
103
+ def read_file(path: str) -> str:
104
+ """Read file contents."""
105
+ return Path(path).read_text()
106
+
107
+ writer = DiffWriter()
108
+ todo = TodoList()
109
+ tools = [bash, read_file, writer, todo]
110
+
111
+ # Assemble prompt
112
+ prompt = assemble_prompt(
113
+ prompts_dir="prompts",
114
+ tools=tools,
115
+ context_file=".co/AGENT.md"
116
+ )
117
+
118
+ print(f"Assembled prompt ({len(prompt)} chars):\n")
119
+ print(prompt[:500] + "...")
120
+
121
+ # Create agent
122
+ # agent = Agent("coding-agent", system_prompt=prompt, tools=tools)
123
+ # agent.run()
@@ -0,0 +1,227 @@
1
+ # Coding Agent
2
+
3
+ You are a coding agent that helps developers with software engineering tasks.
4
+
5
+ ## Tone and Style
6
+
7
+ - Be **concise and direct**. Keep responses short (1-3 sentences) unless detail is requested.
8
+ - **No preamble or postamble**. Don't explain what you're about to do or summarize what you did.
9
+ - **No comments in code** unless asked or absolutely necessary for complex logic.
10
+ - Answer directly. One word answers are best when appropriate.
11
+ - Only use emojis if explicitly requested.
12
+
13
+ **Examples of appropriate verbosity:**
14
+
15
+ ```
16
+ user: what files are in src/
17
+ assistant: [runs bash to list files]
18
+ foo.py, bar.py, utils.py
19
+
20
+ user: create hello.py with a hello world function
21
+ assistant: [creates the file]
22
+ Done.
23
+
24
+ user: run the tests
25
+ assistant: [runs pytest]
26
+ All 5 tests passed.
27
+
28
+ user: 2 + 2
29
+ assistant: 4
30
+ ```
31
+
32
+ **Do NOT add unnecessary text like:**
33
+ - "Here is the file..."
34
+ - "I will now..."
35
+ - "Sure, I can help with that..."
36
+ - "Let me know if you need anything else!"
37
+
38
+ ## Professional Objectivity
39
+
40
+ Prioritize **technical accuracy** over validating the user's beliefs.
41
+
42
+ - Focus on facts and problem-solving
43
+ - Provide direct, objective technical info without unnecessary praise
44
+ - **Disagree when necessary** - even if it's not what the user wants to hear
45
+ - Respectful correction is more valuable than false agreement
46
+ - When uncertain, investigate first rather than confirming user's beliefs
47
+ - Avoid phrases like "You're absolutely right" or excessive validation
48
+
49
+ ## Planning Without Timelines
50
+
51
+ When planning tasks, provide concrete steps **without time estimates**.
52
+
53
+ - **Never** suggest "this will take 2-3 weeks" or "we can do this later"
54
+ - Focus on **what** needs to be done, not **when**
55
+ - Break work into actionable steps
56
+ - Let users decide scheduling
57
+
58
+ ## Task Workflow
59
+
60
+ ### 1. Understand
61
+ - What does the user actually want?
62
+ - What is the expected outcome?
63
+ - Ask clarifying questions if ambiguous
64
+
65
+ ### 2. Search
66
+ - Read existing files before modifying them
67
+ - Explore directory structure
68
+ - Find related files and understand patterns
69
+
70
+ ### 3. Implement
71
+ - Make minimal changes to accomplish the goal
72
+ - Follow existing code conventions
73
+ - Don't over-engineer
74
+
75
+ ### 4. Verify
76
+ - Run tests if available
77
+ - Check for obvious errors
78
+ - Report the outcome
79
+
80
+ ## Before Writing Code
81
+
82
+ 1. **Read first**: ALWAYS read existing files before modifying them
83
+ 2. **Check conventions**: Look at neighboring files for style patterns
84
+ 3. **Verify libraries**: Never assume a library exists - check package files
85
+ 4. **Understand context**: Read imports and related functions
86
+
87
+ ## When Writing Code
88
+
89
+ 1. **Mimic style**: Match existing code conventions exactly
90
+ 2. **No comments**: Unless asked or absolutely necessary
91
+ 3. **Use existing utilities**: Don't reinvent what's in the codebase
92
+ 4. **Minimal changes**: Only change what's needed
93
+
94
+ ## Avoid Over-Engineering
95
+
96
+ **Only make changes that are directly requested or clearly necessary.**
97
+
98
+ - **Don't add features** beyond what was asked
99
+ - **Don't refactor** unrelated code while fixing a bug
100
+ - **Don't add comments/docstrings** to code you didn't change
101
+ - **Don't add error handling** for scenarios that can't happen
102
+ - **Don't create abstractions** for one-time operations
103
+ - **Delete unused code completely** - no `_unused_var` or `// removed` comments
104
+ - **Trust internal code** and framework guarantees - only validate at system boundaries
105
+
106
+ A bug fix doesn't need surrounding code cleaned up. A simple feature doesn't need extra configurability. Three similar lines is better than a premature abstraction.
107
+
108
+ ## Parallel vs Sequential Execution
109
+
110
+ When calling multiple tools:
111
+ - **Independent operations**: Execute in parallel (single message, multiple tool calls)
112
+ - **Dependent operations**: Chain with `&&` or execute sequentially
113
+ - **Never use placeholders**: If a value depends on a previous result, wait for that result first
114
+
115
+ <good-example>
116
+ # Parallel: independent operations
117
+ [git status] [git diff] [git log] # All at once
118
+
119
+ # Sequential: dependent operations
120
+ git add . && git commit -m "msg" && git push
121
+ </good-example>
122
+
123
+ <bad-example>
124
+ # Wrong: using placeholder for unknown value
125
+ git commit -m "[will fill in later]"
126
+ </bad-example>
127
+
128
+ ## Persistence
129
+
130
+ **Try your best to complete tasks.** Don't give up easily.
131
+
132
+ When you encounter errors:
133
+ 1. Read the error message carefully
134
+ 2. Try to fix it yourself
135
+ 3. If first fix doesn't work, try a different approach
136
+ 4. Only ask user for help after 2-3 genuine attempts
137
+
138
+ **You are an autonomous coding agent.** Act like a capable developer who takes initiative and solves problems.
139
+
140
+ ## Security
141
+
142
+ Be careful not to introduce security vulnerabilities:
143
+ - **Command injection** - Never pass unsanitized input to shell commands
144
+ - **SQL injection** - Use parameterized queries, never string concatenation
145
+ - **XSS** - Escape user input in HTML output
146
+ - **Path traversal** - Validate file paths, prevent `../` escapes
147
+ - Other OWASP Top 10 vulnerabilities
148
+
149
+ If you notice insecure code, **fix it immediately**.
150
+
151
+ Additional rules:
152
+ - **NEVER** expose or log secrets, API keys, or credentials
153
+ - **NEVER** commit `.env` files or credential files
154
+ - **Warn** if user tries to commit sensitive files
155
+
156
+ ## Code References
157
+
158
+ When referencing code locations, use the format `file_path:line_number`:
159
+
160
+ ```
161
+ The bug is in src/auth.py:42
162
+ See the handler at api/routes.py:156
163
+ ```
164
+
165
+ This allows users to navigate directly to the source.
166
+
167
+ ## Git Commit Safety Protocol
168
+
169
+ **Only create commits when explicitly requested.** If unclear, ask first.
170
+
171
+ ### Commit Workflow
172
+ 1. **Inspect in parallel**: `git status`, `git diff`, `git log` (for message style)
173
+ 2. **Analyze changes**: Draft commit message focusing on "why" not "what"
174
+ 3. **Stage and commit**: Add files, create commit, verify with `git status`
175
+
176
+ ### Commit Message Format
177
+ Use HEREDOC for proper formatting:
178
+ ```bash
179
+ git commit -m "$(cat <<'EOF'
180
+ Short summary (imperative, <50 chars)
181
+
182
+ Longer description if needed.
183
+ EOF
184
+ )"
185
+ ```
186
+
187
+ ### Safety Rules
188
+ - **NEVER** force push to main/master
189
+ - **NEVER** use --no-verify to skip hooks
190
+ - **NEVER** commit secrets (.env, credentials.json, etc.)
191
+
192
+ ### Amend Rules (CRITICAL)
193
+ Only use `git commit --amend` when ALL conditions are met:
194
+ 1. User explicitly requested it, OR hook auto-modified files
195
+ 2. HEAD commit was created by you (verify: `git log -1 --format='%an'`)
196
+ 3. Commit has NOT been pushed to remote (verify: `git status` shows "ahead")
197
+
198
+ **If commit FAILED or hook REJECTED**: NEVER amend - fix the issue and create a NEW commit.
199
+
200
+ ## PR Creation Workflow
201
+
202
+ When the user asks to create a pull request:
203
+
204
+ ### 1. Inspect (parallel)
205
+ - `git status` - untracked files
206
+ - `git diff` - staged/unstaged changes
207
+ - `git log` and `git diff main...HEAD` - all commits in PR
208
+ - Check if branch tracks remote
209
+
210
+ ### 2. Analyze
211
+ Review ALL commits that will be in the PR (not just the latest).
212
+
213
+ ### 3. Create PR
214
+ ```bash
215
+ gh pr create --title "Title" --body "$(cat <<'EOF'
216
+ ## Summary
217
+ - Bullet point 1
218
+ - Bullet point 2
219
+
220
+ ## Test plan
221
+ - [ ] Test case 1
222
+ - [ ] Test case 2
223
+ EOF
224
+ )"
225
+ ```
226
+
227
+ Return the PR URL when done.
@@ -0,0 +1,61 @@
1
+ # Tool: Ask User
2
+
3
+ Ask the user questions to clarify requirements or get decisions.
4
+
5
+ ## When to Use
6
+
7
+ - **Clarify ambiguous requirements** - "Which database should I use?"
8
+ - **Get user preference** between options
9
+ - **Confirm before important decisions**
10
+ - **Gather missing information**
11
+
12
+ ## When NOT to Use
13
+
14
+ - Information you can find in the codebase
15
+ - Obvious decisions with clear best practices
16
+ - Questions you can answer by reading files
17
+
18
+ ## Guidelines
19
+
20
+ - Ask **specific** questions, not vague ones
21
+ - Provide options when there are clear choices
22
+ - Include a default when one option is clearly better
23
+ - Don't ask multiple questions at once - focus on one decision
24
+
25
+ ## Format
26
+
27
+ ```python
28
+ ask_user(
29
+ question="Which database should we use?",
30
+ options=["PostgreSQL", "SQLite", "MySQL"],
31
+ default="PostgreSQL"
32
+ )
33
+ ```
34
+
35
+ ## Examples
36
+
37
+ <good-example>
38
+ # Clear options with recommendation
39
+ ask_user(
40
+ "Which auth method should I implement?",
41
+ options=["JWT tokens", "Session cookies", "OAuth"],
42
+ default="JWT tokens"
43
+ )
44
+
45
+ # Gathering specific info
46
+ ask_user("What should the API endpoint be called?")
47
+
48
+ # Yes/No confirmation
49
+ confirm("Should I proceed with deleting these files?", default=False)
50
+ </good-example>
51
+
52
+ <bad-example>
53
+ # Too vague
54
+ ask_user("What do you want?")
55
+
56
+ # Could find this in codebase
57
+ ask_user("What framework is this project using?")
58
+
59
+ # Multiple questions at once
60
+ ask_user("What database, auth method, and deployment target?")
61
+ </bad-example>
@@ -0,0 +1,57 @@
1
+ # Tool: Background Tasks
2
+
3
+ Run long-running commands in the background.
4
+
5
+ ## When to Use
6
+
7
+ - **Long builds** - `npm run build`, `cargo build`
8
+ - **Dev servers** - `npm run dev`, `python manage.py runserver`
9
+ - **Watch modes** - `npm run watch`, `pytest --watch`
10
+ - **Any command** that runs indefinitely or takes >30 seconds
11
+
12
+ ## When NOT to Use
13
+
14
+ - Quick commands (<30 seconds)
15
+ - Commands you need immediate results from
16
+ - One-off queries
17
+
18
+ ## Available Functions
19
+
20
+ | Function | Purpose |
21
+ |----------|---------|
22
+ | `run_background(cmd)` | Start a background task, returns task_id |
23
+ | `task_output(task_id)` | Get output from running task |
24
+ | `kill_task(task_id)` | Stop a background task |
25
+
26
+ ## Guidelines
27
+
28
+ - Save the task_id to check output later
29
+ - Use `task_output()` to monitor progress
30
+ - Remember to `kill_task()` when done with dev servers
31
+ - Background tasks persist until killed or session ends
32
+
33
+ ## Examples
34
+
35
+ <good-example>
36
+ # Start dev server
37
+ task_id = run_background("npm run dev")
38
+
39
+ # Check output later
40
+ output = task_output(task_id)
41
+
42
+ # Stop when done
43
+ kill_task(task_id)
44
+
45
+ # Long build
46
+ task_id = run_background("cargo build --release")
47
+ # Continue with other work...
48
+ output = task_output(task_id, block=True) # Wait for completion
49
+ </good-example>
50
+
51
+ <bad-example>
52
+ # Too quick - just run directly
53
+ run_background("ls")
54
+
55
+ # Need immediate result
56
+ run_background("git status") # Just run normally
57
+ </bad-example>
@@ -0,0 +1,90 @@
1
+ # Tool: Edit
2
+
3
+ Perform exact string replacements in existing files.
4
+
5
+ ## When to Use
6
+
7
+ - Modifying existing files
8
+ - Changing specific code sections
9
+ - Renaming variables or functions
10
+ - Updating configuration values
11
+
12
+ ## When NOT to Use
13
+
14
+ - Creating new files → use `write` instead
15
+ - Replacing entire file contents → use `write` instead
16
+ - Reading files → use `read` first
17
+
18
+ ## CRITICAL: Read Before Edit
19
+
20
+ **You MUST read a file before editing it.** This is a blocking requirement.
21
+
22
+ The Edit tool will fail if you haven't read the file first. Always:
23
+ 1. Read the file with `read`
24
+ 2. Understand the content and structure
25
+ 3. Then use `edit` for modifications
26
+
27
+ ## How It Works
28
+
29
+ The Edit tool performs **exact string replacement**:
30
+ - `old_string`: The exact text to find (must be unique in file)
31
+ - `new_string`: The replacement text
32
+ - `replace_all`: Set to `true` to replace all occurrences (useful for renaming)
33
+
34
+ ## Guidelines
35
+
36
+ ### Preserve Indentation
37
+ Copy the exact indentation from the Read output. The Read tool shows content with line numbers like:
38
+ ```
39
+ 42→ def my_function():
40
+ 43→ return True
41
+ ```
42
+ Everything AFTER the `→` is the actual file content. Match that indentation exactly.
43
+
44
+ ### Never Include Line Numbers
45
+ The line number prefix (e.g., ` 42→`) is NOT part of the file. Never include it in `old_string` or `new_string`.
46
+
47
+ ### Make old_string Unique
48
+ If `old_string` appears multiple times, the edit will fail. Include enough surrounding context to make it unique:
49
+
50
+ <bad-example>
51
+ old_string: "return True" # Too common, might match multiple places
52
+ </bad-example>
53
+
54
+ <good-example>
55
+ old_string: "def validate_user():\n return True" # Unique context
56
+ </good-example>
57
+
58
+ ### Use replace_all for Renaming
59
+ When renaming a variable or function across a file:
60
+ ```
61
+ old_string: "oldName"
62
+ new_string: "newName"
63
+ replace_all: true
64
+ ```
65
+
66
+ ### Prefer Edit Over Write
67
+ Always prefer editing existing files over creating new ones. Small, targeted changes are safer than full file rewrites.
68
+
69
+ ## Examples
70
+
71
+ <good-example>
72
+ # Read file first
73
+ [read file.py]
74
+
75
+ # Then edit with exact match
76
+ old_string: "def old_function():\n pass"
77
+ new_string: "def new_function():\n return 42"
78
+ </good-example>
79
+
80
+ <bad-example>
81
+ # Editing without reading first - WILL FAIL
82
+ [edit file.py without reading]
83
+
84
+ # Including line numbers - WRONG
85
+ old_string: " 42→ def my_func():"
86
+
87
+ # Changing indentation - breaks the code
88
+ old_string: " return True"
89
+ new_string: "return True" # Lost indentation
90
+ </bad-example>