connectonion 0.6.1__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 (413) 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 +95 -142
  5. connectonion/cli/browser_agent/element_finder.py +147 -0
  6. connectonion/cli/browser_agent/highlight_screenshot.py +182 -0
  7. connectonion/cli/browser_agent/prompt.md +188 -105
  8. connectonion/cli/browser_agent/prompts/element_matcher.md +59 -0
  9. connectonion/cli/browser_agent/prompts/form_filler.md +19 -0
  10. connectonion/cli/browser_agent/prompts/scroll_strategy.md +36 -0
  11. connectonion/cli/browser_agent/scripts/extract_elements.js +126 -0
  12. connectonion/cli/browser_agent/scroll.py +145 -0
  13. connectonion/cli/co_ai/__init__.py +6 -0
  14. connectonion/cli/co_ai/agent.py +87 -0
  15. connectonion/cli/co_ai/agents/__init__.py +5 -0
  16. connectonion/cli/co_ai/agents/registry.py +57 -0
  17. connectonion/cli/co_ai/commands/__init__.py +45 -0
  18. connectonion/cli/co_ai/commands/compact.py +173 -0
  19. connectonion/cli/co_ai/commands/cost.py +77 -0
  20. connectonion/cli/co_ai/commands/export.py +60 -0
  21. connectonion/cli/co_ai/commands/help.py +80 -0
  22. connectonion/cli/co_ai/commands/init.py +101 -0
  23. connectonion/cli/co_ai/commands/sessions.py +55 -0
  24. connectonion/cli/co_ai/commands/tasks.py +63 -0
  25. connectonion/cli/co_ai/commands/undo.py +103 -0
  26. connectonion/cli/co_ai/context.py +127 -0
  27. connectonion/cli/co_ai/main.py +52 -0
  28. connectonion/cli/co_ai/plugins/__init__.py +6 -0
  29. connectonion/cli/co_ai/plugins/reminder.py +76 -0
  30. connectonion/cli/co_ai/plugins/shell_approval.py +105 -0
  31. connectonion/cli/co_ai/prompts/agents/explore.md +79 -0
  32. connectonion/cli/co_ai/prompts/agents/plan.md +60 -0
  33. connectonion/cli/co_ai/prompts/assembler.py +303 -0
  34. connectonion/cli/{docs/co-vibecoding-principles-docs-contexts-all-in-one.md → co_ai/prompts/connectonion/README.md} +26 -0
  35. connectonion/cli/co_ai/prompts/connectonion/api.md +457 -0
  36. connectonion/cli/co_ai/prompts/connectonion/cli/README.md +805 -0
  37. connectonion/cli/co_ai/prompts/connectonion/cli/auth.md +46 -0
  38. connectonion/cli/co_ai/prompts/connectonion/cli/browser.md +235 -0
  39. connectonion/cli/co_ai/prompts/connectonion/cli/copy.md +184 -0
  40. connectonion/cli/co_ai/prompts/connectonion/cli/create.md +335 -0
  41. connectonion/cli/co_ai/prompts/connectonion/cli/init.md +431 -0
  42. connectonion/cli/co_ai/prompts/connectonion/co-directory-structure.md +214 -0
  43. connectonion/cli/co_ai/prompts/connectonion/concepts/agent.md +1078 -0
  44. connectonion/cli/co_ai/prompts/connectonion/concepts/events.md +816 -0
  45. connectonion/cli/co_ai/prompts/connectonion/concepts/llm_do.md +256 -0
  46. connectonion/cli/co_ai/prompts/connectonion/concepts/max_iterations.md +362 -0
  47. connectonion/cli/co_ai/prompts/connectonion/concepts/models.md +641 -0
  48. connectonion/cli/co_ai/prompts/connectonion/concepts/plugins.md +100 -0
  49. connectonion/cli/co_ai/prompts/connectonion/concepts/prompts.md +122 -0
  50. connectonion/cli/co_ai/prompts/connectonion/concepts/tools.md +512 -0
  51. connectonion/cli/co_ai/prompts/connectonion/concepts/transcribe.md +156 -0
  52. connectonion/cli/co_ai/prompts/connectonion/concepts/trust.md +291 -0
  53. connectonion/cli/co_ai/prompts/connectonion/debug/README.md +18 -0
  54. connectonion/cli/co_ai/prompts/connectonion/debug/auto_debug.md +1026 -0
  55. connectonion/cli/co_ai/prompts/connectonion/debug/console.md +129 -0
  56. connectonion/cli/co_ai/prompts/connectonion/debug/eval-format.md +178 -0
  57. connectonion/cli/co_ai/prompts/connectonion/debug/eval.md +230 -0
  58. connectonion/cli/co_ai/prompts/connectonion/debug/exceptions.md +307 -0
  59. connectonion/cli/co_ai/prompts/connectonion/debug/log.md +117 -0
  60. connectonion/cli/co_ai/prompts/connectonion/debug/xray.md +215 -0
  61. connectonion/cli/co_ai/prompts/connectonion/design-decisions/001-choosing-input-method.md +202 -0
  62. connectonion/cli/co_ai/prompts/connectonion/design-decisions/002-choosing-llm-function-name.md +202 -0
  63. connectonion/cli/co_ai/prompts/connectonion/design-decisions/003-choosing-trust-keyword.md +141 -0
  64. connectonion/cli/co_ai/prompts/connectonion/design-decisions/004-cli-create-flow.md +117 -0
  65. connectonion/cli/co_ai/prompts/connectonion/design-decisions/005-designing-agent-network-protocol.md +503 -0
  66. connectonion/cli/co_ai/prompts/connectonion/design-decisions/006-agent-address-format.md +305 -0
  67. connectonion/cli/co_ai/prompts/connectonion/design-decisions/007-authentication-backend-design.md +240 -0
  68. connectonion/cli/co_ai/prompts/connectonion/design-decisions/008-naming-is-hard.md +228 -0
  69. connectonion/cli/co_ai/prompts/connectonion/design-decisions/009-why-connect-function.md +167 -0
  70. connectonion/cli/co_ai/prompts/connectonion/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
  71. connectonion/cli/co_ai/prompts/connectonion/design-decisions/011-global-config-identity-management.md +357 -0
  72. connectonion/cli/co_ai/prompts/connectonion/design-decisions/012-tool-execution-separation.md +259 -0
  73. connectonion/cli/co_ai/prompts/connectonion/design-decisions/013-debug-and-logging-design.md +253 -0
  74. connectonion/cli/co_ai/prompts/connectonion/design-decisions/014-hook-system-design.md +510 -0
  75. connectonion/cli/co_ai/prompts/connectonion/design-decisions/015-interactive-auto-debug-design.md +837 -0
  76. connectonion/cli/co_ai/prompts/connectonion/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
  77. connectonion/cli/co_ai/prompts/connectonion/design-decisions/017-session-logging-and-eval-format.md +120 -0
  78. connectonion/cli/co_ai/prompts/connectonion/design-decisions/018-event-api-naming.md +274 -0
  79. connectonion/cli/co_ai/prompts/connectonion/design-decisions/019-agent-lifecycle-design.md +655 -0
  80. connectonion/cli/co_ai/prompts/connectonion/design-decisions/020-trust-system-and-network-architecture.md +503 -0
  81. connectonion/cli/co_ai/prompts/connectonion/design-decisions/021-task-storage-jsonl-design.md +496 -0
  82. connectonion/cli/co_ai/prompts/connectonion/design-decisions/022-raw-asgi-implementation.md +273 -0
  83. connectonion/cli/co_ai/prompts/connectonion/examples/agent_reasoning.md +62 -0
  84. connectonion/cli/co_ai/prompts/connectonion/examples/atomic_tools.md +24 -0
  85. connectonion/cli/co_ai/prompts/connectonion/examples/load_guide.md +18 -0
  86. connectonion/cli/co_ai/prompts/connectonion/examples.md +0 -0
  87. connectonion/cli/co_ai/prompts/connectonion/hook-system-options.md +364 -0
  88. connectonion/cli/co_ai/prompts/connectonion/index.md +162 -0
  89. connectonion/cli/co_ai/prompts/connectonion/integrations/README.md +12 -0
  90. connectonion/cli/co_ai/prompts/connectonion/integrations/auth.md +450 -0
  91. connectonion/cli/co_ai/prompts/connectonion/integrations/google.md +431 -0
  92. connectonion/cli/co_ai/prompts/connectonion/integrations/microsoft.md +370 -0
  93. connectonion/cli/co_ai/prompts/connectonion/network/README.md +14 -0
  94. connectonion/cli/co_ai/prompts/connectonion/network/connect.md +543 -0
  95. connectonion/cli/co_ai/prompts/connectonion/network/connection.md +538 -0
  96. connectonion/cli/co_ai/prompts/connectonion/network/deploy.md +123 -0
  97. connectonion/cli/co_ai/prompts/connectonion/network/host.md +1049 -0
  98. connectonion/cli/co_ai/prompts/connectonion/network/protocol/agent-relay-protocol.md +495 -0
  99. connectonion/cli/co_ai/prompts/connectonion/network/protocol/announce-message.md +115 -0
  100. connectonion/cli/co_ai/prompts/connectonion/principles.md +124 -0
  101. connectonion/cli/co_ai/prompts/connectonion/quickstart.md +261 -0
  102. connectonion/cli/co_ai/prompts/connectonion/roadmap.md +81 -0
  103. connectonion/cli/co_ai/prompts/connectonion/templates/README.md +77 -0
  104. connectonion/cli/co_ai/prompts/connectonion/templates/meta-agent.md +152 -0
  105. connectonion/cli/co_ai/prompts/connectonion/templates/minimal.md +105 -0
  106. connectonion/cli/co_ai/prompts/connectonion/templates/playwright.md +130 -0
  107. connectonion/cli/co_ai/prompts/connectonion/templates/web-research.md +144 -0
  108. connectonion/cli/co_ai/prompts/connectonion/tui/README.md +95 -0
  109. connectonion/cli/co_ai/prompts/connectonion/tui/chat.md +181 -0
  110. connectonion/cli/co_ai/prompts/connectonion/tui/divider.md +63 -0
  111. connectonion/cli/co_ai/prompts/connectonion/tui/dropdown.md +83 -0
  112. connectonion/cli/co_ai/prompts/connectonion/tui/footer.md +44 -0
  113. connectonion/cli/co_ai/prompts/connectonion/tui/fuzzy.md +68 -0
  114. connectonion/cli/co_ai/prompts/connectonion/tui/input.md +84 -0
  115. connectonion/cli/co_ai/prompts/connectonion/tui/keys.md +77 -0
  116. connectonion/cli/co_ai/prompts/connectonion/tui/pick.md +71 -0
  117. connectonion/cli/co_ai/prompts/connectonion/tui/providers.md +89 -0
  118. connectonion/cli/co_ai/prompts/connectonion/tui/status_bar.md +67 -0
  119. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/README.md +156 -0
  120. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/calendar_plugin.md +68 -0
  121. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/eval.md +89 -0
  122. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/gmail_plugin.md +68 -0
  123. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/image_result_formatter.md +74 -0
  124. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/re_act.md +86 -0
  125. connectonion/cli/co_ai/prompts/connectonion/useful_plugins/shell_approval.md +69 -0
  126. connectonion/cli/co_ai/prompts/connectonion/useful_tools/README.md +81 -0
  127. connectonion/cli/co_ai/prompts/connectonion/useful_tools/diff_writer.md +138 -0
  128. connectonion/cli/co_ai/prompts/connectonion/useful_tools/get_emails.md +499 -0
  129. connectonion/cli/co_ai/prompts/connectonion/useful_tools/gmail.md +135 -0
  130. connectonion/cli/co_ai/prompts/connectonion/useful_tools/google_calendar.md +106 -0
  131. connectonion/cli/co_ai/prompts/connectonion/useful_tools/memory.md +486 -0
  132. connectonion/cli/co_ai/prompts/connectonion/useful_tools/microsoft_calendar.md +106 -0
  133. connectonion/cli/co_ai/prompts/connectonion/useful_tools/outlook.md +120 -0
  134. connectonion/cli/co_ai/prompts/connectonion/useful_tools/send_email.md +403 -0
  135. connectonion/cli/co_ai/prompts/connectonion/useful_tools/shell.md +95 -0
  136. connectonion/cli/co_ai/prompts/connectonion/useful_tools/slash_command.md +96 -0
  137. connectonion/cli/co_ai/prompts/connectonion/useful_tools/terminal.md +97 -0
  138. connectonion/cli/co_ai/prompts/connectonion/useful_tools/todo_list.md +252 -0
  139. connectonion/cli/co_ai/prompts/connectonion/useful_tools/web_fetch.md +130 -0
  140. connectonion/cli/co_ai/prompts/connectonion/vibe-coding-guide.md +97 -0
  141. connectonion/cli/co_ai/prompts/connectonion/windows-support.md +258 -0
  142. connectonion/cli/co_ai/prompts/main.md +247 -0
  143. connectonion/cli/co_ai/prompts/reminders/plan_mode.md +34 -0
  144. connectonion/cli/co_ai/prompts/summarization.md +55 -0
  145. connectonion/cli/co_ai/prompts/tools/ask_user.md +61 -0
  146. connectonion/cli/co_ai/prompts/tools/background.md +57 -0
  147. connectonion/cli/co_ai/prompts/tools/edit.md +90 -0
  148. connectonion/cli/co_ai/prompts/tools/glob.md +52 -0
  149. connectonion/cli/co_ai/prompts/tools/grep.md +55 -0
  150. connectonion/cli/co_ai/prompts/tools/plan_mode.md +80 -0
  151. connectonion/cli/co_ai/prompts/tools/read.md +40 -0
  152. connectonion/cli/co_ai/prompts/tools/shell.md +67 -0
  153. connectonion/cli/co_ai/prompts/tools/task.md +51 -0
  154. connectonion/cli/co_ai/prompts/tools/todo.md +139 -0
  155. connectonion/cli/co_ai/prompts/tools/write.md +47 -0
  156. connectonion/cli/co_ai/prompts/workflow.md +89 -0
  157. connectonion/cli/co_ai/reminders.py +159 -0
  158. connectonion/cli/co_ai/sessions.py +110 -0
  159. connectonion/cli/co_ai/skills/__init__.py +37 -0
  160. connectonion/cli/co_ai/skills/builtin/commit/SKILL.md +63 -0
  161. connectonion/cli/co_ai/skills/builtin/review-pr/SKILL.md +76 -0
  162. connectonion/cli/co_ai/skills/loader.py +166 -0
  163. connectonion/cli/co_ai/skills/tool.py +46 -0
  164. connectonion/cli/co_ai/tools/__init__.py +92 -0
  165. connectonion/cli/co_ai/tools/ask_user.py +35 -0
  166. connectonion/cli/co_ai/tools/background.py +201 -0
  167. connectonion/cli/co_ai/tools/diff_writer.py +291 -0
  168. connectonion/cli/co_ai/tools/edit.py +89 -0
  169. connectonion/cli/co_ai/tools/glob.py +84 -0
  170. connectonion/cli/co_ai/tools/grep.py +158 -0
  171. connectonion/cli/co_ai/tools/load_guide.py +23 -0
  172. connectonion/cli/co_ai/tools/multi_edit.py +116 -0
  173. connectonion/cli/co_ai/tools/plan_mode.py +172 -0
  174. connectonion/cli/co_ai/tools/read.py +67 -0
  175. connectonion/cli/co_ai/tools/task.py +59 -0
  176. connectonion/cli/co_ai/tools/todo_list.py +159 -0
  177. connectonion/cli/co_ai/tools/write.py +126 -0
  178. connectonion/cli/commands/__init__.py +11 -1
  179. connectonion/cli/commands/ai_commands.py +34 -0
  180. connectonion/cli/commands/copy_commands.py +55 -6
  181. connectonion/cli/commands/create.py +20 -17
  182. connectonion/cli/commands/init.py +19 -22
  183. connectonion/cli/commands/project_cmd_lib.py +15 -0
  184. connectonion/cli/main.py +11 -0
  185. connectonion/console.py +15 -1
  186. connectonion/core/__init__.py +10 -1
  187. connectonion/core/agent.py +37 -16
  188. connectonion/core/exceptions.py +74 -0
  189. connectonion/core/llm.py +54 -6
  190. connectonion/core/tool_executor.py +32 -31
  191. connectonion/core/tool_factory.py +47 -10
  192. connectonion/debug/__init__.py +10 -1
  193. connectonion/debug/debug_explainer/__init__.py +10 -1
  194. connectonion/debug/execution_analyzer/__init__.py +10 -1
  195. connectonion/debug/execution_analyzer/execution_analysis.py +5 -2
  196. connectonion/debug/runtime_inspector/__init__.py +10 -1
  197. connectonion/docs/.package-ignore +6 -0
  198. connectonion/docs/README.md +2036 -0
  199. connectonion/docs/api.md +457 -0
  200. connectonion/docs/archive/001-ai-agent-is-just-prompt-plus-function.md +249 -0
  201. connectonion/docs/archive/README.md +53 -0
  202. connectonion/docs/archive/archive/consolidation-plan.md +72 -0
  203. connectonion/docs/archive/archive/core-principles-extracted.md +239 -0
  204. connectonion/docs/archive/archive/master-principles.md +222 -0
  205. connectonion/docs/archive/archive/principles.md +293 -0
  206. connectonion/docs/archive/archive/simplicity-principles.md +221 -0
  207. connectonion/docs/archive/attack-defense-insights.md +410 -0
  208. connectonion/docs/archive/business-model.md +305 -0
  209. connectonion/docs/archive/core-principles-unified.md +190 -0
  210. connectonion/docs/archive/discussion-journey.md +178 -0
  211. connectonion/docs/archive/economic-analysis.md +323 -0
  212. connectonion/docs/archive/features/01-share-and-find.md +256 -0
  213. connectonion/docs/archive/features/02-agent-authentication.md +93 -0
  214. connectonion/docs/archive/features/03-test-before-trust.md +71 -0
  215. connectonion/docs/archive/features/06-reliability-and-offline.md +197 -0
  216. connectonion/docs/archive/features/README.md +46 -0
  217. connectonion/docs/archive/features-roadmap.md +247 -0
  218. connectonion/docs/archive/mcp-comparison-insights.md +215 -0
  219. connectonion/docs/archive/migration-strategy.md +571 -0
  220. connectonion/docs/archive/mini-whitepaper.md +293 -0
  221. connectonion/docs/archive/network-protocol.md +394 -0
  222. connectonion/docs/archive/semantic-revolution.md +367 -0
  223. connectonion/docs/archive/technical-architecture.md +453 -0
  224. connectonion/docs/archive/the-semantic-insight.md +207 -0
  225. connectonion/docs/archive/threat-model.md +164 -0
  226. connectonion/docs/cli/README.md +805 -0
  227. connectonion/docs/cli/auth.md +46 -0
  228. connectonion/docs/cli/browser.md +235 -0
  229. connectonion/docs/cli/copy.md +232 -0
  230. connectonion/docs/cli/create.md +335 -0
  231. connectonion/docs/cli/init.md +431 -0
  232. connectonion/docs/co-directory-structure.md +214 -0
  233. connectonion/docs/concepts/agent.md +1078 -0
  234. connectonion/docs/concepts/events.md +699 -0
  235. connectonion/docs/concepts/llm_do.md +256 -0
  236. connectonion/docs/concepts/max_iterations.md +362 -0
  237. connectonion/docs/concepts/models.md +641 -0
  238. connectonion/docs/concepts/plugins.md +100 -0
  239. connectonion/docs/concepts/prompts.md +122 -0
  240. connectonion/docs/concepts/session.md +428 -0
  241. connectonion/docs/concepts/tools.md +512 -0
  242. connectonion/docs/concepts/transcribe.md +156 -0
  243. connectonion/docs/concepts/trust.md +291 -0
  244. connectonion/docs/connectonion.md +1256 -0
  245. connectonion/docs/debug/README.md +18 -0
  246. connectonion/docs/debug/auto_debug.md +1026 -0
  247. connectonion/docs/debug/console.md +129 -0
  248. connectonion/docs/debug/eval-format.md +178 -0
  249. connectonion/docs/debug/eval.md +230 -0
  250. connectonion/docs/debug/exceptions.md +307 -0
  251. connectonion/docs/debug/log.md +117 -0
  252. connectonion/docs/debug/xray.md +215 -0
  253. connectonion/docs/design-decisions/001-choosing-input-method.md +202 -0
  254. connectonion/docs/design-decisions/002-choosing-llm-function-name.md +202 -0
  255. connectonion/docs/design-decisions/003-choosing-trust-keyword.md +141 -0
  256. connectonion/docs/design-decisions/004-cli-create-flow.md +117 -0
  257. connectonion/docs/design-decisions/005-designing-agent-network-protocol.md +503 -0
  258. connectonion/docs/design-decisions/006-agent-address-format.md +305 -0
  259. connectonion/docs/design-decisions/007-authentication-backend-design.md +240 -0
  260. connectonion/docs/design-decisions/008-naming-is-hard.md +228 -0
  261. connectonion/docs/design-decisions/009-why-connect-function.md +167 -0
  262. connectonion/docs/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
  263. connectonion/docs/design-decisions/011-global-config-identity-management.md +357 -0
  264. connectonion/docs/design-decisions/012-tool-execution-separation.md +259 -0
  265. connectonion/docs/design-decisions/013-debug-and-logging-design.md +253 -0
  266. connectonion/docs/design-decisions/014-hook-system-design.md +510 -0
  267. connectonion/docs/design-decisions/015-interactive-auto-debug-design.md +837 -0
  268. connectonion/docs/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
  269. connectonion/docs/design-decisions/017-session-logging-and-eval-format.md +120 -0
  270. connectonion/docs/design-decisions/018-event-api-naming.md +274 -0
  271. connectonion/docs/design-decisions/019-agent-lifecycle-design.md +655 -0
  272. connectonion/docs/design-decisions/020-trust-system-and-network-architecture.md +503 -0
  273. connectonion/docs/design-decisions/021-task-storage-jsonl-design.md +496 -0
  274. connectonion/docs/design-decisions/022-raw-asgi-implementation.md +273 -0
  275. connectonion/docs/examples.md +0 -0
  276. connectonion/docs/hook-system-options.md +364 -0
  277. connectonion/docs/integrations/README.md +12 -0
  278. connectonion/docs/integrations/auth.md +450 -0
  279. connectonion/docs/integrations/google.md +431 -0
  280. connectonion/docs/integrations/microsoft.md +370 -0
  281. connectonion/docs/network/README.md +14 -0
  282. connectonion/docs/network/connect.md +629 -0
  283. connectonion/docs/network/deploy.md +124 -0
  284. connectonion/docs/network/host.md +1087 -0
  285. connectonion/docs/network/io.md +538 -0
  286. connectonion/docs/network/protocol/agent-relay-protocol.md +495 -0
  287. connectonion/docs/network/protocol/announce-message.md +115 -0
  288. connectonion/docs/principles.md +124 -0
  289. connectonion/docs/quickstart.md +261 -0
  290. connectonion/docs/roadmap.md +81 -0
  291. connectonion/docs/templates/README.md +77 -0
  292. connectonion/docs/templates/meta-agent.md +152 -0
  293. connectonion/docs/templates/minimal.md +105 -0
  294. connectonion/docs/templates/playwright.md +130 -0
  295. connectonion/docs/templates/web-research.md +144 -0
  296. connectonion/docs/tui/README.md +95 -0
  297. connectonion/docs/tui/chat.md +181 -0
  298. connectonion/docs/tui/divider.md +63 -0
  299. connectonion/docs/tui/dropdown.md +83 -0
  300. connectonion/docs/tui/footer.md +44 -0
  301. connectonion/docs/tui/fuzzy.md +68 -0
  302. connectonion/docs/tui/input.md +84 -0
  303. connectonion/docs/tui/keys.md +77 -0
  304. connectonion/docs/tui/pick.md +71 -0
  305. connectonion/docs/tui/providers.md +89 -0
  306. connectonion/docs/tui/status_bar.md +67 -0
  307. connectonion/docs/useful_plugins/README.md +160 -0
  308. connectonion/docs/useful_plugins/calendar_plugin.md +68 -0
  309. connectonion/docs/useful_plugins/eval.md +89 -0
  310. connectonion/docs/useful_plugins/gmail_plugin.md +68 -0
  311. connectonion/docs/useful_plugins/image_result_formatter.md +74 -0
  312. connectonion/docs/useful_plugins/re_act.md +86 -0
  313. connectonion/docs/useful_plugins/shell_approval.md +69 -0
  314. connectonion/docs/useful_plugins/system_reminder.md +210 -0
  315. connectonion/docs/useful_prompts/README.md +127 -0
  316. connectonion/docs/useful_prompts/coding_agent.md +214 -0
  317. connectonion/docs/useful_tools/README.md +81 -0
  318. connectonion/docs/useful_tools/ask_user.md +103 -0
  319. connectonion/docs/useful_tools/diff_writer.md +158 -0
  320. connectonion/docs/useful_tools/get_emails.md +519 -0
  321. connectonion/docs/useful_tools/gmail.md +155 -0
  322. connectonion/docs/useful_tools/google_calendar.md +126 -0
  323. connectonion/docs/useful_tools/memory.md +506 -0
  324. connectonion/docs/useful_tools/microsoft_calendar.md +126 -0
  325. connectonion/docs/useful_tools/outlook.md +140 -0
  326. connectonion/docs/useful_tools/send_email.md +423 -0
  327. connectonion/docs/useful_tools/shell.md +115 -0
  328. connectonion/docs/useful_tools/slash_command.md +116 -0
  329. connectonion/docs/useful_tools/terminal.md +115 -0
  330. connectonion/docs/useful_tools/todo_list.md +272 -0
  331. connectonion/docs/useful_tools/web_fetch.md +150 -0
  332. connectonion/docs/vibe-coding-guide.md +97 -0
  333. connectonion/docs/windows-support.md +258 -0
  334. connectonion/logger.py +3 -3
  335. connectonion/network/__init__.py +19 -6
  336. connectonion/network/asgi/__init__.py +81 -0
  337. connectonion/network/asgi/http.py +205 -0
  338. connectonion/network/asgi/websocket.py +217 -0
  339. connectonion/network/connect.py +232 -185
  340. connectonion/network/host/__init__.py +59 -0
  341. connectonion/network/host/auth.py +191 -0
  342. connectonion/network/host/routes.py +135 -0
  343. connectonion/network/host/server.py +289 -0
  344. connectonion/network/host/session.py +78 -0
  345. connectonion/network/io/__init__.py +21 -0
  346. connectonion/network/{connection.py → io/base.py} +17 -42
  347. connectonion/network/io/websocket.py +55 -0
  348. connectonion/network/relay.py +37 -16
  349. connectonion/network/trust/__init__.py +30 -0
  350. connectonion/network/trust/factory.py +138 -0
  351. connectonion/network/{trust_agents.py → trust/prompts.py} +3 -3
  352. connectonion/network/{trust_functions.py → trust/tools.py} +2 -2
  353. connectonion/prompt_files/__init__.py +11 -1
  354. connectonion/prompt_files/react_acknowledge.md +26 -0
  355. connectonion/prompts.py +10 -1
  356. connectonion/tui/chat.py +10 -1
  357. connectonion/tui/divider.py +10 -1
  358. connectonion/tui/dropdown.py +10 -1
  359. connectonion/tui/footer.py +8 -0
  360. connectonion/tui/fuzzy.py +11 -1
  361. connectonion/tui/input.py +118 -70
  362. connectonion/tui/keys.py +133 -6
  363. connectonion/tui/providers.py +11 -1
  364. connectonion/tui/status_bar.py +10 -1
  365. connectonion/useful_events_handlers/__init__.py +8 -0
  366. connectonion/useful_events_handlers/reflect.py +19 -4
  367. connectonion/useful_plugins/__init__.py +2 -1
  368. connectonion/useful_plugins/eval.py +2 -2
  369. connectonion/useful_plugins/gmail_plugin.py +3 -3
  370. connectonion/useful_plugins/image_result_formatter.py +3 -3
  371. connectonion/useful_plugins/re_act.py +114 -28
  372. connectonion/useful_plugins/shell_approval.py +2 -2
  373. connectonion/useful_plugins/system_reminder.py +103 -0
  374. connectonion/useful_plugins/ui_stream.py +18 -133
  375. connectonion/useful_prompts/README.md +61 -0
  376. connectonion/useful_prompts/__init__.py +45 -0
  377. connectonion/useful_prompts/coding_agent/README.md +106 -0
  378. connectonion/useful_prompts/coding_agent/assembler.py +123 -0
  379. connectonion/useful_prompts/coding_agent/prompts/main.md +227 -0
  380. connectonion/useful_prompts/coding_agent/prompts/tools/ask_user.md +61 -0
  381. connectonion/useful_prompts/coding_agent/prompts/tools/background.md +57 -0
  382. connectonion/useful_prompts/coding_agent/prompts/tools/edit.md +90 -0
  383. connectonion/useful_prompts/coding_agent/prompts/tools/glob.md +52 -0
  384. connectonion/useful_prompts/coding_agent/prompts/tools/grep.md +55 -0
  385. connectonion/useful_prompts/coding_agent/prompts/tools/plan_mode.md +80 -0
  386. connectonion/useful_prompts/coding_agent/prompts/tools/read.md +40 -0
  387. connectonion/useful_prompts/coding_agent/prompts/tools/shell.md +67 -0
  388. connectonion/useful_prompts/coding_agent/prompts/tools/task.md +51 -0
  389. connectonion/useful_prompts/coding_agent/prompts/tools/todo.md +139 -0
  390. connectonion/useful_prompts/coding_agent/prompts/tools/write.md +48 -0
  391. connectonion/useful_prompts/system-reminders/security-warning.md +14 -0
  392. connectonion/useful_prompts/system-reminders/test-reminder.md +11 -0
  393. connectonion/useful_tools/__init__.py +31 -4
  394. connectonion/useful_tools/ask_user.py +35 -0
  395. connectonion/useful_tools/bash.py +69 -0
  396. connectonion/useful_tools/diff_writer.py +186 -94
  397. connectonion/useful_tools/edit.py +102 -0
  398. connectonion/useful_tools/glob_files.py +97 -0
  399. connectonion/useful_tools/grep_files.py +171 -0
  400. connectonion/useful_tools/multi_edit.py +116 -0
  401. connectonion/useful_tools/read_file.py +73 -0
  402. connectonion/useful_tools/shell.py +50 -45
  403. connectonion/useful_tools/write_file.py +129 -0
  404. {connectonion-0.6.1.dist-info → connectonion-0.6.3.dist-info}/METADATA +10 -3
  405. connectonion-0.6.3.dist-info/RECORD +469 -0
  406. connectonion/cli/browser_agent/scroll_strategies.py +0 -276
  407. connectonion/network/asgi.py +0 -407
  408. connectonion/network/host.py +0 -616
  409. connectonion/network/trust.py +0 -166
  410. connectonion-0.6.1.dist-info/RECORD +0 -123
  411. /connectonion/cli/{docs → co_ai/prompts/connectonion}/connectonion.md +0 -0
  412. {connectonion-0.6.1.dist-info → connectonion-0.6.3.dist-info}/WHEEL +0 -0
  413. {connectonion-0.6.1.dist-info → connectonion-0.6.3.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,202 @@
1
+ # Design Decision: Why We Chose `input()` Over `run()`
2
+
3
+ *Date: 2025-08-11*
4
+ *Decision: Use `agent.input()` as the primary method for agent interaction*
5
+ *Status: Implemented in v0.0.1b3*
6
+
7
+ ## The Journey
8
+
9
+ When we first built ConnectOnion, we followed the industry standard and used `agent.input()` as our primary method. It worked, it was familiar to developers who'd used similar frameworks, and nobody complained. But sometimes, the absence of complaints doesn't mean you've found the best solution—it just means people have accepted the status quo.
10
+
11
+ The question that changed everything was simple: **"Would `agent.input()` be clearer for engineers?"**
12
+
13
+ ## The Problem
14
+
15
+ We noticed that when developers first encountered our framework, there was always a slight pause:
16
+
17
+ ```python
18
+ agent = Agent("assistant")
19
+ result = agent.input("What's the weather?") # What exactly am I "running"?
20
+ ```
21
+
22
+ That pause—that fraction of a second where developers had to translate "run" into "process my prompt"—was a tiny friction point. But tiny frictions add up, especially when you're trying to make AI agents as accessible as possible.
23
+
24
+ ## The Exploration
25
+
26
+ We evaluated several candidates, each with its own philosophy:
27
+
28
+ ### The Original: `run()`
29
+ ```python
30
+ result = agent.input("Generate a Python function")
31
+ ```
32
+ - **Pros:** Industry standard, familiar from threading and app frameworks
33
+ - **Cons:** Ambiguous—are we running the agent or running the prompt?
34
+ - **Mental model:** "Execute something" (but what?)
35
+
36
+ ### The Conversationalist: `chat()`
37
+ ```python
38
+ result = agent.chat("Generate a Python function")
39
+ ```
40
+ - **Pros:** Immediately conveys interaction
41
+ - **Cons:** Implies conversation, awkward for non-conversational tasks
42
+ - **Mental model:** "Have a conversation"
43
+
44
+ ### The Questioner: `ask()`
45
+ ```python
46
+ result = agent.ask("Generate a Python function")
47
+ ```
48
+ - **Pros:** Natural for questions
49
+ - **Cons:** Semantically wrong for commands and generation tasks
50
+ - **Mental model:** "Ask a question"
51
+
52
+ ### The Processor: `process()`
53
+ ```python
54
+ result = agent.process("Generate a Python function")
55
+ ```
56
+ - **Pros:** Technically accurate, universal
57
+ - **Cons:** Feels mechanical, not intuitive
58
+ - **Mental model:** "Process data"
59
+
60
+ ### The Invoker: `invoke()`
61
+ ```python
62
+ result = agent.invoke("Generate a Python function")
63
+ ```
64
+ - **Pros:** Technically precise, enterprise-familiar
65
+ - **Cons:** Requires vocabulary knowledge, not guessable
66
+ - **Mental model:** "Invoke... something?"
67
+
68
+ ### The Chosen One: `input()`
69
+ ```python
70
+ result = agent.input("Generate a Python function")
71
+ ```
72
+ - **Pros:** Immediately clear data flow, universally understood
73
+ - **Cons:** Passive voice, slight conflict with Python's built-in
74
+ - **Mental model:** "Input → Output" (everyone gets this!)
75
+
76
+ ## The Principles We Used
77
+
78
+ We established clear principles for evaluating our options:
79
+
80
+ 1. **Zero Learning Curve** - Could someone guess it without documentation?
81
+ 2. **Universal Applicability** - Does it work for all use cases?
82
+ 3. **Cognitive Directness** - No mental translation required
83
+ 4. **Technical Accuracy** - Does it describe what actually happens?
84
+
85
+ ## The "Mom Test"
86
+
87
+ We applied what we call the "Mom Test"—could you explain this to someone non-technical?
88
+
89
+ - "You **run** the agent" → "Run it where? Like exercise?"
90
+ - "You **invoke** the agent" → "What does invoke mean?"
91
+ - "You **input** text to the agent" → "Oh, like typing into it? Got it!"
92
+
93
+ ## The Revelation
94
+
95
+ The breakthrough came when we realized we were optimizing for the wrong thing. We were trying to describe what the *agent* does (runs, processes, invokes) instead of what the *user* does (provides input).
96
+
97
+ ```python
98
+ # This is what users think:
99
+ "I have input" → "I give it to the agent" → "I get output"
100
+
101
+ # Not this:
102
+ "I have a prompt" → "I run the agent with it" → "The agent executes"
103
+ ```
104
+
105
+ ## Real-World Validation
106
+
107
+ We looked at what developers naturally type when exploring a new agent framework:
108
+
109
+ ```python
110
+ # Most common attempts (in order):
111
+ 1. agent.input(...) # 40% try this first
112
+ 2. agent.send(...) # 25% (from messaging paradigm)
113
+ 3. agent.ask(...) # 20% (assuming Q&A)
114
+ 4. agent.input(...) # 10% (from experience)
115
+ 5. agent.process(...) # 5% (data engineers)
116
+ ```
117
+
118
+ The data was clear: `input()` is what people naturally expect.
119
+
120
+ ## Addressing the Concerns
121
+
122
+ ### "But Python has a built-in `input()` function!"
123
+
124
+ True, but context matters:
125
+ ```python
126
+ # Global function - getting input FROM user
127
+ user_text = input("Enter text: ")
128
+
129
+ # Method on object - giving input TO agent
130
+ result = agent.input(user_text)
131
+
132
+ # These are clearly different contexts
133
+ ```
134
+
135
+ In practice, this has never caused confusion. The contexts are so different that developers intuitively understand the distinction.
136
+
137
+ ### "But `input()` sounds passive!"
138
+
139
+ Yes, from the agent's perspective. But we're designing for the user's perspective. The user actively inputs, the agent processes, the user receives output. The method name reflects the user's action, not the agent's.
140
+
141
+ ### "But other frameworks use `run()` or `invoke()`!"
142
+
143
+ And that's exactly why there's room for improvement. Just because something is common doesn't mean it's optimal. We chose clarity over convention.
144
+
145
+ ## The Implementation
146
+
147
+ ```python
148
+ class Agent:
149
+ def input(self, prompt: str) -> str:
150
+ """Provide input to the agent and get response."""
151
+ # Core implementation
152
+
153
+ # Backward compatibility
154
+ run = input # Alias for existing users
155
+ ```
156
+
157
+ ## The Impact
158
+
159
+ Since switching to `input()`:
160
+
161
+ 1. **Faster onboarding** - New users understand immediately
162
+ 2. **Fewer questions** - No more "what does run mean?" in discussions
163
+ 3. **Clearer code** - Reading code with `input()` is self-documenting
164
+ 4. **Better mental model** - Users think in terms of I/O naturally
165
+
166
+ ## Example: The Difference in Practice
167
+
168
+ ```python
169
+ # Before (with run):
170
+ agent = Agent("assistant")
171
+ result = agent.input("Analyze this data") # Cognitive translation needed
172
+
173
+ # After (with input):
174
+ agent = Agent("assistant")
175
+ result = agent.input("Analyze this data") # Immediately clear
176
+ ```
177
+
178
+ The difference seems small, but multiply this by every interaction, every developer, every day—and it adds up to significant cognitive load reduction.
179
+
180
+ ## Conclusion
181
+
182
+ Choosing `input()` over `run()` wasn't about following trends or being different. It was about recognizing that the best API is the one users don't have to learn—they already understand it.
183
+
184
+ When you design APIs, ask yourself: "What would someone try without reading the docs?" That's usually your answer.
185
+
186
+ ## Lessons Learned
187
+
188
+ 1. **Optimize for user mental models, not technical accuracy**
189
+ 2. **The best name is the one people guess correctly**
190
+ 3. **Small frictions compound into big barriers**
191
+ 4. **Sometimes the "industry standard" is just the "industry default"**
192
+ 5. **Test with people who haven't read your documentation**
193
+
194
+ ## What This Means for ConnectOnion
195
+
196
+ This decision reflects our core philosophy: **AI agents should be as intuitive as possible**. Every design decision should reduce the barrier between human intent and agent action.
197
+
198
+ When you use `agent.input()`, you're not learning our API—you're using knowledge you already have. That's the ConnectOnion way.
199
+
200
+ ---
201
+
202
+ *This document is part of our design decision series, where we share the thinking behind ConnectOnion's API choices. These aren't just technical decisions—they're user experience decisions.*
@@ -0,0 +1,202 @@
1
+ # Design Decision: Choosing `llm_do()` as the Function Name
2
+
3
+ ## Date
4
+ 2024-01-29 (Updated: 2024-01-30)
5
+
6
+ ## Status
7
+ Decided → Revised
8
+
9
+ ## Context
10
+
11
+ We needed a simple, intuitive function for one-shot LLM calls with optional structured output. The function would:
12
+ - Make single-round LLM calls (no loops/iterations)
13
+ - Support both string and Pydantic model outputs
14
+ - Accept prompts as strings or file paths
15
+ - Be immediately understandable to developers
16
+
17
+ ## Initial Decision: `llm()`
18
+
19
+ We initially chose `llm()` for its simplicity. However, user feedback revealed a critical issue:
20
+ - **`llm` reads as a noun, not a verb**
21
+ - Functions should be actions (verbs)
22
+ - Users were confused about what `llm()` does at a glance
23
+
24
+ ## Final Decision: `llm_do()`
25
+
26
+ After extensive analysis, we chose `llm_do()` because:
27
+
28
+ 1. **Has a clear verb**: "do" is the most versatile action word
29
+ 2. **Works for all use cases**:
30
+ ```python
31
+ answer = llm_do("What's 2+2?") # Do the calculation
32
+ invoice = llm_do(text, output=Invoice) # Do the extraction
33
+ translation = llm_do("Hello", system_prompt="Translate") # Do the translation
34
+ ```
35
+ 3. **Immediately clear**: Users understand it's performing an action
36
+ 4. **Still short**: Only 6 characters
37
+
38
+ ## Options We Considered
39
+
40
+ ### 1. `llm_do()` ✅ **CHOSEN**
41
+ ```python
42
+ answer = llm_do("What's 2+2?")
43
+ data = llm_do(text, output=Report)
44
+ ```
45
+
46
+ **Pros:**
47
+ - Clear verb that implies action
48
+ - Works naturally for ALL use cases
49
+ - Professional yet simple
50
+ - Only 6 characters
51
+
52
+ **Cons:**
53
+ - Slightly longer than `llm()`
54
+
55
+ ### 2. `llm()` (Original)
56
+ ```python
57
+ answer = llm("What's 2+2?")
58
+ ```
59
+
60
+ **Pros:**
61
+ - Shortest possible (3 chars)
62
+ - Clean look
63
+
64
+ **Cons:**
65
+ - **Reads as noun, not verb**
66
+ - Unclear what action it performs
67
+ - Users confused at first glance
68
+
69
+ ### 3. `llm_oneshot()`
70
+ ```python
71
+ result = llm_oneshot("Process this")
72
+ ```
73
+
74
+ **Pros:**
75
+ - Explicitly describes behavior
76
+ - Zero ambiguity
77
+
78
+ **Cons:**
79
+ - Too verbose (11 characters)
80
+ - Feels like enterprise Java
81
+ - Not elegant
82
+
83
+ ### 4. `llm_tap()`
84
+ ```python
85
+ answer = llm_tap("What's 2+2?")
86
+ ```
87
+
88
+ **Pros:**
89
+ - Elegant, modern feel
90
+ - Short (7 chars)
91
+
92
+ **Cons:**
93
+ - Only sounds good for questions
94
+ - Weird for extraction/conversion tasks
95
+
96
+ ### 5. `llm_go()`
97
+ ```python
98
+ answer = llm_go("What's 2+2?")
99
+ ```
100
+
101
+ **Pros:**
102
+ - Very short (6 chars)
103
+ - Simple verb
104
+
105
+ **Cons:**
106
+ - Too vague ("go where?")
107
+ - Doesn't indicate what happens
108
+
109
+ ### 6. `llm_gen()`
110
+ ```python
111
+ answer = llm_gen("What's 2+2?")
112
+ ```
113
+
114
+ **Pros:**
115
+ - "gen" is a clear verb (generate)
116
+ - Modern (Gen AI)
117
+
118
+ **Cons:**
119
+ - Implies generation only
120
+ - Not intuitive for extraction tasks
121
+
122
+ ### 7. `llm_call()`
123
+ ```python
124
+ answer = llm_call("What's 2+2?")
125
+ ```
126
+
127
+ **Pros:**
128
+ - "Call" implies single execution
129
+ - Natural phrasing
130
+
131
+ **Cons:**
132
+ - Could be confused with function calls
133
+ - Less versatile than "do"
134
+
135
+ ### 8. `ask()`
136
+ ```python
137
+ answer = ask("What's 2+2?")
138
+ ```
139
+
140
+ **Pros:**
141
+ - Natural, conversational
142
+ - Very short
143
+
144
+ **Cons:**
145
+ - Doesn't convey all use cases
146
+ - Too informal for extraction/analysis
147
+
148
+ ## Implementation
149
+
150
+ ```python
151
+ from connectonion import llm_do
152
+
153
+ # Clear distinction in usage
154
+ result = llm_do("Quick question") # Verb makes action clear
155
+ agent.llm = OpenAILLM() # Noun for the instance
156
+ response = agent.llm.complete(...) # Method on the instance
157
+ ```
158
+
159
+ ## Testing Against Real Use Cases
160
+
161
+ Looking at our documentation examples:
162
+
163
+ ```python
164
+ # Data Extraction
165
+ invoice = llm_do(invoice_text, output=Invoice) # ✅ "Do the extraction"
166
+
167
+ # Analysis
168
+ analysis = llm_do(text, output=FeedbackAnalysis) # ✅ "Do the analysis"
169
+
170
+ # Translation
171
+ translation = llm_do("Hello", system_prompt="Translate") # ✅ "Do the translation"
172
+
173
+ # Validation
174
+ is_valid = llm_do("Is this SQL valid?") # ✅ "Do the validation"
175
+ ```
176
+
177
+ `llm_do()` reads naturally across all use cases, while alternatives like `llm_tap()` only work for some.
178
+
179
+ ## Consequences
180
+
181
+ ### Positive
182
+ - Users immediately understand it's an action
183
+ - Works naturally for all use cases
184
+ - Clear contrast with `Agent()` for complex workflows
185
+ - Follows function naming best practices (verb-based)
186
+
187
+ ### Negative
188
+ - Slightly longer than original `llm()` (6 vs 3 chars)
189
+ - Need to update all documentation and examples
190
+
191
+ ## Lessons Learned
192
+
193
+ 1. **Functions need verbs**: Even if shorter, noun-based function names confuse users
194
+ 2. **Versatility matters**: The verb must work for ALL use cases, not just some
195
+ 3. **User feedback is crucial**: The confusion with `llm()` only became clear through usage
196
+ 4. **"Do" is the ultimate verb**: It's the most versatile action word in English
197
+
198
+ ## References
199
+
200
+ - [Principle: Simple things simple](../principles.md)
201
+ - [Python naming conventions](https://peps.python.org/pep-0008/)
202
+ - Similar patterns: `requests.get()`, `json.loads()`, `pd.read_csv()`
@@ -0,0 +1,141 @@
1
+ # Why We Chose "Trust" - The Story Behind ConnectOnion's Authentication Keyword
2
+
3
+ *December 2024*
4
+
5
+ When designing ConnectOnion's agent-to-agent authentication system, we faced a crucial decision: what should we call the parameter that controls how agents verify each other? After evaluating 15+ options and extensive discussion, we settled on `trust`. Here's why.
6
+
7
+ ## The Challenge: Finding a Bidirectional Word
8
+
9
+ Our authentication system needed a keyword that works in two directions:
10
+ 1. **As a service provider**: "Who can use my services?"
11
+ 2. **As a service consumer**: "Which services do I trust?"
12
+
13
+ Most security terms only work in one direction. We needed something that naturally flows both ways.
14
+
15
+ ## Options We Considered
16
+
17
+ ### 1. `auth` / `authentication`
18
+ **Why not**: Too technical and implies traditional authentication (passwords, tokens). We're doing behavioral verification, not credential checking.
19
+
20
+ ### 2. `verify` / `validate`
21
+ **Why not**: One-directional - you verify others, but saying "I'm verified" sounds like a credential system.
22
+
23
+ ### 3. `guard` / `guardian`
24
+ **Why not**: Implies blocking/protection only. Doesn't capture the mutual relationship between agents.
25
+
26
+ ### 4. `policy` / `rules`
27
+ **Why not**: Too formal and configuration-heavy. Doesn't match our natural language approach.
28
+
29
+ ### 5. `security` / `safe`
30
+ **Why not**: Too broad and creates fear. Security implies threats; we want collaboration.
31
+
32
+ ### 6. `filter` / `allow`
33
+ **Why not**: One-directional and negative. Focuses on exclusion rather than building relationships.
34
+
35
+ ### 7. `mode` / `env`
36
+ **Why not**: Too generic. Could mean anything - doesn't clearly indicate authentication purpose.
37
+
38
+ ### 8. `strict` / `open` / `tested`
39
+ **Why not**: These became our trust *levels*, but the parameter itself needed a clearer name.
40
+
41
+ ### 9. `require` / `expect`
42
+ **Why not**: Works for incoming but awkward for outgoing ("I require others" vs "I'm required"?).
43
+
44
+ ### 10. `proof` / `prove`
45
+ **Why not**: Implies formal verification. We do behavioral testing, not mathematical proofs.
46
+
47
+ ## Why "Trust" Won
48
+
49
+ ### 1. Naturally Bidirectional
50
+ ```python
51
+ # Both directions feel natural
52
+ agent = Agent(name="my_service", trust="strict") # I trust strict agents
53
+ service = need("translator", trust="tested") # I need tested services
54
+ ```
55
+
56
+ The word "trust" flows both ways without awkwardness.
57
+
58
+ ### 2. Human-Friendly
59
+ Developers immediately understand trust. It's how we think about relationships:
60
+ - "I trust this service"
61
+ - "This service trusts me"
62
+ - "We need to build trust"
63
+
64
+ ### 3. Progressive, Not Binary
65
+ Trust isn't yes/no - it grows through interaction:
66
+ ```python
67
+ trust="open" # Trust everyone (dev mode)
68
+ trust="tested" # Test first, then trust
69
+ trust="strict" # Only trusted partners
70
+ ```
71
+
72
+ ### 4. Matches Real Behavior
73
+ We're not checking passwords or certificates. We're testing behavior:
74
+ - Can you translate "Hello" to "Hola"?
75
+ - Do you respond within 500ms?
76
+ - Have we worked together successfully before?
77
+
78
+ This is trust-building, not authentication.
79
+
80
+ ### 5. Enables Natural Language Config
81
+ ```python
82
+ trust = """
83
+ I trust agents that:
84
+ - Pass my capability tests
85
+ - Respond quickly
86
+ - Have good track record
87
+ """
88
+ ```
89
+
90
+ "Trust policy" sounds natural. "Authentication policy" sounds bureaucratic.
91
+
92
+ ## The Unix Philosophy Connection
93
+
94
+ Following Unix principles, trust isn't a complex protocol - it's simple functions composed by prompts:
95
+
96
+ ```python
97
+ # Small, composable trust functions
98
+ def check_whitelist(agent_id): ...
99
+ def test_capability(agent, test): ...
100
+ def measure_response_time(agent): ...
101
+
102
+ # Composed into trust agents
103
+ trust_agent = Agent(
104
+ name="my_guardian",
105
+ tools=[check_whitelist, test_capability, measure_response_time]
106
+ )
107
+ ```
108
+
109
+ ## Some Challenges with "Trust"
110
+
111
+ We acknowledge potential confusion:
112
+
113
+ 1. **Overloaded Term**: "Trust" appears in many contexts (TLS, trust stores, web of trust)
114
+ 2. **Seems Soft**: Some developers might prefer "harder" security terms
115
+ 3. **Cultural Variations**: Trust has different connotations across cultures
116
+
117
+ But these are outweighed by its clarity and naturalness for our use case.
118
+
119
+ ## The Final Design
120
+
121
+ ```python
122
+ # Three forms, one keyword
123
+ translator = need("translate", trust="strict") # Simple level
124
+ translator = need("translate", trust="./trust.md") # Natural language
125
+ translator = need("translate", trust=my_trust_agent) # Custom agent
126
+
127
+ # Bidirectional by default
128
+ alice = Agent(name="alice", trust="tested") # Alice tests her users
129
+ bob_needs = need("service", trust="strict") # Bob only uses strict services
130
+ # Both must approve for connection!
131
+ ```
132
+
133
+ ## Conclusion
134
+
135
+ `trust` won because it's the most honest description of what we're doing. We're not authenticating with credentials or authorizing with permissions. We're building trust through behavioral verification and shared experiences.
136
+
137
+ In ConnectOnion, agents don't authenticate - they trust. And that makes all the difference.
138
+
139
+ ---
140
+
141
+ *This design decision exemplifies ConnectOnion's philosophy: make simple things simple, make complicated things possible. Trust is simple to understand, yet enables sophisticated agent relationships.*
@@ -0,0 +1,117 @@
1
+ # Design Decision: CLI Create Flow Optimization
2
+
3
+ ## Date
4
+ 2024-09-12
5
+
6
+ ## Status
7
+ Implemented
8
+
9
+ ## Context
10
+ The original `co create` command flow asked users for the project name first, then template selection, then AI configuration. This created a poor user experience where users had to name something before they knew what they were building.
11
+
12
+ ## Problem Statement
13
+ Users were experiencing decision paralysis and confusion because:
14
+ 1. They had to name their project before choosing what type of project it would be
15
+ 2. The template selection showed too much information in a verbose format
16
+ 3. Users had to type template names instead of using simple numeric selection
17
+ 4. The flow didn't align with natural decision-making process
18
+
19
+ ## Decision
20
+ We restructured the `co create` flow to follow a more intuitive order:
21
+
22
+ ### New Flow Order:
23
+ 1. **Template Selection** (first) - What are you building?
24
+ 2. **AI/API Configuration** (if needed) - How will it work?
25
+ 3. **Custom Description** (if custom template) - What specifically?
26
+ 4. **Project Name** (last) - What will you call it?
27
+
28
+ ### UI Improvements:
29
+ - Replaced verbose template descriptions with clean numbered list
30
+ - Users press 1-6 instead of typing template names
31
+ - Removed excessive file tree information from initial view
32
+ - Added confirmation message after selection
33
+
34
+ ## Implementation
35
+
36
+ ### Before:
37
+ ```
38
+ Project name [my-agent]: ???
39
+ [... then template selection with verbose output ...]
40
+ Template (minimal, web-research, email-agent, ...) [minimal]: minimal
41
+ ```
42
+
43
+ ### After:
44
+ ```
45
+ Choose a template:
46
+
47
+ 1. 📦 Minimal - Simple starting point
48
+ 2. 🔍 Web Research - Data analysis & web scraping
49
+ 3. 📧 Email Agent - Professional email assistant
50
+ 4. 🤖 Meta-Agent - ConnectOnion development assistant
51
+ 5. 🎭 Playwright - Browser automation
52
+ 6. ✨ Custom - AI generates based on your needs
53
+
54
+ Select template [1-6] [1]: 3
55
+ ✓ Selected: 📧 Email Agent
56
+
57
+ [... configuration ...]
58
+
59
+ Project name [my-agent]: email-assistant
60
+ ```
61
+
62
+ ## Rationale
63
+
64
+ ### Why Template First?
65
+ - **Natural decision flow**: Users first decide WHAT they want to build, then HOW to configure it, and finally WHAT to name it
66
+ - **Reduces cognitive load**: Naming is easier after understanding the project scope
67
+ - **Better defaults**: We can suggest better default names based on template choice (future enhancement)
68
+
69
+ ### Why Numeric Selection?
70
+ - **Faster**: Pressing "3" is faster than typing "email-agent"
71
+ - **Less error-prone**: No typos or case sensitivity issues
72
+ - **More accessible**: Better for users with mobility constraints
73
+ - **Industry standard**: Common pattern in CLI tools (npm init, create-react-app, etc.)
74
+
75
+ ### Why Minimal Display?
76
+ - **Reduces overwhelm**: Users see essential information only
77
+ - **Faster scanning**: Clean list is easier to parse than verbose trees
78
+ - **Mobile-friendly**: Works better in small terminal windows
79
+ - **Progressive disclosure**: Details available after selection if needed
80
+
81
+ ## Consequences
82
+
83
+ ### Positive
84
+ - Improved user experience with more intuitive flow
85
+ - Faster project creation (fewer keystrokes)
86
+ - Reduced decision paralysis
87
+ - Better alignment with user mental models
88
+ - More professional CLI experience
89
+
90
+ ### Negative
91
+ - Breaking change for users expecting old flow
92
+ - Scripts using the old flow need updating
93
+ - Less information upfront (though this is intentional)
94
+
95
+ ### Mitigations
96
+ - The `-y` flag still works for automated/scripted usage
97
+ - Template can still be specified via `-t` flag
98
+ - Verbose information still available via `--help`
99
+
100
+ ## Alternatives Considered
101
+
102
+ 1. **Interactive menu with arrow keys**: More complex to implement, requires additional dependencies
103
+ 2. **Keep name first but make optional**: Would complicate the flow with conditional logic
104
+ 3. **Show all information but paginated**: Would slow down the process
105
+ 4. **GUI/TUI interface**: Outside scope of simple CLI tool
106
+
107
+ ## References
108
+ - User feedback: "I think user are lazy, should let them to choose from template"
109
+ - Similar patterns: npm init, cargo new, create-react-app
110
+ - UX principle: Progressive disclosure
111
+ - ConnectOnion philosophy: "Keep simple things simple"
112
+
113
+ ## Future Enhancements
114
+ - Smart default names based on template (e.g., "my-email-agent" for email template)
115
+ - Remember user preferences for next time
116
+ - Template preview on hover/selection (if terminal supports it)
117
+ - Custom template gallery from community