connectonion 0.6.2__py3-none-any.whl → 0.6.4__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 (410) 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 +5 -0
  24. connectonion/cli/co_ai/plugins/system_reminder.py +154 -0
  25. connectonion/cli/co_ai/prompts/agents/explore.md +79 -0
  26. connectonion/cli/co_ai/prompts/agents/plan.md +60 -0
  27. connectonion/cli/co_ai/prompts/assembler.py +303 -0
  28. connectonion/cli/{docs/co-vibecoding-principles-docs-contexts-all-in-one.md → co_ai/prompts/connectonion/README.md} +26 -0
  29. connectonion/cli/co_ai/prompts/connectonion/api.md +457 -0
  30. connectonion/cli/co_ai/prompts/connectonion/cli/README.md +805 -0
  31. connectonion/cli/co_ai/prompts/connectonion/cli/auth.md +46 -0
  32. connectonion/cli/co_ai/prompts/connectonion/cli/browser.md +235 -0
  33. connectonion/cli/co_ai/prompts/connectonion/cli/copy.md +184 -0
  34. connectonion/cli/co_ai/prompts/connectonion/cli/create.md +335 -0
  35. connectonion/cli/co_ai/prompts/connectonion/cli/init.md +431 -0
  36. connectonion/cli/co_ai/prompts/connectonion/co-directory-structure.md +214 -0
  37. connectonion/cli/co_ai/prompts/connectonion/concepts/agent.md +1078 -0
  38. connectonion/cli/co_ai/prompts/connectonion/concepts/events.md +816 -0
  39. connectonion/cli/co_ai/prompts/connectonion/concepts/llm_do.md +256 -0
  40. connectonion/cli/co_ai/prompts/connectonion/concepts/max_iterations.md +362 -0
  41. connectonion/cli/co_ai/prompts/connectonion/concepts/models.md +641 -0
  42. connectonion/cli/co_ai/prompts/connectonion/concepts/plugins.md +100 -0
  43. connectonion/cli/co_ai/prompts/connectonion/concepts/prompts.md +122 -0
  44. connectonion/cli/co_ai/prompts/connectonion/concepts/tools.md +512 -0
  45. connectonion/cli/co_ai/prompts/connectonion/concepts/transcribe.md +156 -0
  46. connectonion/cli/co_ai/prompts/connectonion/concepts/trust.md +291 -0
  47. connectonion/cli/co_ai/prompts/connectonion/debug/README.md +18 -0
  48. connectonion/cli/co_ai/prompts/connectonion/debug/auto_debug.md +1026 -0
  49. connectonion/cli/co_ai/prompts/connectonion/debug/console.md +129 -0
  50. connectonion/cli/co_ai/prompts/connectonion/debug/eval-format.md +178 -0
  51. connectonion/cli/co_ai/prompts/connectonion/debug/eval.md +230 -0
  52. connectonion/cli/co_ai/prompts/connectonion/debug/exceptions.md +307 -0
  53. connectonion/cli/co_ai/prompts/connectonion/debug/log.md +117 -0
  54. connectonion/cli/co_ai/prompts/connectonion/debug/xray.md +215 -0
  55. connectonion/cli/co_ai/prompts/connectonion/design-decisions/001-choosing-input-method.md +202 -0
  56. connectonion/cli/co_ai/prompts/connectonion/design-decisions/002-choosing-llm-function-name.md +202 -0
  57. connectonion/cli/co_ai/prompts/connectonion/design-decisions/003-choosing-trust-keyword.md +141 -0
  58. connectonion/cli/co_ai/prompts/connectonion/design-decisions/004-cli-create-flow.md +117 -0
  59. connectonion/cli/co_ai/prompts/connectonion/design-decisions/005-designing-agent-network-protocol.md +503 -0
  60. connectonion/cli/co_ai/prompts/connectonion/design-decisions/006-agent-address-format.md +305 -0
  61. connectonion/cli/co_ai/prompts/connectonion/design-decisions/007-authentication-backend-design.md +240 -0
  62. connectonion/cli/co_ai/prompts/connectonion/design-decisions/008-naming-is-hard.md +228 -0
  63. connectonion/cli/co_ai/prompts/connectonion/design-decisions/009-why-connect-function.md +167 -0
  64. connectonion/cli/co_ai/prompts/connectonion/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
  65. connectonion/cli/co_ai/prompts/connectonion/design-decisions/011-global-config-identity-management.md +357 -0
  66. connectonion/cli/co_ai/prompts/connectonion/design-decisions/012-tool-execution-separation.md +259 -0
  67. connectonion/cli/co_ai/prompts/connectonion/design-decisions/013-debug-and-logging-design.md +253 -0
  68. connectonion/cli/co_ai/prompts/connectonion/design-decisions/014-hook-system-design.md +510 -0
  69. connectonion/cli/co_ai/prompts/connectonion/design-decisions/015-interactive-auto-debug-design.md +837 -0
  70. connectonion/cli/co_ai/prompts/connectonion/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
  71. connectonion/cli/co_ai/prompts/connectonion/design-decisions/017-session-logging-and-eval-format.md +120 -0
  72. connectonion/cli/co_ai/prompts/connectonion/design-decisions/018-event-api-naming.md +274 -0
  73. connectonion/cli/co_ai/prompts/connectonion/design-decisions/019-agent-lifecycle-design.md +655 -0
  74. connectonion/cli/co_ai/prompts/connectonion/design-decisions/020-trust-system-and-network-architecture.md +503 -0
  75. connectonion/cli/co_ai/prompts/connectonion/design-decisions/021-task-storage-jsonl-design.md +496 -0
  76. connectonion/cli/co_ai/prompts/connectonion/design-decisions/022-raw-asgi-implementation.md +273 -0
  77. connectonion/cli/co_ai/prompts/connectonion/examples/agent_reasoning.md +62 -0
  78. connectonion/cli/co_ai/prompts/connectonion/examples/atomic_tools.md +24 -0
  79. connectonion/cli/co_ai/prompts/connectonion/examples/load_guide.md +18 -0
  80. connectonion/cli/co_ai/prompts/connectonion/examples.md +0 -0
  81. connectonion/cli/co_ai/prompts/connectonion/hook-system-options.md +364 -0
  82. connectonion/cli/co_ai/prompts/connectonion/index.md +162 -0
  83. connectonion/cli/co_ai/prompts/connectonion/integrations/README.md +12 -0
  84. connectonion/cli/co_ai/prompts/connectonion/integrations/auth.md +450 -0
  85. connectonion/cli/co_ai/prompts/connectonion/integrations/google.md +431 -0
  86. connectonion/cli/co_ai/prompts/connectonion/integrations/microsoft.md +370 -0
  87. connectonion/cli/co_ai/prompts/connectonion/network/README.md +14 -0
  88. connectonion/cli/co_ai/prompts/connectonion/network/connect.md +543 -0
  89. connectonion/cli/co_ai/prompts/connectonion/network/connection.md +538 -0
  90. connectonion/cli/co_ai/prompts/connectonion/network/deploy.md +123 -0
  91. connectonion/cli/co_ai/prompts/connectonion/network/host.md +1049 -0
  92. connectonion/cli/co_ai/prompts/connectonion/network/protocol/agent-relay-protocol.md +495 -0
  93. connectonion/cli/co_ai/prompts/connectonion/network/protocol/announce-message.md +115 -0
  94. connectonion/cli/co_ai/prompts/connectonion/principles.md +124 -0
  95. connectonion/cli/co_ai/prompts/connectonion/quickstart.md +261 -0
  96. connectonion/cli/co_ai/prompts/connectonion/roadmap.md +81 -0
  97. connectonion/cli/co_ai/prompts/connectonion/templates/README.md +77 -0
  98. connectonion/cli/co_ai/prompts/connectonion/templates/meta-agent.md +152 -0
  99. connectonion/cli/co_ai/prompts/connectonion/templates/minimal.md +105 -0
  100. connectonion/cli/co_ai/prompts/connectonion/templates/playwright.md +130 -0
  101. connectonion/cli/co_ai/prompts/connectonion/templates/web-research.md +144 -0
  102. connectonion/cli/co_ai/prompts/connectonion/tui/README.md +95 -0
  103. connectonion/cli/co_ai/prompts/connectonion/tui/chat.md +181 -0
  104. connectonion/cli/co_ai/prompts/connectonion/tui/divider.md +63 -0
  105. connectonion/cli/co_ai/prompts/connectonion/tui/dropdown.md +83 -0
  106. connectonion/cli/co_ai/prompts/connectonion/tui/footer.md +44 -0
  107. connectonion/cli/co_ai/prompts/connectonion/tui/fuzzy.md +68 -0
  108. connectonion/cli/co_ai/prompts/connectonion/tui/input.md +84 -0
  109. connectonion/cli/co_ai/prompts/connectonion/tui/keys.md +77 -0
  110. connectonion/cli/co_ai/prompts/connectonion/tui/pick.md +71 -0
  111. connectonion/cli/co_ai/prompts/connectonion/tui/providers.md +89 -0
  112. connectonion/cli/co_ai/prompts/connectonion/tui/status_bar.md +67 -0
  113. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/README.md +156 -0
  114. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/calendar_plugin.md +68 -0
  115. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/eval.md +89 -0
  116. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/gmail_plugin.md +68 -0
  117. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/image_result_formatter.md +74 -0
  118. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/re_act.md +86 -0
  119. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/shell_approval.md +69 -0
  120. connectonion/cli/co_ai/prompts/connectonion/useful_tools/README.md +81 -0
  121. connectonion/cli/co_ai/prompts/connectonion/useful_tools/diff_writer.md +138 -0
  122. connectonion/cli/co_ai/prompts/connectonion/useful_tools/get_emails.md +499 -0
  123. connectonion/cli/co_ai/prompts/connectonion/useful_tools/gmail.md +135 -0
  124. connectonion/cli/co_ai/prompts/connectonion/useful_tools/google_calendar.md +106 -0
  125. connectonion/cli/co_ai/prompts/connectonion/useful_tools/memory.md +486 -0
  126. connectonion/cli/co_ai/prompts/connectonion/useful_tools/microsoft_calendar.md +106 -0
  127. connectonion/cli/co_ai/prompts/connectonion/useful_tools/outlook.md +120 -0
  128. connectonion/cli/co_ai/prompts/connectonion/useful_tools/send_email.md +403 -0
  129. connectonion/cli/co_ai/prompts/connectonion/useful_tools/shell.md +95 -0
  130. connectonion/cli/co_ai/prompts/connectonion/useful_tools/slash_command.md +96 -0
  131. connectonion/cli/co_ai/prompts/connectonion/useful_tools/terminal.md +97 -0
  132. connectonion/cli/co_ai/prompts/connectonion/useful_tools/todo_list.md +252 -0
  133. connectonion/cli/co_ai/prompts/connectonion/useful_tools/web_fetch.md +130 -0
  134. connectonion/cli/co_ai/prompts/connectonion/vibe-coding-guide.md +97 -0
  135. connectonion/cli/co_ai/prompts/connectonion/windows-support.md +258 -0
  136. connectonion/cli/co_ai/prompts/main.md +247 -0
  137. connectonion/cli/co_ai/prompts/summarization.md +55 -0
  138. connectonion/cli/co_ai/prompts/system-reminders/agent.md +23 -0
  139. connectonion/cli/co_ai/prompts/system-reminders/plan_mode.md +13 -0
  140. connectonion/cli/co_ai/prompts/system-reminders/security.md +14 -0
  141. connectonion/cli/co_ai/prompts/system-reminders/simplicity.md +14 -0
  142. connectonion/cli/co_ai/prompts/tools/ask_user.md +61 -0
  143. connectonion/cli/co_ai/prompts/tools/background.md +57 -0
  144. connectonion/cli/co_ai/prompts/tools/edit.md +90 -0
  145. connectonion/cli/co_ai/prompts/tools/glob.md +52 -0
  146. connectonion/cli/co_ai/prompts/tools/grep.md +55 -0
  147. connectonion/cli/co_ai/prompts/tools/plan_mode.md +80 -0
  148. connectonion/cli/co_ai/prompts/tools/read.md +40 -0
  149. connectonion/cli/co_ai/prompts/tools/shell.md +67 -0
  150. connectonion/cli/co_ai/prompts/tools/task.md +51 -0
  151. connectonion/cli/co_ai/prompts/tools/todo.md +139 -0
  152. connectonion/cli/co_ai/prompts/tools/write.md +47 -0
  153. connectonion/cli/co_ai/prompts/workflow.md +89 -0
  154. connectonion/cli/co_ai/sessions.py +110 -0
  155. connectonion/cli/co_ai/skills/__init__.py +37 -0
  156. connectonion/cli/co_ai/skills/builtin/commit/SKILL.md +63 -0
  157. connectonion/cli/co_ai/skills/builtin/review-pr/SKILL.md +76 -0
  158. connectonion/cli/co_ai/skills/loader.py +166 -0
  159. connectonion/cli/co_ai/skills/tool.py +46 -0
  160. connectonion/cli/co_ai/tools/__init__.py +92 -0
  161. connectonion/cli/co_ai/tools/ask_user.py +35 -0
  162. connectonion/cli/co_ai/tools/background.py +201 -0
  163. connectonion/cli/co_ai/tools/diff_writer.py +291 -0
  164. connectonion/cli/co_ai/tools/edit.py +89 -0
  165. connectonion/cli/co_ai/tools/glob.py +84 -0
  166. connectonion/cli/co_ai/tools/grep.py +158 -0
  167. connectonion/cli/co_ai/tools/load_guide.py +23 -0
  168. connectonion/cli/co_ai/tools/multi_edit.py +116 -0
  169. connectonion/cli/co_ai/tools/plan_mode.py +169 -0
  170. connectonion/cli/co_ai/tools/read.py +61 -0
  171. connectonion/cli/co_ai/tools/task.py +59 -0
  172. connectonion/cli/co_ai/tools/todo_list.py +159 -0
  173. connectonion/cli/co_ai/tools/write.py +126 -0
  174. connectonion/cli/commands/__init__.py +11 -1
  175. connectonion/cli/commands/ai_commands.py +34 -0
  176. connectonion/cli/commands/copy_commands.py +55 -6
  177. connectonion/cli/commands/create.py +20 -17
  178. connectonion/cli/commands/init.py +19 -22
  179. connectonion/cli/commands/project_cmd_lib.py +15 -0
  180. connectonion/cli/main.py +11 -0
  181. connectonion/console.py +15 -1
  182. connectonion/core/__init__.py +10 -1
  183. connectonion/core/agent.py +37 -16
  184. connectonion/core/exceptions.py +74 -0
  185. connectonion/core/llm.py +54 -6
  186. connectonion/core/tool_executor.py +32 -31
  187. connectonion/core/tool_factory.py +47 -10
  188. connectonion/debug/__init__.py +10 -1
  189. connectonion/debug/debug_explainer/__init__.py +10 -1
  190. connectonion/debug/execution_analyzer/__init__.py +10 -1
  191. connectonion/debug/execution_analyzer/execution_analysis.py +5 -2
  192. connectonion/debug/runtime_inspector/__init__.py +10 -1
  193. connectonion/docs/.package-ignore +6 -0
  194. connectonion/docs/README.md +2036 -0
  195. connectonion/docs/api.md +457 -0
  196. connectonion/docs/archive/001-ai-agent-is-just-prompt-plus-function.md +249 -0
  197. connectonion/docs/archive/README.md +53 -0
  198. connectonion/docs/archive/archive/consolidation-plan.md +72 -0
  199. connectonion/docs/archive/archive/core-principles-extracted.md +239 -0
  200. connectonion/docs/archive/archive/master-principles.md +222 -0
  201. connectonion/docs/archive/archive/principles.md +293 -0
  202. connectonion/docs/archive/archive/simplicity-principles.md +221 -0
  203. connectonion/docs/archive/attack-defense-insights.md +410 -0
  204. connectonion/docs/archive/business-model.md +305 -0
  205. connectonion/docs/archive/core-principles-unified.md +190 -0
  206. connectonion/docs/archive/discussion-journey.md +178 -0
  207. connectonion/docs/archive/economic-analysis.md +323 -0
  208. connectonion/docs/archive/features/01-share-and-find.md +256 -0
  209. connectonion/docs/archive/features/02-agent-authentication.md +93 -0
  210. connectonion/docs/archive/features/03-test-before-trust.md +71 -0
  211. connectonion/docs/archive/features/06-reliability-and-offline.md +197 -0
  212. connectonion/docs/archive/features/README.md +46 -0
  213. connectonion/docs/archive/features-roadmap.md +247 -0
  214. connectonion/docs/archive/mcp-comparison-insights.md +215 -0
  215. connectonion/docs/archive/migration-strategy.md +571 -0
  216. connectonion/docs/archive/mini-whitepaper.md +293 -0
  217. connectonion/docs/archive/network-protocol.md +394 -0
  218. connectonion/docs/archive/semantic-revolution.md +367 -0
  219. connectonion/docs/archive/technical-architecture.md +453 -0
  220. connectonion/docs/archive/the-semantic-insight.md +207 -0
  221. connectonion/docs/archive/threat-model.md +164 -0
  222. connectonion/docs/cli/README.md +805 -0
  223. connectonion/docs/cli/auth.md +46 -0
  224. connectonion/docs/cli/browser.md +235 -0
  225. connectonion/docs/cli/copy.md +232 -0
  226. connectonion/docs/cli/create.md +335 -0
  227. connectonion/docs/cli/init.md +431 -0
  228. connectonion/docs/co-directory-structure.md +214 -0
  229. connectonion/docs/concepts/agent.md +1078 -0
  230. connectonion/docs/concepts/events.md +699 -0
  231. connectonion/docs/concepts/llm_do.md +256 -0
  232. connectonion/docs/concepts/max_iterations.md +362 -0
  233. connectonion/docs/concepts/models.md +641 -0
  234. connectonion/docs/concepts/plugins.md +101 -0
  235. connectonion/docs/concepts/prompts.md +122 -0
  236. connectonion/docs/concepts/session.md +428 -0
  237. connectonion/docs/concepts/tools.md +512 -0
  238. connectonion/docs/concepts/transcribe.md +156 -0
  239. connectonion/docs/concepts/trust.md +291 -0
  240. connectonion/docs/connectonion.md +1256 -0
  241. connectonion/docs/debug/README.md +18 -0
  242. connectonion/docs/debug/auto_debug.md +1026 -0
  243. connectonion/docs/debug/console.md +129 -0
  244. connectonion/docs/debug/eval-format.md +178 -0
  245. connectonion/docs/debug/eval.md +230 -0
  246. connectonion/docs/debug/exceptions.md +307 -0
  247. connectonion/docs/debug/log.md +117 -0
  248. connectonion/docs/debug/xray.md +215 -0
  249. connectonion/docs/design-decisions/001-choosing-input-method.md +202 -0
  250. connectonion/docs/design-decisions/002-choosing-llm-function-name.md +202 -0
  251. connectonion/docs/design-decisions/003-choosing-trust-keyword.md +141 -0
  252. connectonion/docs/design-decisions/004-cli-create-flow.md +117 -0
  253. connectonion/docs/design-decisions/005-designing-agent-network-protocol.md +503 -0
  254. connectonion/docs/design-decisions/006-agent-address-format.md +305 -0
  255. connectonion/docs/design-decisions/007-authentication-backend-design.md +240 -0
  256. connectonion/docs/design-decisions/008-naming-is-hard.md +228 -0
  257. connectonion/docs/design-decisions/009-why-connect-function.md +167 -0
  258. connectonion/docs/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
  259. connectonion/docs/design-decisions/011-global-config-identity-management.md +357 -0
  260. connectonion/docs/design-decisions/012-tool-execution-separation.md +259 -0
  261. connectonion/docs/design-decisions/013-debug-and-logging-design.md +253 -0
  262. connectonion/docs/design-decisions/014-hook-system-design.md +510 -0
  263. connectonion/docs/design-decisions/015-interactive-auto-debug-design.md +837 -0
  264. connectonion/docs/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
  265. connectonion/docs/design-decisions/017-session-logging-and-eval-format.md +120 -0
  266. connectonion/docs/design-decisions/018-event-api-naming.md +274 -0
  267. connectonion/docs/design-decisions/019-agent-lifecycle-design.md +655 -0
  268. connectonion/docs/design-decisions/020-trust-system-and-network-architecture.md +503 -0
  269. connectonion/docs/design-decisions/021-task-storage-jsonl-design.md +496 -0
  270. connectonion/docs/design-decisions/022-raw-asgi-implementation.md +273 -0
  271. connectonion/docs/examples.md +0 -0
  272. connectonion/docs/hook-system-options.md +364 -0
  273. connectonion/docs/integrations/README.md +12 -0
  274. connectonion/docs/integrations/auth.md +450 -0
  275. connectonion/docs/integrations/google.md +431 -0
  276. connectonion/docs/integrations/microsoft.md +370 -0
  277. connectonion/docs/network/README.md +14 -0
  278. connectonion/docs/network/connect.md +629 -0
  279. connectonion/docs/network/deploy.md +124 -0
  280. connectonion/docs/network/host.md +1087 -0
  281. connectonion/docs/network/io.md +538 -0
  282. connectonion/docs/network/protocol/agent-relay-protocol.md +495 -0
  283. connectonion/docs/network/protocol/announce-message.md +115 -0
  284. connectonion/docs/principles.md +124 -0
  285. connectonion/docs/quickstart.md +261 -0
  286. connectonion/docs/roadmap.md +81 -0
  287. connectonion/docs/templates/README.md +77 -0
  288. connectonion/docs/templates/meta-agent.md +152 -0
  289. connectonion/docs/templates/minimal.md +105 -0
  290. connectonion/docs/templates/playwright.md +130 -0
  291. connectonion/docs/templates/web-research.md +144 -0
  292. connectonion/docs/tui/README.md +95 -0
  293. connectonion/docs/tui/chat.md +181 -0
  294. connectonion/docs/tui/divider.md +63 -0
  295. connectonion/docs/tui/dropdown.md +83 -0
  296. connectonion/docs/tui/footer.md +44 -0
  297. connectonion/docs/tui/fuzzy.md +68 -0
  298. connectonion/docs/tui/input.md +84 -0
  299. connectonion/docs/tui/keys.md +77 -0
  300. connectonion/docs/tui/pick.md +71 -0
  301. connectonion/docs/tui/providers.md +89 -0
  302. connectonion/docs/tui/status_bar.md +67 -0
  303. connectonion/docs/useful_plugins/README.md +160 -0
  304. connectonion/docs/useful_plugins/calendar_plugin.md +68 -0
  305. connectonion/docs/useful_plugins/eval.md +89 -0
  306. connectonion/docs/useful_plugins/gmail_plugin.md +68 -0
  307. connectonion/docs/useful_plugins/image_result_formatter.md +74 -0
  308. connectonion/docs/useful_plugins/re_act.md +86 -0
  309. connectonion/docs/useful_plugins/shell_approval.md +69 -0
  310. connectonion/docs/useful_plugins/system_reminder.md +210 -0
  311. connectonion/docs/useful_plugins/tool_approval.md +139 -0
  312. connectonion/docs/useful_prompts/README.md +127 -0
  313. connectonion/docs/useful_prompts/coding_agent.md +214 -0
  314. connectonion/docs/useful_tools/README.md +81 -0
  315. connectonion/docs/useful_tools/ask_user.md +103 -0
  316. connectonion/docs/useful_tools/diff_writer.md +158 -0
  317. connectonion/docs/useful_tools/get_emails.md +519 -0
  318. connectonion/docs/useful_tools/gmail.md +155 -0
  319. connectonion/docs/useful_tools/google_calendar.md +126 -0
  320. connectonion/docs/useful_tools/memory.md +506 -0
  321. connectonion/docs/useful_tools/microsoft_calendar.md +126 -0
  322. connectonion/docs/useful_tools/outlook.md +140 -0
  323. connectonion/docs/useful_tools/send_email.md +423 -0
  324. connectonion/docs/useful_tools/shell.md +115 -0
  325. connectonion/docs/useful_tools/slash_command.md +116 -0
  326. connectonion/docs/useful_tools/terminal.md +115 -0
  327. connectonion/docs/useful_tools/todo_list.md +272 -0
  328. connectonion/docs/useful_tools/web_fetch.md +150 -0
  329. connectonion/docs/vibe-coding-guide.md +97 -0
  330. connectonion/docs/windows-support.md +258 -0
  331. connectonion/logger.py +3 -3
  332. connectonion/network/__init__.py +19 -6
  333. connectonion/network/asgi/__init__.py +81 -0
  334. connectonion/network/asgi/http.py +205 -0
  335. connectonion/network/asgi/websocket.py +217 -0
  336. connectonion/network/connect.py +232 -185
  337. connectonion/network/host/__init__.py +59 -0
  338. connectonion/network/host/auth.py +191 -0
  339. connectonion/network/host/routes.py +135 -0
  340. connectonion/network/host/server.py +289 -0
  341. connectonion/network/host/session.py +78 -0
  342. connectonion/network/io/__init__.py +21 -0
  343. connectonion/network/{connection.py → io/base.py} +17 -42
  344. connectonion/network/io/websocket.py +55 -0
  345. connectonion/network/relay.py +37 -16
  346. connectonion/network/trust/__init__.py +30 -0
  347. connectonion/network/trust/factory.py +138 -0
  348. connectonion/network/{trust_agents.py → trust/prompts.py} +3 -3
  349. connectonion/network/{trust_functions.py → trust/tools.py} +2 -2
  350. connectonion/prompt_files/__init__.py +11 -1
  351. connectonion/prompt_files/react_acknowledge.md +26 -0
  352. connectonion/prompts.py +10 -1
  353. connectonion/tui/chat.py +10 -1
  354. connectonion/tui/divider.py +10 -1
  355. connectonion/tui/dropdown.py +10 -1
  356. connectonion/tui/footer.py +8 -0
  357. connectonion/tui/fuzzy.py +11 -1
  358. connectonion/tui/input.py +118 -70
  359. connectonion/tui/keys.py +133 -6
  360. connectonion/tui/providers.py +11 -1
  361. connectonion/tui/status_bar.py +10 -1
  362. connectonion/useful_events_handlers/__init__.py +8 -0
  363. connectonion/useful_events_handlers/reflect.py +19 -4
  364. connectonion/useful_plugins/__init__.py +3 -1
  365. connectonion/useful_plugins/eval.py +2 -2
  366. connectonion/useful_plugins/gmail_plugin.py +3 -3
  367. connectonion/useful_plugins/image_result_formatter.py +3 -3
  368. connectonion/useful_plugins/re_act.py +114 -28
  369. connectonion/useful_plugins/shell_approval.py +2 -2
  370. connectonion/useful_plugins/system_reminder.py +103 -0
  371. connectonion/useful_plugins/tool_approval.py +233 -0
  372. connectonion/useful_plugins/ui_stream.py +18 -133
  373. connectonion/useful_prompts/README.md +61 -0
  374. connectonion/useful_prompts/__init__.py +45 -0
  375. connectonion/useful_prompts/coding_agent/README.md +106 -0
  376. connectonion/useful_prompts/coding_agent/assembler.py +123 -0
  377. connectonion/useful_prompts/coding_agent/prompts/main.md +227 -0
  378. connectonion/useful_prompts/coding_agent/prompts/tools/ask_user.md +61 -0
  379. connectonion/useful_prompts/coding_agent/prompts/tools/background.md +57 -0
  380. connectonion/useful_prompts/coding_agent/prompts/tools/edit.md +90 -0
  381. connectonion/useful_prompts/coding_agent/prompts/tools/glob.md +52 -0
  382. connectonion/useful_prompts/coding_agent/prompts/tools/grep.md +55 -0
  383. connectonion/useful_prompts/coding_agent/prompts/tools/plan_mode.md +80 -0
  384. connectonion/useful_prompts/coding_agent/prompts/tools/read.md +40 -0
  385. connectonion/useful_prompts/coding_agent/prompts/tools/shell.md +67 -0
  386. connectonion/useful_prompts/coding_agent/prompts/tools/task.md +51 -0
  387. connectonion/useful_prompts/coding_agent/prompts/tools/todo.md +139 -0
  388. connectonion/useful_prompts/coding_agent/prompts/tools/write.md +48 -0
  389. connectonion/useful_prompts/system-reminders/security-warning.md +14 -0
  390. connectonion/useful_prompts/system-reminders/test-reminder.md +11 -0
  391. connectonion/useful_tools/__init__.py +31 -4
  392. connectonion/useful_tools/ask_user.py +35 -0
  393. connectonion/useful_tools/bash.py +69 -0
  394. connectonion/useful_tools/diff_writer.py +186 -94
  395. connectonion/useful_tools/edit.py +102 -0
  396. connectonion/useful_tools/glob_files.py +97 -0
  397. connectonion/useful_tools/grep_files.py +171 -0
  398. connectonion/useful_tools/multi_edit.py +116 -0
  399. connectonion/useful_tools/read_file.py +73 -0
  400. connectonion/useful_tools/shell.py +50 -45
  401. connectonion/useful_tools/write_file.py +129 -0
  402. {connectonion-0.6.2.dist-info → connectonion-0.6.4.dist-info}/METADATA +10 -3
  403. connectonion-0.6.4.dist-info/RECORD +472 -0
  404. connectonion/network/asgi.py +0 -407
  405. connectonion/network/host.py +0 -616
  406. connectonion/network/trust.py +0 -166
  407. connectonion-0.6.2.dist-info/RECORD +0 -129
  408. /connectonion/cli/{docs → co_ai/prompts/connectonion}/connectonion.md +0 -0
  409. {connectonion-0.6.2.dist-info → connectonion-0.6.4.dist-info}/WHEEL +0 -0
  410. {connectonion-0.6.2.dist-info → connectonion-0.6.4.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,126 @@
1
+ # MicrosoftCalendar
2
+
3
+ Microsoft Calendar integration via Microsoft Graph API.
4
+
5
+ ## Usage
6
+
7
+ **Option 1: Import directly**
8
+
9
+ ```python
10
+ from connectonion import MicrosoftCalendar
11
+
12
+ agent = Agent("assistant", tools=[MicrosoftCalendar()])
13
+ ```
14
+
15
+ **Option 2: Copy and customize**
16
+
17
+ ```bash
18
+ co copy microsoft_calendar
19
+ ```
20
+
21
+ ```python
22
+ from tools.microsoft_calendar import MicrosoftCalendar # Your local copy
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ```python
28
+ from connectonion import Agent, MicrosoftCalendar
29
+
30
+ calendar = MicrosoftCalendar()
31
+ agent = Agent("assistant", tools=[calendar])
32
+
33
+ agent.input("What meetings do I have today?")
34
+ ```
35
+
36
+ ## Setup
37
+
38
+ Requires Microsoft OAuth authorization:
39
+
40
+ ```bash
41
+ co auth microsoft
42
+ ```
43
+
44
+ ## Methods
45
+
46
+ ### Reading Events
47
+
48
+ ```python
49
+ # List upcoming events
50
+ calendar.list_events(days_ahead=7, max_results=10)
51
+
52
+ # Get today's events
53
+ calendar.get_today_events()
54
+
55
+ # Get specific event
56
+ calendar.get_event(event_id="abc123")
57
+
58
+ # Get upcoming meetings
59
+ calendar.get_upcoming_meetings(days_ahead=7)
60
+
61
+ # Find free slots
62
+ calendar.find_free_slots(date="2024-01-15", duration_minutes=30)
63
+
64
+ # Check availability
65
+ calendar.check_availability(datetime_str="2024-01-15 14:00")
66
+ ```
67
+
68
+ ### Creating Events
69
+
70
+ ```python
71
+ # Create event
72
+ calendar.create_event(
73
+ title="Team Meeting",
74
+ start_time="2024-01-15 14:00",
75
+ end_time="2024-01-15 15:00",
76
+ description="Weekly sync",
77
+ attendees="alice@example.com,bob@example.com",
78
+ location="Conference Room A"
79
+ )
80
+
81
+ # Create Teams meeting
82
+ calendar.create_teams_meeting(
83
+ title="Video Call",
84
+ start_time="2024-01-15 14:00",
85
+ end_time="2024-01-15 15:00",
86
+ attendees="alice@example.com",
87
+ description="Quick sync"
88
+ )
89
+ ```
90
+
91
+ ### Managing Events
92
+
93
+ ```python
94
+ # Update event
95
+ calendar.update_event(
96
+ event_id="abc123",
97
+ title="Updated Title",
98
+ start_time="2024-01-15 15:00"
99
+ )
100
+
101
+ # Delete event
102
+ calendar.delete_event(event_id="abc123")
103
+ ```
104
+
105
+ ## vs GoogleCalendar
106
+
107
+ | Feature | MicrosoftCalendar | GoogleCalendar |
108
+ |---------|------------------|----------------|
109
+ | Video calls | Teams | Google Meet |
110
+ | Auth | `co auth microsoft` | `co auth google` |
111
+ | API | Microsoft Graph | Google Calendar API |
112
+
113
+ ## Customizing
114
+
115
+ Need to modify MicrosoftCalendar's behavior? Copy the source to your project:
116
+
117
+ ```bash
118
+ co copy microsoft_calendar
119
+ ```
120
+
121
+ Then import from your local copy:
122
+
123
+ ```python
124
+ # from connectonion import MicrosoftCalendar # Before
125
+ from tools.microsoft_calendar import MicrosoftCalendar # After - customize freely!
126
+ ```
@@ -0,0 +1,140 @@
1
+ # Outlook
2
+
3
+ Give your agents Outlook access via Microsoft Graph API.
4
+
5
+ ## Usage
6
+
7
+ **Option 1: Import directly**
8
+
9
+ ```python
10
+ from connectonion import Outlook
11
+
12
+ agent = Agent("assistant", tools=[Outlook()])
13
+ ```
14
+
15
+ **Option 2: Copy and customize**
16
+
17
+ ```bash
18
+ co copy outlook
19
+ ```
20
+
21
+ ```python
22
+ from tools.outlook import Outlook # Your local copy
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ```python
28
+ from connectonion import Agent, Outlook
29
+
30
+ outlook = Outlook()
31
+ agent = Agent("assistant", tools=[outlook])
32
+
33
+ agent.input("Show me my recent emails")
34
+ agent.input("Send an email to alice@example.com saying hello")
35
+ ```
36
+
37
+ ## Setup
38
+
39
+ ```bash
40
+ co auth microsoft
41
+ ```
42
+
43
+ Your agent can now read and manage Outlook emails.
44
+
45
+ **Switch accounts?** Run `co auth microsoft` again to connect a different Microsoft account.
46
+
47
+ ## Agent Methods
48
+
49
+ ### Reading
50
+
51
+ **`read_inbox(last=10, unread=False)`**
52
+ - Read emails from inbox
53
+ - `last`: Number of emails (default: 10)
54
+ - `unread`: Only unread emails (default: False)
55
+
56
+ **`get_sent_emails(max_results=10)`**
57
+ - Get emails you sent
58
+
59
+ **`get_email_body(email_id)`**
60
+ - Get full email content with headers
61
+
62
+ ### Search
63
+
64
+ **`search_emails(query, max_results=10)`**
65
+ - Search using Microsoft Graph search
66
+ - Examples: `"quarterly report"`, `"meeting notes"`, `"invoice"`
67
+
68
+ ### Sending
69
+
70
+ **`send(to, subject, body, cc=None, bcc=None)`**
71
+ - Send email via Microsoft Graph API
72
+ - `to`: Recipient email (comma-separated for multiple)
73
+ - `subject`: Email subject
74
+ - `body`: Email body (plain text)
75
+ - `cc`: Optional CC recipients
76
+ - `bcc`: Optional BCC recipients
77
+
78
+ **`reply(email_id, body)`**
79
+ - Reply to an existing email
80
+
81
+ ### Actions
82
+
83
+ **`mark_read(email_id)`**
84
+ - Mark email as read
85
+
86
+ **`mark_unread(email_id)`**
87
+ - Mark email as unread
88
+
89
+ **`archive_email(email_id)`**
90
+ - Move email to archive folder
91
+
92
+ ### Stats
93
+
94
+ **`count_unread()`**
95
+ - Count unread emails in inbox
96
+
97
+ **`get_my_email()`**
98
+ - Get connected Microsoft email address
99
+
100
+ ## Example
101
+
102
+ ```python
103
+ from connectonion import Agent, Outlook, Memory
104
+
105
+ outlook = Outlook()
106
+ memory = Memory()
107
+
108
+ agent = Agent(
109
+ name="email-assistant",
110
+ tools=[outlook, memory],
111
+ system_prompt="You help manage Outlook emails and remember important info."
112
+ )
113
+
114
+ agent.input("Check unread emails and save important deadlines to memory")
115
+ agent.input("Send an email to alice@example.com about the project update")
116
+ agent.input("Find all emails about the quarterly report")
117
+ ```
118
+
119
+ ## Customizing
120
+
121
+ Need to modify Outlook's behavior? Copy the source to your project:
122
+
123
+ ```bash
124
+ co copy outlook
125
+ ```
126
+
127
+ Then import from your local copy:
128
+
129
+ ```python
130
+ # from connectonion import Outlook # Before
131
+ from tools.outlook import Outlook # After - customize freely!
132
+ ```
133
+
134
+ ## Troubleshooting
135
+
136
+ **Missing Microsoft Mail scopes**: Run `co auth microsoft`
137
+
138
+ **Credentials not found**: Run `co auth microsoft`
139
+
140
+ **Token expired**: Tokens auto-refresh. If issues persist, run `co auth microsoft` again.
@@ -0,0 +1,423 @@
1
+ # Send Email
2
+
3
+ > Send emails with one line of code. No config, no complexity.
4
+
5
+ ## Usage
6
+
7
+ **Option 1: Import directly**
8
+
9
+ ```python
10
+ from connectonion import send_email
11
+
12
+ agent = Agent("assistant", tools=[send_email])
13
+ ```
14
+
15
+ **Option 2: Copy and customize**
16
+
17
+ ```bash
18
+ co copy send_email
19
+ ```
20
+
21
+ ```python
22
+ from tools.send_email import send_email # Your local copy
23
+ ```
24
+
25
+ ---
26
+
27
+ ## 📌 Current Status (as of Sep 2025)
28
+
29
+ ✅ **Working**: Email sending via `mail.openonion.ai` domain
30
+ ✅ **API Endpoint**: `https://oo.openonion.ai/api/v1/email/send`
31
+ ✅ **Sender**: Your agent's unique email `0x{your_key}@mail.openonion.ai`
32
+ ✅ **JWT Tokens**: No expiration - authenticate once and use forever
33
+
34
+ ## ⚡ Quick Debug
35
+
36
+ **Email not working? Try this:**
37
+
38
+ ```bash
39
+ # 1. Check if email is activated
40
+ cat .co/config.toml | grep email_active
41
+ # If false, run: co auth
42
+
43
+ # 2. Test directly
44
+ python -c "from connectonion import send_email; print(send_email('your@email.com', 'Test', 'It works!'))"
45
+
46
+ # 3. Common fixes
47
+ co auth # Refresh token if expired
48
+ co init # If missing .co directory
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Quick Start (30 seconds to first email)
54
+
55
+ **One line. That's it.**
56
+
57
+ ```python
58
+ from connectonion import send_email
59
+
60
+ send_email("alice@example.com", "Welcome!", "Thanks for joining us!")
61
+ ```
62
+
63
+ **Run it**
64
+
65
+ ```pycon
66
+ >>> send_email("alice@example.com", "Welcome!", "Thanks for joining us!")
67
+ {'success': True, 'message_id': 'msg_123', 'from': '0x1234abcd@mail.openonion.ai'}
68
+ ```
69
+
70
+ Email sent. Done.
71
+
72
+ ---
73
+
74
+ ## Core Concept
75
+
76
+ What you get:
77
+
78
+ - Simple function: `send_email(to, subject, message)`
79
+ - No API keys to manage (already configured)
80
+ - Your own email address for every agent
81
+ - Professional delivery with good reputation
82
+
83
+ ### The function
84
+
85
+ ```python
86
+ def send_email(to: str, subject: str, message: str) -> dict:
87
+ """Send an email. Returns success/failure."""
88
+ ```
89
+
90
+ Three parameters. Nothing else.
91
+
92
+ ---
93
+
94
+ ## Examples
95
+
96
+ ### Basic notification
97
+
98
+ ```pycon
99
+ >>> send_email("user@example.com", "Order shipped", "Track it: ABC123")
100
+ {'success': True, 'message_id': 'msg_124'}
101
+ ```
102
+
103
+ ### Verification code
104
+
105
+ ```pycon
106
+ >>> send_email("bob@example.com", "Your code: 456789", "Verify your account")
107
+ {'success': True, 'message_id': 'msg_125'}
108
+ ```
109
+
110
+ ### Status update
111
+
112
+ ```pycon
113
+ >>> send_email("team@example.com", "Build passed", "All tests green ✅")
114
+ {'success': True, 'message_id': 'msg_126'}
115
+ ```
116
+
117
+ ### HTML content (automatic)
118
+
119
+ ```pycon
120
+ >>> send_email(
121
+ ... "alice@example.com",
122
+ ... "Weekly Report",
123
+ ... "<h1>Progress</h1><p>3 features shipped!</p>"
124
+ ... )
125
+ {'success': True, 'message_id': 'msg_127'}
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Your Email Address
131
+
132
+ Every agent automatically gets an email address:
133
+
134
+ ```
135
+ 0x1234abcd@mail.openonion.ai
136
+ ```
137
+
138
+ - Based on your public key (first 10 characters)
139
+ - Professional domain with good reputation
140
+ - Generated during `co init` or `co create`
141
+ - **Activated after authentication with `co auth`**
142
+
143
+ ### Check your email address
144
+
145
+ Your email address is configured when you run `co create` or `co init` and stored in `.co/config.toml`:
146
+
147
+ ```toml
148
+ [agent]
149
+ address = "0x04e1c4ae3c57d716383153479dae869e51e86d43d88db8dfa22fba7533f3968d"
150
+ short_address = "0x04e1c4ae"
151
+ email = "0x04e1c4ae@mail.openonion.ai"
152
+ email_active = false # Becomes true after 'co auth'
153
+ ```
154
+
155
+ Access it from your agent:
156
+
157
+ ```python
158
+ >>> agent.email_addr
159
+ '0x04e1c4ae@mail.openonion.ai'
160
+ ```
161
+
162
+ ### Email Activation Lifecycle
163
+
164
+ 1. **Generated** - Email address created during `co init` or `co create`
165
+ 2. **Activation Prompt** - You'll be asked "Would you like to activate your agent's email now?"
166
+ 3. **Active** - Email is fully functional after authentication
167
+
168
+ #### Two ways to activate:
169
+
170
+ **Option 1: Immediate activation** (recommended)
171
+ ```bash
172
+ $ co init
173
+ ...
174
+ 📧 Agent email: 0x1234abcd@mail.openonion.ai (inactive)
175
+
176
+ 💌 Your agent can send emails!
177
+ Would you like to activate your agent's email now? [Y/n]: y
178
+ ✨ Email activated! Your agent can now send emails.
179
+ ```
180
+
181
+ **Option 2: Activate later**
182
+ ```bash
183
+ $ co auth # Run this anytime to activate
184
+ ```
185
+
186
+ To check your email status:
187
+ ```bash
188
+ $ cat .co/config.toml | grep email
189
+ email = "0x04e1c4ae@mail.openonion.ai"
190
+ email_active = true # true = active, false = inactive
191
+ ```
192
+
193
+ ### Want a custom name?
194
+
195
+ Upgrade to a custom email for $0.99:
196
+
197
+ ```
198
+ mybot@mail.openonion.ai
199
+ ai-assistant@mail.openonion.ai
200
+ support@mail.openonion.ai
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Return Values
206
+
207
+ ### Success
208
+
209
+ ```python
210
+ {
211
+ 'success': True,
212
+ 'message_id': 'msg_123',
213
+ 'from': '0x1234abcd@mail.openonion.ai' # Your agent's email
214
+ }
215
+ ```
216
+
217
+ ### Failure
218
+
219
+ ```python
220
+ {
221
+ 'success': False,
222
+ 'error': 'Rate limit exceeded'
223
+ }
224
+ ```
225
+
226
+ Common errors:
227
+ - `"Rate limit exceeded"` - Hit your quota
228
+ - `"Invalid email address"` - Check the recipient
229
+ - `"Authentication failed"` - Token expired, run `co auth`
230
+ - `"Email not activated"` - Run `co auth` to activate
231
+ - `"Not in a ConnectOnion project"` - Run `co init` first
232
+
233
+ ---
234
+
235
+ ## Using with an Agent
236
+
237
+ Give your agent the ability to send emails:
238
+
239
+ ```python
240
+ from connectonion import Agent, send_email
241
+
242
+ # Create an agent with email capability
243
+ agent = Agent(
244
+ "customer_support",
245
+ tools=[send_email],
246
+ instructions="You help users and send them email confirmations"
247
+ )
248
+
249
+ # The agent can now send emails autonomously
250
+ response = agent("Send a welcome email to alice@example.com")
251
+ # Agent sends: send_email("alice@example.com", "Welcome!", "Thanks for joining...")
252
+ ```
253
+
254
+ ### Real-world agent example
255
+
256
+ ```python
257
+ from connectonion import Agent, send_email
258
+ import time
259
+
260
+ def check_system_status() -> dict:
261
+ """Check if the system is running properly."""
262
+ cpu_usage = 95 # Simulated high CPU
263
+ return {"status": "warning", "cpu": cpu_usage}
264
+
265
+ # Create monitoring agent
266
+ monitor = Agent(
267
+ "system_monitor",
268
+ tools=[check_system_status, send_email],
269
+ instructions="Monitor system health and alert admin@example.com if issues"
270
+ )
271
+
272
+ # Agent checks system and sends alerts
273
+ monitor("Check the system and alert if there are problems")
274
+ # Agent will:
275
+ # 1. Call check_system_status()
276
+ # 2. See high CPU (95%)
277
+ # 3. Call send_email("admin@example.com", "Alert: High CPU", "CPU at 95%...")
278
+ ```
279
+
280
+ ## Complete Example
281
+
282
+ Here's a real-world example sending different types of emails:
283
+
284
+ ```python
285
+ from connectonion import send_email
286
+
287
+ # Welcome email
288
+ result = send_email(
289
+ "new_user@example.com",
290
+ "Welcome to our platform!",
291
+ "We're excited to have you. Check out our docs to get started."
292
+ )
293
+ print(f"Welcome email: {result['success']}")
294
+
295
+ # Alert notification
296
+ result = send_email(
297
+ "admin@example.com",
298
+ "🚨 High CPU usage detected",
299
+ "Server CPU at 95% for the last 5 minutes"
300
+ )
301
+ print(f"Alert sent: {result['success']}")
302
+
303
+ # Daily report
304
+ result = send_email(
305
+ "team@example.com",
306
+ "Daily Summary",
307
+ """
308
+ <h2>Today's Metrics</h2>
309
+ <ul>
310
+ <li>Users: 1,234</li>
311
+ <li>Revenue: $5,678</li>
312
+ <li>Uptime: 99.9%</li>
313
+ </ul>
314
+ """
315
+ )
316
+ print(f"Report sent: {result['success']}")
317
+ ```
318
+
319
+ ---
320
+
321
+ ## The Details
322
+
323
+ ### Quotas
324
+
325
+ - **Free tier**: 100 emails/month
326
+ - **Plus tier**: 10,000 emails/month ($29.90/mo)
327
+ - **Pro tier**: 50,000 emails/month ($200/mo)
328
+
329
+ Check your remaining quota:
330
+ ```python
331
+ from connectonion import get_agent_info
332
+ info = get_agent_info()
333
+ print(f"Email quota: {info.get('email_quota_remaining', 'Unknown')} remaining")
334
+ ```
335
+
336
+ ### Rate Limiting
337
+
338
+ Automatic rate limiting prevents abuse:
339
+ - Returns `{'success': False, 'error': 'Rate limit exceeded'}`
340
+ - Resets monthly
341
+ - No configuration needed
342
+
343
+ ### Content Types
344
+
345
+ - **Plain text**: Just send a string
346
+ - **HTML**: Include HTML tags, automatically detected
347
+ - **Mixed**: HTML with plain text fallback
348
+
349
+ ### From Address
350
+
351
+ - **Free tier**: `0x{your_key_prefix}@mail.openonion.ai` (your unique address!)
352
+ - **With custom name**: `yourname@mail.openonion.ai` ($0.99 one-time)
353
+ - **Verified domain**: `mail.openonion.ai` (SPF/DKIM configured)
354
+
355
+ **How it works**:
356
+ - Your agent's email is the first 10 characters of your public key
357
+ - Example: `0x6fdb2d9e@mail.openonion.ai` (clean format, no name labels)
358
+ - This is YOUR unique sender address - recipients see emails coming directly from YOUR agent
359
+ - Each agent has their own unique email address based on their key
360
+
361
+ ### Behind the Scenes
362
+
363
+ - Email address configured during `co create` or `co init`
364
+ - Stored in `.co/config.toml` for your project
365
+ - Uses Resend API for delivery via `mail.openonion.ai` domain
366
+ - Automatic retry on temporary failures
367
+ - Logs all emails for debugging
368
+ - SPF/DKIM configured for deliverability
369
+
370
+ ### Troubleshooting
371
+
372
+ #### Email not sending?
373
+
374
+ 1. **Check activation status**:
375
+ ```bash
376
+ cat .co/config.toml | grep email_active
377
+ # Should show: email_active = true
378
+ ```
379
+ If false, run `co auth` to activate.
380
+
381
+ 2. **Check for errors**:
382
+ ```python
383
+ result = send_email("test@example.com", "Test", "Testing")
384
+ if not result['success']:
385
+ print(f"Error: {result['error']}")
386
+ ```
387
+
388
+ 3. **Common fixes**:
389
+ - `co auth` - Refresh authentication token
390
+ - `co init` - Initialize project if missing `.co` directory
391
+ - Check internet connection
392
+
393
+ 4. **Test directly**:
394
+ ```python
395
+ from connectonion import send_email
396
+ result = send_email("your-email@example.com", "Test", "If you get this, it works!")
397
+ print(result)
398
+ ```
399
+
400
+ #### Debug mode
401
+
402
+ See what's happening under the hood:
403
+
404
+ ```python
405
+ import os
406
+ os.environ['CONNECTONION_DEBUG'] = '1'
407
+
408
+ from connectonion import send_email
409
+ result = send_email("test@example.com", "Debug Test", "Testing with debug")
410
+ # Will show detailed API calls and responses
411
+ ```
412
+
413
+ ---
414
+
415
+ ## Philosophy
416
+
417
+ **One function, one purpose**: Send an email
418
+
419
+ No templates to learn. No configuration files. No complex APIs.
420
+
421
+ Just `send_email(to, subject, message)`.
422
+
423
+ Keep simple things simple.