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,126 @@
1
+ # GoogleCalendar
2
+
3
+ Google Calendar integration for managing events and meetings.
4
+
5
+ ## Usage
6
+
7
+ **Option 1: Import directly**
8
+
9
+ ```python
10
+ from connectonion import GoogleCalendar
11
+
12
+ agent = Agent("assistant", tools=[GoogleCalendar()])
13
+ ```
14
+
15
+ **Option 2: Copy and customize**
16
+
17
+ ```bash
18
+ co copy google_calendar
19
+ ```
20
+
21
+ ```python
22
+ from tools.google_calendar import GoogleCalendar # Your local copy
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ```python
28
+ from connectonion import Agent, GoogleCalendar
29
+
30
+ calendar = GoogleCalendar()
31
+ agent = Agent("assistant", tools=[calendar])
32
+
33
+ agent.input("What meetings do I have today?")
34
+ ```
35
+
36
+ ## Setup
37
+
38
+ Requires Google OAuth authorization:
39
+
40
+ ```bash
41
+ co auth google
42
+ ```
43
+
44
+ ## Methods
45
+
46
+ ### Reading Events
47
+
48
+ ```python
49
+ # List upcoming events
50
+ calendar.list_events(days_ahead=7, max_results=10)
51
+
52
+ # Get today's events
53
+ calendar.get_today_events()
54
+
55
+ # Get specific event
56
+ calendar.get_event(event_id="abc123")
57
+
58
+ # Get upcoming meetings
59
+ calendar.get_upcoming_meetings(days_ahead=7)
60
+
61
+ # Find free slots
62
+ calendar.find_free_slots(date="2024-01-15", duration_minutes=30)
63
+ ```
64
+
65
+ ### Creating Events
66
+
67
+ ```python
68
+ # Create event
69
+ calendar.create_event(
70
+ title="Team Meeting",
71
+ start_time="2024-01-15 14:00",
72
+ end_time="2024-01-15 15:00",
73
+ description="Weekly sync",
74
+ attendees="alice@example.com,bob@example.com",
75
+ location="Conference Room A"
76
+ )
77
+
78
+ # Create Google Meet meeting
79
+ calendar.create_meet(
80
+ title="Video Call",
81
+ start_time="2024-01-15 14:00",
82
+ end_time="2024-01-15 15:00",
83
+ attendees="alice@example.com",
84
+ description="Quick sync"
85
+ )
86
+ ```
87
+
88
+ ### Managing Events
89
+
90
+ ```python
91
+ # Update event
92
+ calendar.update_event(
93
+ event_id="abc123",
94
+ title="Updated Title",
95
+ start_time="2024-01-15 15:00",
96
+ end_time="2024-01-15 16:00"
97
+ )
98
+
99
+ # Delete event
100
+ calendar.delete_event(event_id="abc123")
101
+ ```
102
+
103
+ ## Use with calendar_plugin
104
+
105
+ For calendar approval before creating/modifying events:
106
+
107
+ ```python
108
+ from connectonion.useful_plugins import calendar_plugin
109
+
110
+ agent = Agent("assistant", tools=[calendar], plugins=[calendar_plugin])
111
+ ```
112
+
113
+ ## Customizing
114
+
115
+ Need to modify GoogleCalendar's behavior? Copy the source to your project:
116
+
117
+ ```bash
118
+ co copy google_calendar
119
+ ```
120
+
121
+ Then import from your local copy:
122
+
123
+ ```python
124
+ # from connectonion import GoogleCalendar # Before
125
+ from tools.google_calendar import GoogleCalendar # After - customize freely!
126
+ ```
@@ -0,0 +1,506 @@
1
+ # Memory System
2
+
3
+ Give your agents persistent memory using markdown-based storage.
4
+
5
+ ## Usage
6
+
7
+ **Option 1: Import directly**
8
+
9
+ ```python
10
+ from connectonion import Memory
11
+
12
+ agent = Agent("assistant", tools=[Memory()])
13
+ ```
14
+
15
+ **Option 2: Copy and customize**
16
+
17
+ ```bash
18
+ co copy memory
19
+ ```
20
+
21
+ ```python
22
+ from tools.memory import Memory # Your local copy
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ```python
28
+ from connectonion import Agent, Memory
29
+
30
+ memory = Memory()
31
+ agent = Agent(
32
+ name="assistant",
33
+ system_prompt="You are a helpful assistant with memory.",
34
+ tools=[memory]
35
+ )
36
+
37
+ # Agent can now remember things
38
+ agent.input("Remember that Alice prefers email communication")
39
+ agent.input("What do I know about Alice?")
40
+ ```
41
+
42
+ ## What is Memory?
43
+
44
+ Memory is a simple, file-based storage system that lets your agents:
45
+ - Save information persistently across sessions
46
+ - Retrieve information by key
47
+ - Search across all memories with regex
48
+ - Organize knowledge in markdown format
49
+
50
+ **Storage**: Memories start in a single `memory.md` file. When the file exceeds 3000 lines, it automatically splits into a directory structure with separate `.md` files per memory key.
51
+
52
+ ## Installation
53
+
54
+ Memory is included in ConnectOnion:
55
+
56
+ ```bash
57
+ pip install connectonion
58
+ ```
59
+
60
+ ## Basic Usage
61
+
62
+ ### Creating a Memory Instance
63
+
64
+ ```python
65
+ from connectonion import Memory
66
+
67
+ # Default (creates memory.md)
68
+ memory = Memory()
69
+
70
+ # Custom file path
71
+ memory = Memory(memory_file="agent_knowledge.md")
72
+
73
+ # Legacy: directory structure (creates directory immediately)
74
+ memory = Memory(memory_dir="agent_knowledge")
75
+ ```
76
+
77
+ ### Adding Memory to an Agent
78
+
79
+ ```python
80
+ from connectonion import Agent, Memory
81
+
82
+ memory = Memory()
83
+ agent = Agent("assistant", tools=[memory])
84
+ ```
85
+
86
+ Now your agent has access to 4 memory methods:
87
+ - `write_memory(key, content)` - Save or update information
88
+ - `read_memory(key)` - Retrieve information
89
+ - `list_memories()` - Show all stored memories
90
+ - `search_memory(pattern)` - Search with regex
91
+
92
+ ## Memory Methods
93
+
94
+ ### write_memory
95
+
96
+ Save information to memory:
97
+
98
+ ```python
99
+ memory.write_memory("alice-notes", "Alice prefers email\nAlice works at TechCorp")
100
+ # Returns: "Memory saved: alice-notes"
101
+ ```
102
+
103
+ **Keys are sanitized:**
104
+ - Only alphanumeric, hyphens, and underscores allowed
105
+ - Converted to lowercase
106
+ - `"Alice Notes!"` becomes `"alicenotes"`
107
+
108
+ ### read_memory
109
+
110
+ Retrieve saved information:
111
+
112
+ ```python
113
+ memory.read_memory("alice-notes")
114
+ # Returns:
115
+ # Memory: alice-notes
116
+ #
117
+ # Alice prefers email
118
+ # Alice works at TechCorp
119
+ ```
120
+
121
+ If not found:
122
+ ```python
123
+ memory.read_memory("unknown")
124
+ # Returns: "Memory not found: unknown\nAvailable memories: alice-notes, project-x"
125
+ ```
126
+
127
+ ### list_memories
128
+
129
+ Show all stored memories:
130
+
131
+ ```python
132
+ memory.list_memories()
133
+ # Returns:
134
+ # Stored Memories (3):
135
+ # 1. alice-notes (85 bytes)
136
+ # 2. bob-notes (62 bytes)
137
+ # 3. project-x (120 bytes)
138
+ ```
139
+
140
+ ### search_memory
141
+
142
+ Search across all memories using regex:
143
+
144
+ ```python
145
+ # Simple text search (case-sensitive by default)
146
+ memory.search_memory("email")
147
+ # Returns:
148
+ # Search Results (2 matches):
149
+ #
150
+ # alice-notes:
151
+ # Line 1: Alice prefers email
152
+ #
153
+ # contacts:
154
+ # Line 3: Email: alice@example.com
155
+
156
+ # Case-insensitive search with (?i) flag
157
+ memory.search_memory("(?i)email")
158
+
159
+ # Regex patterns
160
+ memory.search_memory(r"\w+@\w+\.\w+") # Find email addresses
161
+ memory.search_memory(r"Project [A-Z]") # Find project names
162
+ ```
163
+
164
+ ## Examples
165
+
166
+ ### Example 1: Customer Notes
167
+
168
+ ```python
169
+ from connectonion import Agent, Memory
170
+
171
+ memory = Memory(memory_dir="customer_notes")
172
+ agent = Agent(
173
+ name="sales-assistant",
174
+ system_prompt="You help track customer information.",
175
+ tools=[memory]
176
+ )
177
+
178
+ # Save customer info
179
+ agent.input("Remember that Alice from TechCorp is interested in our API product and prefers email contact")
180
+
181
+ # Later, recall the information
182
+ agent.input("What do I know about Alice?")
183
+ # Agent will use read_memory() to retrieve Alice's info
184
+ ```
185
+
186
+ ### Example 2: Project Tracker
187
+
188
+ ```python
189
+ from connectonion import Agent, Memory
190
+
191
+ memory = Memory(memory_dir="projects")
192
+ agent = Agent(
193
+ name="project-manager",
194
+ system_prompt="You track project status and notes.",
195
+ tools=[memory]
196
+ )
197
+
198
+ # Save project updates
199
+ agent.input("Remember: Project Alpha is 80% complete, needs final testing")
200
+ agent.input("Remember: Project Beta is blocked, waiting on API keys")
201
+
202
+ # Search for blocked projects
203
+ agent.input("Which projects are blocked?")
204
+ # Agent will use search_memory("blocked") to find relevant projects
205
+ ```
206
+
207
+ ### Example 3: Research Assistant
208
+
209
+ ```python
210
+ from connectonion import Agent, Memory
211
+
212
+ def web_search(query: str) -> str:
213
+ """Search the web for information."""
214
+ # Your search implementation
215
+ return f"Results for {query}"
216
+
217
+ memory = Memory(memory_dir="research")
218
+ agent = Agent(
219
+ name="researcher",
220
+ system_prompt="You research topics and save key findings.",
221
+ tools=[web_search, memory]
222
+ )
223
+
224
+ # Research and save
225
+ agent.input("Research the history of Python programming and save key points")
226
+ # Agent will search, then use write_memory() to save findings
227
+
228
+ # Later, recall research
229
+ agent.input("What did I learn about Python's history?")
230
+ ```
231
+
232
+ ### Example 4: Multi-Agent Shared Memory
233
+
234
+ ```python
235
+ from connectonion import Agent, Memory
236
+
237
+ # Shared memory between agents
238
+ shared_memory = Memory(memory_dir="shared_knowledge")
239
+
240
+ researcher = Agent(
241
+ name="researcher",
242
+ system_prompt="You research and document findings.",
243
+ tools=[shared_memory]
244
+ )
245
+
246
+ writer = Agent(
247
+ name="writer",
248
+ system_prompt="You write articles based on research.",
249
+ tools=[shared_memory]
250
+ )
251
+
252
+ # Researcher saves findings
253
+ researcher.input("Research AI trends and save the findings")
254
+
255
+ # Writer uses the same memory
256
+ writer.input("Write an article based on AI trends research")
257
+ ```
258
+
259
+ ## Advanced Patterns
260
+
261
+ ### Memory with Different Tools
262
+
263
+ Memory works alongside any other tools:
264
+
265
+ ```python
266
+ from connectonion import Agent, Memory
267
+
268
+ def calculate(expression: str) -> float:
269
+ """Calculate math expressions."""
270
+ return eval(expression)
271
+
272
+ def send_email(to: str, subject: str, body: str) -> str:
273
+ """Send an email."""
274
+ # Implementation
275
+ return "Email sent"
276
+
277
+ memory = Memory()
278
+
279
+ agent = Agent(
280
+ name="multi-tool-agent",
281
+ tools=[calculate, send_email, memory]
282
+ )
283
+ ```
284
+
285
+ ### Custom Memory File Organization
286
+
287
+ Organize memories by category:
288
+
289
+ ```python
290
+ # Separate memory files for different purposes
291
+ customer_memory = Memory(memory_file="data/customers.md")
292
+ project_memory = Memory(memory_file="data/projects.md")
293
+ research_memory = Memory(memory_file="data/research.md")
294
+
295
+ agent = Agent(
296
+ name="organized-agent",
297
+ tools=[customer_memory, project_memory, research_memory]
298
+ )
299
+ ```
300
+
301
+ ### Regex Search Patterns
302
+
303
+ Powerful search with regex:
304
+
305
+ ```python
306
+ # Find email addresses
307
+ memory.search_memory(r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b")
308
+
309
+ # Find phone numbers
310
+ memory.search_memory(r"\d{3}-\d{3}-\d{4}")
311
+
312
+ # Find dates
313
+ memory.search_memory(r"\d{4}-\d{2}-\d{2}")
314
+
315
+ # Find URLs
316
+ memory.search_memory(r"https?://[^\s]+")
317
+
318
+ # Find specific keywords (word boundaries, case-insensitive)
319
+ memory.search_memory(r"(?i)\bproject\b")
320
+ ```
321
+
322
+ ## File Format
323
+
324
+ ### Single File (Default)
325
+
326
+ Memories start in a single `memory.md` file using section headers:
327
+
328
+ ```markdown
329
+ ## alice-notes
330
+
331
+ Alice prefers email communication
332
+ Works at TechCorp
333
+ Interested in API product
334
+ Last contact: 2025-11-20
335
+
336
+ ## bob-notes
337
+
338
+ Bob from Marketing
339
+ Prefers phone calls
340
+
341
+ ## project-x
342
+
343
+ Project X is 80% complete
344
+ Needs final testing
345
+ ```
346
+
347
+ ### Auto-Split to Directory
348
+
349
+ When `memory.md` exceeds 3000 lines, it automatically migrates to a directory structure:
350
+
351
+ ```
352
+ memory/
353
+ ├── alice-notes.md
354
+ ├── bob-notes.md
355
+ └── project-x.md
356
+ ```
357
+
358
+ Each file contains plain text/markdown content (without the `##` header).
359
+
360
+ **Benefits of this approach:**
361
+ - Simple by default (one file)
362
+ - Scales automatically when needed
363
+ - Human-readable
364
+ - Version control friendly (git)
365
+ - Easy to edit manually if needed
366
+ - Supports rich formatting
367
+
368
+ ## Best Practices
369
+
370
+ ### 1. Use Descriptive Keys
371
+
372
+ ```python
373
+ # Good
374
+ memory.write_memory("alice-techcorp-contact-info", content)
375
+ memory.write_memory("project-alpha-status", content)
376
+
377
+ # Bad
378
+ memory.write_memory("note1", content)
379
+ memory.write_memory("data", content)
380
+ ```
381
+
382
+ ### 2. Structure Your Content
383
+
384
+ ```python
385
+ # Use markdown formatting for better organization
386
+ content = """# Alice - TechCorp
387
+
388
+ ## Contact Info
389
+ - Email: alice@techcorp.com
390
+ - Prefers: Email over phone
391
+
392
+ ## Projects
393
+ - Interested in API product
394
+ - Budget: $50k
395
+
396
+ ## Notes
397
+ - Decision maker
398
+ - Wants demo next week
399
+ """
400
+
401
+ memory.write_memory("alice-techcorp", content)
402
+ ```
403
+
404
+ ### 3. Keep Memories Updated
405
+
406
+ ```python
407
+ # Update or overwrite outdated memories
408
+ agent.input("Review and update any memories older than 6 months")
409
+ ```
410
+
411
+ ### 4. Search Before Creating
412
+
413
+ ```python
414
+ # Check if similar memory exists
415
+ agent.input("Do we have any notes about Alice?")
416
+ # Agent will search before creating duplicate memory
417
+ ```
418
+
419
+ ### 5. Use Consistent Naming
420
+
421
+ ```python
422
+ # Choose a naming convention and stick to it
423
+ memory.write_memory("customer-alice-techcorp", ...)
424
+ memory.write_memory("customer-bob-acmecorp", ...)
425
+ memory.write_memory("project-alpha", ...)
426
+ memory.write_memory("project-beta", ...)
427
+ ```
428
+
429
+ ## Limitations
430
+
431
+ ### Storage
432
+
433
+ - All memories are kept in memory during search operations
434
+ - For very large memory stores (>1000 files or >100MB), consider database alternatives
435
+ - No built-in memory limits - monitor disk usage
436
+
437
+ ### Concurrency
438
+
439
+ - File-based storage is not optimized for high-concurrency scenarios
440
+ - Multiple agents writing to the same memory simultaneously may cause race conditions
441
+ - For production multi-agent systems, consider database-backed storage
442
+
443
+ ### Search Performance
444
+
445
+ - Regex search scans all files linearly
446
+ - Performance degrades with more memories
447
+ - For large-scale search needs, consider full-text search solutions (Elasticsearch, etc.)
448
+
449
+ ## Troubleshooting
450
+
451
+ ### "Memory not found"
452
+
453
+ Check available memories:
454
+ ```python
455
+ print(memory.list_memories())
456
+ ```
457
+
458
+ Remember that keys are sanitized (lowercase, alphanumeric + hyphens/underscores).
459
+
460
+ ### "Invalid key name"
461
+
462
+ Use only alphanumeric characters, hyphens, and underscores:
463
+ ```python
464
+ # Good
465
+ memory.write_memory("alice-notes", content)
466
+
467
+ # Bad (will be rejected or sanitized)
468
+ memory.write_memory("alice@notes!", content)
469
+ ```
470
+
471
+ ### Memory file not created
472
+
473
+ Memory creates the file automatically on first write:
474
+ ```python
475
+ import os
476
+ memory = Memory()
477
+ memory.write_memory("test", "content")
478
+ print(os.path.exists("memory.md")) # Should be True
479
+ ```
480
+
481
+ ## Next Steps
482
+
483
+ - See [Examples](../examples/memory_agent.py) for complete working code
484
+ - Learn about [Plugins](./plugin.md) for automatic memory behaviors
485
+ - Explore [Multi-Agent Systems](./multi-agent.md) with shared memory
486
+
487
+ ## Customizing
488
+
489
+ Need to modify Memory's behavior? Copy the source to your project:
490
+
491
+ ```bash
492
+ co copy memory
493
+ ```
494
+
495
+ Then import from your local copy:
496
+
497
+ ```python
498
+ # from connectonion import Memory # Before
499
+ from tools.memory import Memory # After - customize freely!
500
+ ```
501
+
502
+ ## Related Documentation
503
+
504
+ - [Agent Basics](./agent.md)
505
+ - [Tools](./tools.md)
506
+ - [Plugins](./plugin.md)