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,496 @@
1
+ # Task Storage: Why JSON Lines with TTL Expiry
2
+
3
+ *December 2025*
4
+
5
+ When designing `host()`, we needed to store task results so clients can fetch them later if connections drop. This document explores all the options we considered and explains why we chose JSON Lines with TTL expiry.
6
+
7
+ ---
8
+
9
+ ## The Problem
10
+
11
+ When an agent is hosted, tasks need to be persisted:
12
+
13
+ ```
14
+ Client Agent
15
+ │ │
16
+ │── POST /input ────────────────────────▶│
17
+ │◀─ {task_id: "abc"} ───────────────────│
18
+ │ │
19
+ │ (connection drops during long task) │
20
+ │ │
21
+ │── GET /tasks/abc ─────────────────────▶│
22
+ │◀─ {result: "..."} ────────────────────│ ← Need stored result
23
+ ```
24
+
25
+ Requirements:
26
+ 1. **Human readable** - Developers should be able to inspect tasks directly
27
+ 2. **Concurrent safe** - Multiple workers may write simultaneously
28
+ 3. **Simple** - No external dependencies, easy to understand
29
+ 4. **Cleanable** - Old tasks should be removed automatically
30
+
31
+ ---
32
+
33
+ ## Part I: Where to Store?
34
+
35
+ ### Option A: Central Server (Our Relay)
36
+
37
+ ```
38
+ Client Our Relay Agent
39
+ │ │ │
40
+ │── INPUT ─────────────────▶│── INPUT ────────────────▶│
41
+ │◀─ {task_id} ──────────────│ │
42
+ │ │◀─ OUTPUT ────────────────│
43
+ │ (client disconnects) │ (relay stores result) │
44
+ │ │ │
45
+ │── GET /tasks/abc ────────▶│ │
46
+ │◀─ {result} ───────────────│ │
47
+ ```
48
+
49
+ **Pros:**
50
+ - Simple for developers
51
+ - Client can disconnect/reconnect
52
+ - Works across devices
53
+
54
+ **Cons:**
55
+ - Privacy concern (we see all data)
56
+ - Single point of failure
57
+ - Costs us money (storage, bandwidth)
58
+ - Vendor lock-in
59
+
60
+ **Why not chosen:** Privacy and centralization concerns.
61
+
62
+ ---
63
+
64
+ ### Option B: IPFS (Decentralized)
65
+
66
+ ```
67
+ Agent: encrypt(result) → IPFS → CID
68
+ Client: IPFS.get(CID) → decrypt → result
69
+ ```
70
+
71
+ **Pros:**
72
+ - Decentralized, no central server
73
+ - Content-addressed (verifiable)
74
+ - Privacy via encryption
75
+
76
+ **Cons:**
77
+ - Someone must pay for pinning
78
+ - IPFS without pinning = data disappears
79
+ - Pinning services cost $0.01-0.15/GB/month
80
+ - Adds complexity (IPFS dependency)
81
+ - Overkill for most use cases
82
+
83
+ **Who pays for IPFS?**
84
+
85
+ | Option | Cost | Persistence |
86
+ |--------|------|-------------|
87
+ | Free tier | $0 | Garbage collected |
88
+ | Pin yourself | Electricity + disk | While node runs |
89
+ | Pinning service | $0.01-0.15/GB/month | While you pay |
90
+ | Filecoin | ~$0.0001/GB/month | Contract duration |
91
+
92
+ **Why not chosen:** Doesn't solve payment problem, adds complexity. "IPFS sounds good but doesn't change economics."
93
+
94
+ ---
95
+
96
+ ### Option C: Webhook/Callback
97
+
98
+ ```
99
+ Client Agent
100
+ │ │
101
+ │── INPUT + callback_url ───────────────▶│
102
+ │◀─ "accepted" ─────────────────────────│
103
+ │ │
104
+ │ (client goes offline) │
105
+ │ │
106
+ │◀── POST result to callback_url ────────│
107
+ ```
108
+
109
+ **Pros:**
110
+ - No storage needed
111
+ - Fire and forget
112
+ - Scales well
113
+
114
+ **Cons:**
115
+ - Client needs public endpoint
116
+ - Firewall/NAT issues
117
+ - More complex client setup
118
+
119
+ **Why not chosen:** Requires client to have public endpoint. Most developers don't.
120
+
121
+ ---
122
+
123
+ ### Option D: Email Model
124
+
125
+ ```
126
+ Client: "Do this task"
127
+ Agent: "I'll email you when done"
128
+ ... works ...
129
+ Agent: → sends notification/email with result
130
+ ```
131
+
132
+ **Pros:**
133
+ - Familiar mental model
134
+ - No connection needed
135
+ - Different channel
136
+
137
+ **Cons:**
138
+ - Requires email/notification setup
139
+ - Different from API pattern
140
+ - Complex integration
141
+
142
+ **Why not chosen:** Too different from standard API patterns. Adds notification complexity.
143
+
144
+ ---
145
+
146
+ ### Option E: Agent Calls Back (Role Reversal)
147
+
148
+ ```
149
+ Client: "Do this, reply to 0xMyAddress when done"
150
+ Agent: ... works ...
151
+ Agent: → initiates connection TO client with result
152
+ ```
153
+
154
+ **Pros:**
155
+ - Like how phones/humans work
156
+ - No storage needed
157
+
158
+ **Cons:**
159
+ - Client must be online to receive
160
+ - NAT/firewall issues
161
+ - Role reversal adds complexity
162
+
163
+ **Why not chosen:** Client might not be online. NAT traversal is hard.
164
+
165
+ ---
166
+
167
+ ### Option F: Encrypted Central Storage
168
+
169
+ ```
170
+ Agent: encrypt(result, client_pubkey) → store on relay
171
+ Client: fetch → decrypt with private_key → result
172
+ ```
173
+
174
+ **Pros:**
175
+ - Privacy preserved (relay can't read)
176
+ - Simple for developers
177
+ - Uses existing keypair
178
+
179
+ **Cons:**
180
+ - Still centralized (relay as encrypted mailbox)
181
+ - Durov/Dorsey would say: "What if relay goes down?"
182
+ - Vendor lock-in
183
+
184
+ **What would industry leaders say?**
185
+
186
+ | Person | Concern |
187
+ |--------|---------|
188
+ | Pavel Durov (Telegram) | "Encryption good, but why central relay?" |
189
+ | Jack Dorsey (Twitter) | "Protocol, not platform. Multiple relays." |
190
+ | Vitalik Buterin (Ethereum) | "Where's the trustlessness? Who verifies?" |
191
+ | Juan Benet (IPFS) | "Content addressing solves this." |
192
+
193
+ **Why not chosen:** For MVP, we decided to keep it simple with local storage. Encrypted central storage could be added later as optional feature.
194
+
195
+ ---
196
+
197
+ ### Option G: Don't Store At All
198
+
199
+ Most tasks complete in seconds. Is storage really needed?
200
+
201
+ ```
202
+ 95% of tasks: < 30 seconds, WebSocket stays open → no storage needed
203
+ 5% of tasks: Maybe longer
204
+ ```
205
+
206
+ **Consideration:** Build for the 95%. Document the limitation.
207
+
208
+ **Why not fully chosen:** Connection drops do happen. Simple local storage is low-cost insurance.
209
+
210
+ ---
211
+
212
+ ### Option H: Local Storage on Agent (Chosen)
213
+
214
+ ```
215
+ Agent stores results locally in ~/.connectonion/tasks.jsonl
216
+ Client fetches via GET /tasks/{task_id}
217
+ ```
218
+
219
+ **Pros:**
220
+ - Privacy (data stays with agent)
221
+ - No central dependency
222
+ - Agent controls retention
223
+ - Simple, no external services
224
+
225
+ **Cons:**
226
+ - Agent must be online to retrieve
227
+ - No cross-device without relay
228
+
229
+ **Why chosen:** Simplest solution that works. Privacy by default. No external dependencies.
230
+
231
+ ---
232
+
233
+ ## Part II: How to Store Locally?
234
+
235
+ ### Option 1: CSV
236
+
237
+ ```csv
238
+ task_id,prompt,status,result,created
239
+ 550e8400,Translate hello,done,Hola,1702234567
240
+ ```
241
+
242
+ **Problems:**
243
+ - **Not human readable** - Hard to read with long content
244
+ - **Race conditions** - Concurrent writes corrupt data (read-modify-write pattern)
245
+ - **Parsing issues** - Commas and newlines in results break CSV
246
+
247
+ **Why not chosen:** Not readable, not concurrent-safe.
248
+
249
+ ---
250
+
251
+ ### Option 2: One JSON File Per Task
252
+
253
+ ```
254
+ ~/.connectonion/tasks/
255
+ ├── 550e8400.json
256
+ ├── 7c4dff69.json
257
+ └── 3d4017c3.json
258
+ ```
259
+
260
+ **Problems:**
261
+ - Thousands of files = slow to list (`GET /tasks`)
262
+ - Can't query without reading all files
263
+ - File system overhead
264
+
265
+ **Why not chosen:** Doesn't scale for listing/querying.
266
+
267
+ ---
268
+
269
+ ### Option 3: SQLite
270
+
271
+ ```sql
272
+ SELECT * FROM tasks WHERE task_id = '550e8400';
273
+ ```
274
+
275
+ **Pros:**
276
+ - Handles concurrency
277
+ - Good for queries
278
+
279
+ **Cons:**
280
+ - **Binary file** - Users can't `cat` or `grep` it
281
+ - Requires SQLite CLI knowledge
282
+ - Overkill for simple storage
283
+
284
+ **Why not chosen:** Not human readable. "Users can't directly read the SQLite file."
285
+
286
+ ---
287
+
288
+ ### Option 4: JSON Lines (Chosen)
289
+
290
+ ```jsonl
291
+ {"task_id":"550e8400","status":"running","created":1702234567,"expires":1702320967}
292
+ {"task_id":"550e8400","status":"done","result":"Hola","created":1702234567,"expires":1702320967}
293
+ ```
294
+
295
+ **Benefits:**
296
+ - Human readable: `cat tasks.jsonl`
297
+ - Queryable: `grep "550e8400" tasks.jsonl`
298
+ - Single file: easy to manage
299
+ - Append-only: concurrent safe
300
+
301
+ ---
302
+
303
+ ## Part III: Why Append-Only is Concurrent Safe
304
+
305
+ ### CSV/SQLite: Read-Modify-Write (Unsafe)
306
+
307
+ ```
308
+ Worker 1: Read file → [abc:running, def:running]
309
+ Worker 2: Read file → [abc:running, def:running]
310
+ Worker 1: Update abc=done → [abc:done, def:running]
311
+ Worker 2: Update def=done → [abc:running, def:done]
312
+ Worker 1: Write file
313
+ Worker 2: Write file ← Overwrites Worker 1! Data lost!
314
+ ```
315
+
316
+ ### JSON Lines: Append-Only (Safe)
317
+
318
+ ```
319
+ Worker 1: Append line → {"task_id":"abc","status":"done"}
320
+ Worker 2: Append line → {"task_id":"def","status":"done"}
321
+
322
+ Both succeed. No data loss.
323
+ ```
324
+
325
+ **Why?** On POSIX systems, append operations are atomic for small writes.
326
+
327
+ To get current state: find the **last** line for that task_id.
328
+
329
+ ```bash
330
+ grep "550e8400" tasks.jsonl | tail -1
331
+ ```
332
+
333
+ This is the same pattern used by:
334
+ - Kafka (append-only log)
335
+ - Git (append-only objects)
336
+ - Database WAL (Write-Ahead Log)
337
+ - Blockchain (append-only chain)
338
+
339
+ ---
340
+
341
+ ## Part IV: How to Cleanup?
342
+
343
+ ### Option A: File Locking
344
+
345
+ ```python
346
+ def cleanup():
347
+ with file_lock:
348
+ # Read all, filter, write back
349
+ ```
350
+
351
+ **Problems:**
352
+ - Workers wait during cleanup (slow)
353
+ - Deadlock risk if process crashes
354
+ - Complex error handling
355
+
356
+ **Why not chosen:** Too complex, risk of deadlocks.
357
+
358
+ ---
359
+
360
+ ### Option B: Log Rotation
361
+
362
+ ```
363
+ tasks.jsonl ← Current
364
+ tasks.20241210.jsonl ← Yesterday
365
+ tasks.20241209.jsonl ← 2 days ago
366
+ ```
367
+
368
+ **Problems:**
369
+ - Need to read multiple files for recent tasks
370
+ - Date-based, not task-based control
371
+ - More complex file management
372
+
373
+ **Why not chosen:** More complex, less flexible.
374
+
375
+ ---
376
+
377
+ ### Option C: TTL Expiry (Chosen)
378
+
379
+ Each task has an `expires` timestamp:
380
+
381
+ ```json
382
+ {"task_id":"abc","status":"done","result":"...","expires":1702320967}
383
+ ```
384
+
385
+ Cleanup logic:
386
+ - If `expires < now` AND `status != "running"` → safe to delete
387
+ - Running tasks never deleted (even if expired)
388
+
389
+ ```python
390
+ def cleanup():
391
+ now = time.time()
392
+ active = []
393
+ for line in open("tasks.jsonl"):
394
+ task = json.loads(line)
395
+ if task["expires"] > now or task["status"] == "running":
396
+ active.append(line)
397
+
398
+ # Atomic write
399
+ with open("tasks.jsonl.tmp", "w") as f:
400
+ f.writelines(active)
401
+ os.rename("tasks.jsonl.tmp", "tasks.jsonl")
402
+ ```
403
+
404
+ **Why chosen:**
405
+ - Per-task control (different TTLs possible)
406
+ - Running tasks protected
407
+ - Simple logic: expired = safe to delete
408
+ - Client had N hours to fetch result
409
+
410
+ ---
411
+
412
+ ## The Final Design
413
+
414
+ ### Storage
415
+
416
+ ```
417
+ .co/tasks.jsonl
418
+ ```
419
+
420
+ Stored in project's `.co/` folder (same as `.co/logs/`).
421
+
422
+ ```jsonl
423
+ {"task_id":"550e8400","prompt":"Translate hello","status":"running","created":1702234567,"expires":1702320967}
424
+ {"task_id":"550e8400","prompt":"Translate hello","status":"done","result":"Hola","created":1702234567,"expires":1702320967}
425
+ ```
426
+
427
+ **Why `.co/` folder?**
428
+ - Consistent with `.co/logs/` (existing pattern)
429
+ - Project-specific (each project has its own tasks)
430
+ - Already in `.gitignore`
431
+ - Easy to find (in project directory)
432
+
433
+ ### API
434
+
435
+ ```python
436
+ host(agent) # Default: 24h TTL
437
+ host(agent, task_ttl=3600) # 1 hour
438
+ host(agent, task_ttl=604800) # 7 days
439
+ ```
440
+
441
+ ### User Experience
442
+
443
+ ```bash
444
+ # See all tasks
445
+ cat .co/tasks.jsonl
446
+
447
+ # Find specific task
448
+ grep "550e8400" .co/tasks.jsonl | tail -1
449
+
450
+ # Pretty print
451
+ cat .co/tasks.jsonl | jq .
452
+ ```
453
+
454
+ ---
455
+
456
+ ## Comparison Summary
457
+
458
+ ### Where to Store
459
+
460
+ | Option | Privacy | Simplicity | Offline | Chosen? |
461
+ |--------|---------|------------|---------|---------|
462
+ | Central relay | ❌ | ✅ | ✅ | ❌ |
463
+ | IPFS | ✅ | ❌ | ✅ | ❌ |
464
+ | Webhook | ✅ | ❌ | ❌ | ❌ |
465
+ | Encrypted relay | ✅ | ⚠️ | ✅ | Future |
466
+ | **Local storage** | ✅ | ✅ | ⚠️ | ✅ |
467
+
468
+ ### How to Store Locally
469
+
470
+ | Format | Readable | Concurrent | Single File | Chosen? |
471
+ |--------|----------|------------|-------------|---------|
472
+ | CSV | ❌ | ❌ | ✅ | ❌ |
473
+ | JSON files | ✅ | ✅ | ❌ | ❌ |
474
+ | SQLite | ❌ | ✅ | ✅ | ❌ |
475
+ | **JSON Lines** | ✅ | ✅ | ✅ | ✅ |
476
+
477
+ ---
478
+
479
+ ## Principles Applied
480
+
481
+ 1. **Human Readable First** - `cat tasks.jsonl` should just work
482
+ 2. **Append-Only for Concurrency** - Don't fight concurrency, design it away
483
+ 3. **TTL Over Complex Cleanup** - Per-task expiry is simpler than rotation
484
+ 4. **Local by Default** - Privacy and simplicity over convenience
485
+ 5. **Simple Over Clever** - JSON Lines is boring. Boring is good.
486
+
487
+ ---
488
+
489
+ ## Future Considerations
490
+
491
+ If users need more:
492
+ - **Encrypted relay storage** - Optional for cross-device access
493
+ - **IPFS integration** - For truly decentralized storage
494
+ - **SQLite mode** - For heavy query needs
495
+
496
+ But for MVP: JSON Lines with TTL. Simple, readable, works.