connectonion 0.6.2__py3-none-any.whl → 0.6.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- connectonion/__init__.py +46 -9
- connectonion/cli/__init__.py +11 -1
- connectonion/cli/browser_agent/__init__.py +11 -1
- connectonion/cli/browser_agent/browser.py +13 -3
- connectonion/cli/browser_agent/element_finder.py +8 -0
- connectonion/cli/browser_agent/highlight_screenshot.py +9 -1
- connectonion/cli/browser_agent/scroll.py +8 -0
- connectonion/cli/co_ai/__init__.py +6 -0
- connectonion/cli/co_ai/agent.py +87 -0
- connectonion/cli/co_ai/agents/__init__.py +5 -0
- connectonion/cli/co_ai/agents/registry.py +57 -0
- connectonion/cli/co_ai/commands/__init__.py +45 -0
- connectonion/cli/co_ai/commands/compact.py +173 -0
- connectonion/cli/co_ai/commands/cost.py +77 -0
- connectonion/cli/co_ai/commands/export.py +60 -0
- connectonion/cli/co_ai/commands/help.py +80 -0
- connectonion/cli/co_ai/commands/init.py +101 -0
- connectonion/cli/co_ai/commands/sessions.py +55 -0
- connectonion/cli/co_ai/commands/tasks.py +63 -0
- connectonion/cli/co_ai/commands/undo.py +103 -0
- connectonion/cli/co_ai/context.py +127 -0
- connectonion/cli/co_ai/main.py +52 -0
- connectonion/cli/co_ai/plugins/__init__.py +6 -0
- connectonion/cli/co_ai/plugins/reminder.py +76 -0
- connectonion/cli/co_ai/plugins/shell_approval.py +105 -0
- connectonion/cli/co_ai/prompts/agents/explore.md +79 -0
- connectonion/cli/co_ai/prompts/agents/plan.md +60 -0
- connectonion/cli/co_ai/prompts/assembler.py +303 -0
- connectonion/cli/{docs/co-vibecoding-principles-docs-contexts-all-in-one.md → co_ai/prompts/connectonion/README.md} +26 -0
- connectonion/cli/co_ai/prompts/connectonion/api.md +457 -0
- connectonion/cli/co_ai/prompts/connectonion/cli/README.md +805 -0
- connectonion/cli/co_ai/prompts/connectonion/cli/auth.md +46 -0
- connectonion/cli/co_ai/prompts/connectonion/cli/browser.md +235 -0
- connectonion/cli/co_ai/prompts/connectonion/cli/copy.md +184 -0
- connectonion/cli/co_ai/prompts/connectonion/cli/create.md +335 -0
- connectonion/cli/co_ai/prompts/connectonion/cli/init.md +431 -0
- connectonion/cli/co_ai/prompts/connectonion/co-directory-structure.md +214 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/agent.md +1078 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/events.md +816 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/llm_do.md +256 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/max_iterations.md +362 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/models.md +641 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/plugins.md +100 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/prompts.md +122 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/tools.md +512 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/transcribe.md +156 -0
- connectonion/cli/co_ai/prompts/connectonion/concepts/trust.md +291 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/README.md +18 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/auto_debug.md +1026 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/console.md +129 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/eval-format.md +178 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/eval.md +230 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/exceptions.md +307 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/log.md +117 -0
- connectonion/cli/co_ai/prompts/connectonion/debug/xray.md +215 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/001-choosing-input-method.md +202 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/002-choosing-llm-function-name.md +202 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/003-choosing-trust-keyword.md +141 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/004-cli-create-flow.md +117 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/005-designing-agent-network-protocol.md +503 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/006-agent-address-format.md +305 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/007-authentication-backend-design.md +240 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/008-naming-is-hard.md +228 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/009-why-connect-function.md +167 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/011-global-config-identity-management.md +357 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/012-tool-execution-separation.md +259 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/013-debug-and-logging-design.md +253 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/014-hook-system-design.md +510 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/015-interactive-auto-debug-design.md +837 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/017-session-logging-and-eval-format.md +120 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/018-event-api-naming.md +274 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/019-agent-lifecycle-design.md +655 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/020-trust-system-and-network-architecture.md +503 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/021-task-storage-jsonl-design.md +496 -0
- connectonion/cli/co_ai/prompts/connectonion/design-decisions/022-raw-asgi-implementation.md +273 -0
- connectonion/cli/co_ai/prompts/connectonion/examples/agent_reasoning.md +62 -0
- connectonion/cli/co_ai/prompts/connectonion/examples/atomic_tools.md +24 -0
- connectonion/cli/co_ai/prompts/connectonion/examples/load_guide.md +18 -0
- connectonion/cli/co_ai/prompts/connectonion/examples.md +0 -0
- connectonion/cli/co_ai/prompts/connectonion/hook-system-options.md +364 -0
- connectonion/cli/co_ai/prompts/connectonion/index.md +162 -0
- connectonion/cli/co_ai/prompts/connectonion/integrations/README.md +12 -0
- connectonion/cli/co_ai/prompts/connectonion/integrations/auth.md +450 -0
- connectonion/cli/co_ai/prompts/connectonion/integrations/google.md +431 -0
- connectonion/cli/co_ai/prompts/connectonion/integrations/microsoft.md +370 -0
- connectonion/cli/co_ai/prompts/connectonion/network/README.md +14 -0
- connectonion/cli/co_ai/prompts/connectonion/network/connect.md +543 -0
- connectonion/cli/co_ai/prompts/connectonion/network/connection.md +538 -0
- connectonion/cli/co_ai/prompts/connectonion/network/deploy.md +123 -0
- connectonion/cli/co_ai/prompts/connectonion/network/host.md +1049 -0
- connectonion/cli/co_ai/prompts/connectonion/network/protocol/agent-relay-protocol.md +495 -0
- connectonion/cli/co_ai/prompts/connectonion/network/protocol/announce-message.md +115 -0
- connectonion/cli/co_ai/prompts/connectonion/principles.md +124 -0
- connectonion/cli/co_ai/prompts/connectonion/quickstart.md +261 -0
- connectonion/cli/co_ai/prompts/connectonion/roadmap.md +81 -0
- connectonion/cli/co_ai/prompts/connectonion/templates/README.md +77 -0
- connectonion/cli/co_ai/prompts/connectonion/templates/meta-agent.md +152 -0
- connectonion/cli/co_ai/prompts/connectonion/templates/minimal.md +105 -0
- connectonion/cli/co_ai/prompts/connectonion/templates/playwright.md +130 -0
- connectonion/cli/co_ai/prompts/connectonion/templates/web-research.md +144 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/README.md +95 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/chat.md +181 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/divider.md +63 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/dropdown.md +83 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/footer.md +44 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/fuzzy.md +68 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/input.md +84 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/keys.md +77 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/pick.md +71 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/providers.md +89 -0
- connectonion/cli/co_ai/prompts/connectonion/tui/status_bar.md +67 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/README.md +156 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/calendar_plugin.md +68 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/eval.md +89 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/gmail_plugin.md +68 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/image_result_formatter.md +74 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/re_act.md +86 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_plugins/shell_approval.md +69 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/README.md +81 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/diff_writer.md +138 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/get_emails.md +499 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/gmail.md +135 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/google_calendar.md +106 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/memory.md +486 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/microsoft_calendar.md +106 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/outlook.md +120 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/send_email.md +403 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/shell.md +95 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/slash_command.md +96 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/terminal.md +97 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/todo_list.md +252 -0
- connectonion/cli/co_ai/prompts/connectonion/useful_tools/web_fetch.md +130 -0
- connectonion/cli/co_ai/prompts/connectonion/vibe-coding-guide.md +97 -0
- connectonion/cli/co_ai/prompts/connectonion/windows-support.md +258 -0
- connectonion/cli/co_ai/prompts/main.md +247 -0
- connectonion/cli/co_ai/prompts/reminders/plan_mode.md +34 -0
- connectonion/cli/co_ai/prompts/summarization.md +55 -0
- connectonion/cli/co_ai/prompts/tools/ask_user.md +61 -0
- connectonion/cli/co_ai/prompts/tools/background.md +57 -0
- connectonion/cli/co_ai/prompts/tools/edit.md +90 -0
- connectonion/cli/co_ai/prompts/tools/glob.md +52 -0
- connectonion/cli/co_ai/prompts/tools/grep.md +55 -0
- connectonion/cli/co_ai/prompts/tools/plan_mode.md +80 -0
- connectonion/cli/co_ai/prompts/tools/read.md +40 -0
- connectonion/cli/co_ai/prompts/tools/shell.md +67 -0
- connectonion/cli/co_ai/prompts/tools/task.md +51 -0
- connectonion/cli/co_ai/prompts/tools/todo.md +139 -0
- connectonion/cli/co_ai/prompts/tools/write.md +47 -0
- connectonion/cli/co_ai/prompts/workflow.md +89 -0
- connectonion/cli/co_ai/reminders.py +159 -0
- connectonion/cli/co_ai/sessions.py +110 -0
- connectonion/cli/co_ai/skills/__init__.py +37 -0
- connectonion/cli/co_ai/skills/builtin/commit/SKILL.md +63 -0
- connectonion/cli/co_ai/skills/builtin/review-pr/SKILL.md +76 -0
- connectonion/cli/co_ai/skills/loader.py +166 -0
- connectonion/cli/co_ai/skills/tool.py +46 -0
- connectonion/cli/co_ai/tools/__init__.py +92 -0
- connectonion/cli/co_ai/tools/ask_user.py +35 -0
- connectonion/cli/co_ai/tools/background.py +201 -0
- connectonion/cli/co_ai/tools/diff_writer.py +291 -0
- connectonion/cli/co_ai/tools/edit.py +89 -0
- connectonion/cli/co_ai/tools/glob.py +84 -0
- connectonion/cli/co_ai/tools/grep.py +158 -0
- connectonion/cli/co_ai/tools/load_guide.py +23 -0
- connectonion/cli/co_ai/tools/multi_edit.py +116 -0
- connectonion/cli/co_ai/tools/plan_mode.py +172 -0
- connectonion/cli/co_ai/tools/read.py +67 -0
- connectonion/cli/co_ai/tools/task.py +59 -0
- connectonion/cli/co_ai/tools/todo_list.py +159 -0
- connectonion/cli/co_ai/tools/write.py +126 -0
- connectonion/cli/commands/__init__.py +11 -1
- connectonion/cli/commands/ai_commands.py +34 -0
- connectonion/cli/commands/copy_commands.py +55 -6
- connectonion/cli/commands/create.py +20 -17
- connectonion/cli/commands/init.py +19 -22
- connectonion/cli/commands/project_cmd_lib.py +15 -0
- connectonion/cli/main.py +11 -0
- connectonion/console.py +15 -1
- connectonion/core/__init__.py +10 -1
- connectonion/core/agent.py +37 -16
- connectonion/core/exceptions.py +74 -0
- connectonion/core/llm.py +54 -6
- connectonion/core/tool_executor.py +32 -31
- connectonion/core/tool_factory.py +47 -10
- connectonion/debug/__init__.py +10 -1
- connectonion/debug/debug_explainer/__init__.py +10 -1
- connectonion/debug/execution_analyzer/__init__.py +10 -1
- connectonion/debug/execution_analyzer/execution_analysis.py +5 -2
- connectonion/debug/runtime_inspector/__init__.py +10 -1
- connectonion/docs/.package-ignore +6 -0
- connectonion/docs/README.md +2036 -0
- connectonion/docs/api.md +457 -0
- connectonion/docs/archive/001-ai-agent-is-just-prompt-plus-function.md +249 -0
- connectonion/docs/archive/README.md +53 -0
- connectonion/docs/archive/archive/consolidation-plan.md +72 -0
- connectonion/docs/archive/archive/core-principles-extracted.md +239 -0
- connectonion/docs/archive/archive/master-principles.md +222 -0
- connectonion/docs/archive/archive/principles.md +293 -0
- connectonion/docs/archive/archive/simplicity-principles.md +221 -0
- connectonion/docs/archive/attack-defense-insights.md +410 -0
- connectonion/docs/archive/business-model.md +305 -0
- connectonion/docs/archive/core-principles-unified.md +190 -0
- connectonion/docs/archive/discussion-journey.md +178 -0
- connectonion/docs/archive/economic-analysis.md +323 -0
- connectonion/docs/archive/features/01-share-and-find.md +256 -0
- connectonion/docs/archive/features/02-agent-authentication.md +93 -0
- connectonion/docs/archive/features/03-test-before-trust.md +71 -0
- connectonion/docs/archive/features/06-reliability-and-offline.md +197 -0
- connectonion/docs/archive/features/README.md +46 -0
- connectonion/docs/archive/features-roadmap.md +247 -0
- connectonion/docs/archive/mcp-comparison-insights.md +215 -0
- connectonion/docs/archive/migration-strategy.md +571 -0
- connectonion/docs/archive/mini-whitepaper.md +293 -0
- connectonion/docs/archive/network-protocol.md +394 -0
- connectonion/docs/archive/semantic-revolution.md +367 -0
- connectonion/docs/archive/technical-architecture.md +453 -0
- connectonion/docs/archive/the-semantic-insight.md +207 -0
- connectonion/docs/archive/threat-model.md +164 -0
- connectonion/docs/cli/README.md +805 -0
- connectonion/docs/cli/auth.md +46 -0
- connectonion/docs/cli/browser.md +235 -0
- connectonion/docs/cli/copy.md +232 -0
- connectonion/docs/cli/create.md +335 -0
- connectonion/docs/cli/init.md +431 -0
- connectonion/docs/co-directory-structure.md +214 -0
- connectonion/docs/concepts/agent.md +1078 -0
- connectonion/docs/concepts/events.md +699 -0
- connectonion/docs/concepts/llm_do.md +256 -0
- connectonion/docs/concepts/max_iterations.md +362 -0
- connectonion/docs/concepts/models.md +641 -0
- connectonion/docs/concepts/plugins.md +100 -0
- connectonion/docs/concepts/prompts.md +122 -0
- connectonion/docs/concepts/session.md +428 -0
- connectonion/docs/concepts/tools.md +512 -0
- connectonion/docs/concepts/transcribe.md +156 -0
- connectonion/docs/concepts/trust.md +291 -0
- connectonion/docs/connectonion.md +1256 -0
- connectonion/docs/debug/README.md +18 -0
- connectonion/docs/debug/auto_debug.md +1026 -0
- connectonion/docs/debug/console.md +129 -0
- connectonion/docs/debug/eval-format.md +178 -0
- connectonion/docs/debug/eval.md +230 -0
- connectonion/docs/debug/exceptions.md +307 -0
- connectonion/docs/debug/log.md +117 -0
- connectonion/docs/debug/xray.md +215 -0
- connectonion/docs/design-decisions/001-choosing-input-method.md +202 -0
- connectonion/docs/design-decisions/002-choosing-llm-function-name.md +202 -0
- connectonion/docs/design-decisions/003-choosing-trust-keyword.md +141 -0
- connectonion/docs/design-decisions/004-cli-create-flow.md +117 -0
- connectonion/docs/design-decisions/005-designing-agent-network-protocol.md +503 -0
- connectonion/docs/design-decisions/006-agent-address-format.md +305 -0
- connectonion/docs/design-decisions/007-authentication-backend-design.md +240 -0
- connectonion/docs/design-decisions/008-naming-is-hard.md +228 -0
- connectonion/docs/design-decisions/009-why-connect-function.md +167 -0
- connectonion/docs/design-decisions/010-cli-ux-progressive-disclosure.md +176 -0
- connectonion/docs/design-decisions/011-global-config-identity-management.md +357 -0
- connectonion/docs/design-decisions/012-tool-execution-separation.md +259 -0
- connectonion/docs/design-decisions/013-debug-and-logging-design.md +253 -0
- connectonion/docs/design-decisions/014-hook-system-design.md +510 -0
- connectonion/docs/design-decisions/015-interactive-auto-debug-design.md +837 -0
- connectonion/docs/design-decisions/016-why-no-zero-knowledge-proofs.md +358 -0
- connectonion/docs/design-decisions/017-session-logging-and-eval-format.md +120 -0
- connectonion/docs/design-decisions/018-event-api-naming.md +274 -0
- connectonion/docs/design-decisions/019-agent-lifecycle-design.md +655 -0
- connectonion/docs/design-decisions/020-trust-system-and-network-architecture.md +503 -0
- connectonion/docs/design-decisions/021-task-storage-jsonl-design.md +496 -0
- connectonion/docs/design-decisions/022-raw-asgi-implementation.md +273 -0
- connectonion/docs/examples.md +0 -0
- connectonion/docs/hook-system-options.md +364 -0
- connectonion/docs/integrations/README.md +12 -0
- connectonion/docs/integrations/auth.md +450 -0
- connectonion/docs/integrations/google.md +431 -0
- connectonion/docs/integrations/microsoft.md +370 -0
- connectonion/docs/network/README.md +14 -0
- connectonion/docs/network/connect.md +629 -0
- connectonion/docs/network/deploy.md +124 -0
- connectonion/docs/network/host.md +1087 -0
- connectonion/docs/network/io.md +538 -0
- connectonion/docs/network/protocol/agent-relay-protocol.md +495 -0
- connectonion/docs/network/protocol/announce-message.md +115 -0
- connectonion/docs/principles.md +124 -0
- connectonion/docs/quickstart.md +261 -0
- connectonion/docs/roadmap.md +81 -0
- connectonion/docs/templates/README.md +77 -0
- connectonion/docs/templates/meta-agent.md +152 -0
- connectonion/docs/templates/minimal.md +105 -0
- connectonion/docs/templates/playwright.md +130 -0
- connectonion/docs/templates/web-research.md +144 -0
- connectonion/docs/tui/README.md +95 -0
- connectonion/docs/tui/chat.md +181 -0
- connectonion/docs/tui/divider.md +63 -0
- connectonion/docs/tui/dropdown.md +83 -0
- connectonion/docs/tui/footer.md +44 -0
- connectonion/docs/tui/fuzzy.md +68 -0
- connectonion/docs/tui/input.md +84 -0
- connectonion/docs/tui/keys.md +77 -0
- connectonion/docs/tui/pick.md +71 -0
- connectonion/docs/tui/providers.md +89 -0
- connectonion/docs/tui/status_bar.md +67 -0
- connectonion/docs/useful_plugins/README.md +160 -0
- connectonion/docs/useful_plugins/calendar_plugin.md +68 -0
- connectonion/docs/useful_plugins/eval.md +89 -0
- connectonion/docs/useful_plugins/gmail_plugin.md +68 -0
- connectonion/docs/useful_plugins/image_result_formatter.md +74 -0
- connectonion/docs/useful_plugins/re_act.md +86 -0
- connectonion/docs/useful_plugins/shell_approval.md +69 -0
- connectonion/docs/useful_plugins/system_reminder.md +210 -0
- connectonion/docs/useful_prompts/README.md +127 -0
- connectonion/docs/useful_prompts/coding_agent.md +214 -0
- connectonion/docs/useful_tools/README.md +81 -0
- connectonion/docs/useful_tools/ask_user.md +103 -0
- connectonion/docs/useful_tools/diff_writer.md +158 -0
- connectonion/docs/useful_tools/get_emails.md +519 -0
- connectonion/docs/useful_tools/gmail.md +155 -0
- connectonion/docs/useful_tools/google_calendar.md +126 -0
- connectonion/docs/useful_tools/memory.md +506 -0
- connectonion/docs/useful_tools/microsoft_calendar.md +126 -0
- connectonion/docs/useful_tools/outlook.md +140 -0
- connectonion/docs/useful_tools/send_email.md +423 -0
- connectonion/docs/useful_tools/shell.md +115 -0
- connectonion/docs/useful_tools/slash_command.md +116 -0
- connectonion/docs/useful_tools/terminal.md +115 -0
- connectonion/docs/useful_tools/todo_list.md +272 -0
- connectonion/docs/useful_tools/web_fetch.md +150 -0
- connectonion/docs/vibe-coding-guide.md +97 -0
- connectonion/docs/windows-support.md +258 -0
- connectonion/logger.py +3 -3
- connectonion/network/__init__.py +19 -6
- connectonion/network/asgi/__init__.py +81 -0
- connectonion/network/asgi/http.py +205 -0
- connectonion/network/asgi/websocket.py +217 -0
- connectonion/network/connect.py +232 -185
- connectonion/network/host/__init__.py +59 -0
- connectonion/network/host/auth.py +191 -0
- connectonion/network/host/routes.py +135 -0
- connectonion/network/host/server.py +289 -0
- connectonion/network/host/session.py +78 -0
- connectonion/network/io/__init__.py +21 -0
- connectonion/network/{connection.py → io/base.py} +17 -42
- connectonion/network/io/websocket.py +55 -0
- connectonion/network/relay.py +37 -16
- connectonion/network/trust/__init__.py +30 -0
- connectonion/network/trust/factory.py +138 -0
- connectonion/network/{trust_agents.py → trust/prompts.py} +3 -3
- connectonion/network/{trust_functions.py → trust/tools.py} +2 -2
- connectonion/prompt_files/__init__.py +11 -1
- connectonion/prompt_files/react_acknowledge.md +26 -0
- connectonion/prompts.py +10 -1
- connectonion/tui/chat.py +10 -1
- connectonion/tui/divider.py +10 -1
- connectonion/tui/dropdown.py +10 -1
- connectonion/tui/footer.py +8 -0
- connectonion/tui/fuzzy.py +11 -1
- connectonion/tui/input.py +118 -70
- connectonion/tui/keys.py +133 -6
- connectonion/tui/providers.py +11 -1
- connectonion/tui/status_bar.py +10 -1
- connectonion/useful_events_handlers/__init__.py +8 -0
- connectonion/useful_events_handlers/reflect.py +19 -4
- connectonion/useful_plugins/__init__.py +2 -1
- connectonion/useful_plugins/eval.py +2 -2
- connectonion/useful_plugins/gmail_plugin.py +3 -3
- connectonion/useful_plugins/image_result_formatter.py +3 -3
- connectonion/useful_plugins/re_act.py +114 -28
- connectonion/useful_plugins/shell_approval.py +2 -2
- connectonion/useful_plugins/system_reminder.py +103 -0
- connectonion/useful_plugins/ui_stream.py +18 -133
- connectonion/useful_prompts/README.md +61 -0
- connectonion/useful_prompts/__init__.py +45 -0
- connectonion/useful_prompts/coding_agent/README.md +106 -0
- connectonion/useful_prompts/coding_agent/assembler.py +123 -0
- connectonion/useful_prompts/coding_agent/prompts/main.md +227 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/ask_user.md +61 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/background.md +57 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/edit.md +90 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/glob.md +52 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/grep.md +55 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/plan_mode.md +80 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/read.md +40 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/shell.md +67 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/task.md +51 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/todo.md +139 -0
- connectonion/useful_prompts/coding_agent/prompts/tools/write.md +48 -0
- connectonion/useful_prompts/system-reminders/security-warning.md +14 -0
- connectonion/useful_prompts/system-reminders/test-reminder.md +11 -0
- connectonion/useful_tools/__init__.py +31 -4
- connectonion/useful_tools/ask_user.py +35 -0
- connectonion/useful_tools/bash.py +69 -0
- connectonion/useful_tools/diff_writer.py +186 -94
- connectonion/useful_tools/edit.py +102 -0
- connectonion/useful_tools/glob_files.py +97 -0
- connectonion/useful_tools/grep_files.py +171 -0
- connectonion/useful_tools/multi_edit.py +116 -0
- connectonion/useful_tools/read_file.py +73 -0
- connectonion/useful_tools/shell.py +50 -45
- connectonion/useful_tools/write_file.py +129 -0
- {connectonion-0.6.2.dist-info → connectonion-0.6.3.dist-info}/METADATA +10 -3
- connectonion-0.6.3.dist-info/RECORD +469 -0
- connectonion/network/asgi.py +0 -407
- connectonion/network/host.py +0 -616
- connectonion/network/trust.py +0 -166
- connectonion-0.6.2.dist-info/RECORD +0 -129
- /connectonion/cli/{docs → co_ai/prompts/connectonion}/connectonion.md +0 -0
- {connectonion-0.6.2.dist-info → connectonion-0.6.3.dist-info}/WHEEL +0 -0
- {connectonion-0.6.2.dist-info → connectonion-0.6.3.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Shell
|
|
2
|
+
|
|
3
|
+
Shell command execution tool.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
**Option 1: Import directly**
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from connectonion import Shell
|
|
11
|
+
|
|
12
|
+
agent = Agent("coder", tools=[Shell()])
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Option 2: Copy and customize**
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
co copy shell
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from tools.shell import Shell # Your local copy
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from connectonion import Shell
|
|
29
|
+
|
|
30
|
+
shell = Shell()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## API
|
|
34
|
+
|
|
35
|
+
### run(command)
|
|
36
|
+
|
|
37
|
+
Execute a shell command, returns output.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
result = shell.run("ls -la")
|
|
41
|
+
# Returns: "total 12\ndrwxr-xr-x 8 user staff..."
|
|
42
|
+
|
|
43
|
+
result = shell.run("git status")
|
|
44
|
+
# Returns: "On branch main\nnothing to commit..."
|
|
45
|
+
|
|
46
|
+
result = shell.run("python --version")
|
|
47
|
+
# Returns: "Python 3.11.0"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### run_in_dir(command, directory)
|
|
51
|
+
|
|
52
|
+
Execute command in a specific directory.
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
result = shell.run_in_dir("npm install", "/path/to/project")
|
|
56
|
+
# Returns: "added 100 packages..."
|
|
57
|
+
|
|
58
|
+
result = shell.run_in_dir("pytest", "/path/to/tests")
|
|
59
|
+
# Returns: "5 passed in 0.5s"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Use with Agent
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from connectonion import Agent, Shell
|
|
66
|
+
|
|
67
|
+
shell = Shell()
|
|
68
|
+
agent = Agent("coder", tools=[shell])
|
|
69
|
+
|
|
70
|
+
agent.input("list all python files in current directory")
|
|
71
|
+
# Agent runs: shell.run("ls *.py")
|
|
72
|
+
|
|
73
|
+
agent.input("run the tests")
|
|
74
|
+
# Agent runs: shell.run("pytest")
|
|
75
|
+
|
|
76
|
+
agent.input("install requests package")
|
|
77
|
+
# Agent runs: shell.run("pip install requests")
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Common Use Cases
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
# Git operations
|
|
84
|
+
shell.run("git status")
|
|
85
|
+
shell.run("git add .")
|
|
86
|
+
shell.run("git commit -m 'update'")
|
|
87
|
+
|
|
88
|
+
# Package management
|
|
89
|
+
shell.run("pip install requests")
|
|
90
|
+
shell.run("npm install express")
|
|
91
|
+
|
|
92
|
+
# Build and test
|
|
93
|
+
shell.run("pytest")
|
|
94
|
+
shell.run("npm run build")
|
|
95
|
+
|
|
96
|
+
# System info
|
|
97
|
+
shell.run("pwd")
|
|
98
|
+
shell.run("whoami")
|
|
99
|
+
shell.run("df -h")
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Customizing
|
|
103
|
+
|
|
104
|
+
Need to modify Shell's behavior? Copy the source to your project:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
co copy shell
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Then import from your local copy:
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
# from connectonion import Shell # Before
|
|
114
|
+
from tools.shell import Shell # After - customize freely!
|
|
115
|
+
```
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# SlashCommand
|
|
2
|
+
|
|
3
|
+
Load and execute custom commands from markdown files.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
**Option 1: Import directly**
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from connectonion import SlashCommand
|
|
11
|
+
|
|
12
|
+
cmd = SlashCommand.load("today")
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Option 2: Copy and customize**
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
co copy slash_command
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from tools.slash_command import SlashCommand # Your local copy
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from connectonion import SlashCommand
|
|
29
|
+
|
|
30
|
+
# Load command
|
|
31
|
+
cmd = SlashCommand.load("today")
|
|
32
|
+
|
|
33
|
+
# Get prompt
|
|
34
|
+
prompt = cmd.prompt
|
|
35
|
+
|
|
36
|
+
# List all commands
|
|
37
|
+
commands = SlashCommand.list_all()
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Command File Format
|
|
41
|
+
|
|
42
|
+
Create `.co/commands/today.md`:
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
---
|
|
46
|
+
name: today
|
|
47
|
+
description: Daily email briefing
|
|
48
|
+
tools:
|
|
49
|
+
- Gmail.search_emails
|
|
50
|
+
- WebFetch
|
|
51
|
+
---
|
|
52
|
+
Summarize my important emails from today.
|
|
53
|
+
Focus on:
|
|
54
|
+
- Urgent requests
|
|
55
|
+
- Meeting invites
|
|
56
|
+
- Follow-ups needed
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## YAML Frontmatter
|
|
60
|
+
|
|
61
|
+
| Field | Required | Description |
|
|
62
|
+
|-------|----------|-------------|
|
|
63
|
+
| `name` | Yes | Command name |
|
|
64
|
+
| `description` | Yes | Short description |
|
|
65
|
+
| `tools` | No | Allowed tools (all if omitted) |
|
|
66
|
+
|
|
67
|
+
## Tool Filtering
|
|
68
|
+
|
|
69
|
+
Limit which tools the command can use:
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
tools:
|
|
73
|
+
- Gmail.search_emails # Specific method
|
|
74
|
+
- WebFetch # Whole class
|
|
75
|
+
- my_function # Standalone function
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Locations
|
|
79
|
+
|
|
80
|
+
Commands are loaded from:
|
|
81
|
+
1. `.co/commands/*.md` (user commands - priority)
|
|
82
|
+
2. `commands/*.md` (built-in commands)
|
|
83
|
+
|
|
84
|
+
## API
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
# Load single command
|
|
88
|
+
cmd = SlashCommand.load("today")
|
|
89
|
+
cmd.name # "today"
|
|
90
|
+
cmd.description # "Daily email briefing"
|
|
91
|
+
cmd.prompt # "Summarize my important..."
|
|
92
|
+
cmd.tools # ["Gmail.search_emails", "WebFetch"]
|
|
93
|
+
|
|
94
|
+
# Filter tools for command
|
|
95
|
+
filtered = cmd.filter_tools(all_tools)
|
|
96
|
+
|
|
97
|
+
# List all available commands
|
|
98
|
+
commands = SlashCommand.list_all()
|
|
99
|
+
for cmd in commands:
|
|
100
|
+
print(f"/{cmd.name} - {cmd.description}")
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Customizing
|
|
104
|
+
|
|
105
|
+
Need to modify SlashCommand's behavior? Copy the source to your project:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
co copy slash_command
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Then import from your local copy:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
# from connectonion import SlashCommand # Before
|
|
115
|
+
from tools.slash_command import SlashCommand # After - customize freely!
|
|
116
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Terminal
|
|
2
|
+
|
|
3
|
+
Interactive terminal utilities: selection menus, file browser, and input with autocomplete.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
**Option 1: Import directly**
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from connectonion import pick, yes_no, browse_files, input_with_at
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**Option 2: Copy and customize**
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
co copy terminal
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from tools.terminal import pick, yes_no, browse_files, input_with_at # Your local copy
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from connectonion import pick, yes_no, browse_files, input_with_at
|
|
27
|
+
|
|
28
|
+
# Selection menu
|
|
29
|
+
choice = pick("Pick a color", ["Red", "Green", "Blue"])
|
|
30
|
+
|
|
31
|
+
# Yes/No confirmation
|
|
32
|
+
ok = yes_no("Are you sure?")
|
|
33
|
+
|
|
34
|
+
# File browser
|
|
35
|
+
path = browse_files()
|
|
36
|
+
|
|
37
|
+
# Input with @ file autocomplete
|
|
38
|
+
cmd = input_with_at("> ")
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## pick()
|
|
42
|
+
|
|
43
|
+
Single-select menu with keyboard navigation.
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
# List options (press 1, 2, 3 or arrow keys)
|
|
47
|
+
choice = pick("Apply this command?", [
|
|
48
|
+
"Yes, apply",
|
|
49
|
+
"Yes for same command",
|
|
50
|
+
"No, tell agent how"
|
|
51
|
+
])
|
|
52
|
+
|
|
53
|
+
# Dict options (returns key)
|
|
54
|
+
choice = pick("Continue?", {
|
|
55
|
+
"y": "Yes, continue",
|
|
56
|
+
"n": "No, cancel",
|
|
57
|
+
})
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## yes_no()
|
|
61
|
+
|
|
62
|
+
Simple binary confirmation.
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
ok = yes_no("Delete this file?")
|
|
66
|
+
# Press y → True, n → False
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## browse_files()
|
|
70
|
+
|
|
71
|
+
Navigate and select files.
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
path = browse_files()
|
|
75
|
+
# Arrow keys to navigate
|
|
76
|
+
# Enter on folder to open
|
|
77
|
+
# Enter on file to select
|
|
78
|
+
# Returns: "src/agent.py"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## input_with_at()
|
|
82
|
+
|
|
83
|
+
Text input with @ file autocomplete.
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
cmd = input_with_at("> ")
|
|
87
|
+
# User types: "edit @"
|
|
88
|
+
# File browser opens automatically
|
|
89
|
+
# Returns: "edit src/agent.py"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Keyboard Controls
|
|
93
|
+
|
|
94
|
+
| Key | Action |
|
|
95
|
+
|-----|--------|
|
|
96
|
+
| ↑/↓ | Navigate options |
|
|
97
|
+
| 1-9 | Quick select by number |
|
|
98
|
+
| Enter | Confirm selection |
|
|
99
|
+
| Esc | Cancel |
|
|
100
|
+
| @ | Trigger file autocomplete |
|
|
101
|
+
|
|
102
|
+
## Customizing
|
|
103
|
+
|
|
104
|
+
Need to modify terminal utilities? Copy the source to your project:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
co copy terminal
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Then import from your local copy:
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
# from connectonion import pick, yes_no # Before
|
|
114
|
+
from tools.terminal import pick, yes_no # After - customize freely!
|
|
115
|
+
```
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# TodoList
|
|
2
|
+
|
|
3
|
+
Task tracking tool for agents to manage complex, multi-step tasks.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
**Option 1: Import directly**
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from connectonion import TodoList
|
|
11
|
+
|
|
12
|
+
agent = Agent("worker", tools=[TodoList()])
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Option 2: Copy and customize**
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
co copy todo_list
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from tools.todo_list import TodoList # Your local copy
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from connectonion import TodoList
|
|
29
|
+
|
|
30
|
+
todo = TodoList()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Why Use TodoList?
|
|
34
|
+
|
|
35
|
+
- **Track progress** on complex tasks with multiple steps
|
|
36
|
+
- **Show users** what the agent is working on
|
|
37
|
+
- **Organize** multi-step workflows
|
|
38
|
+
- **Prevent** forgetting steps in complex tasks
|
|
39
|
+
|
|
40
|
+
## When to Use
|
|
41
|
+
|
|
42
|
+
Use TodoList when:
|
|
43
|
+
- Task requires **3+ distinct steps**
|
|
44
|
+
- User provides **multiple tasks** (numbered or comma-separated)
|
|
45
|
+
- Task requires **careful planning**
|
|
46
|
+
- You want to show **progress** to the user
|
|
47
|
+
|
|
48
|
+
Don't use when:
|
|
49
|
+
- Task is **trivial** (1-2 simple steps)
|
|
50
|
+
- Task is **purely conversational**
|
|
51
|
+
|
|
52
|
+
## API
|
|
53
|
+
|
|
54
|
+
### add(content, active_form)
|
|
55
|
+
|
|
56
|
+
Add a new pending task.
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
todo.add("Fix authentication bug", "Fixing authentication bug")
|
|
60
|
+
todo.add("Run tests", "Running tests")
|
|
61
|
+
todo.add("Update docs", "Updating docs")
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### start(content)
|
|
65
|
+
|
|
66
|
+
Mark a task as in_progress. Only one task can be in_progress at a time.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
todo.start("Fix authentication bug")
|
|
70
|
+
# Shows: ◐ Fixing authentication bug
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### complete(content)
|
|
74
|
+
|
|
75
|
+
Mark a task as completed.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
todo.complete("Fix authentication bug")
|
|
79
|
+
# Shows: ● Fix authentication bug
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### remove(content)
|
|
83
|
+
|
|
84
|
+
Remove a task from the list.
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
todo.remove("Update docs")
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### list()
|
|
91
|
+
|
|
92
|
+
Get all todos as text.
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
print(todo.list())
|
|
96
|
+
# ○ Fix authentication bug
|
|
97
|
+
# ◐ Running tests
|
|
98
|
+
# ● Update docs
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### update(todos)
|
|
102
|
+
|
|
103
|
+
Replace entire todo list (for bulk updates).
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
todo.update([
|
|
107
|
+
{"content": "Step 1", "status": "completed", "active_form": "Doing step 1"},
|
|
108
|
+
{"content": "Step 2", "status": "in_progress", "active_form": "Doing step 2"},
|
|
109
|
+
{"content": "Step 3", "status": "pending", "active_form": "Doing step 3"},
|
|
110
|
+
])
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### clear()
|
|
114
|
+
|
|
115
|
+
Clear all todos.
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
todo.clear()
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Task States
|
|
122
|
+
|
|
123
|
+
| Icon | Status | Description |
|
|
124
|
+
|------|--------|-------------|
|
|
125
|
+
| ○ | pending | Not yet started |
|
|
126
|
+
| ◐ | in_progress | Currently working on |
|
|
127
|
+
| ● | completed | Finished |
|
|
128
|
+
|
|
129
|
+
## Visual Display
|
|
130
|
+
|
|
131
|
+
When tasks change, TodoList shows a panel:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
╭─── Tasks (1/3) ───────────────────────────────╮
|
|
135
|
+
│ ● Fix authentication bug │
|
|
136
|
+
│ ◐ Running tests │
|
|
137
|
+
│ ○ Update docs │
|
|
138
|
+
╰────────────────────────────────────────────────╯
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Properties
|
|
142
|
+
|
|
143
|
+
### progress
|
|
144
|
+
|
|
145
|
+
Get completion percentage (0.0 to 1.0).
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
print(todo.progress) # 0.33 (1 of 3 completed)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### current_task
|
|
152
|
+
|
|
153
|
+
Get the currently in_progress task.
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
print(todo.current_task) # "Running tests"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Use with Agent
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
from connectonion import Agent, TodoList
|
|
163
|
+
|
|
164
|
+
todo = TodoList()
|
|
165
|
+
agent = Agent("worker", tools=[todo])
|
|
166
|
+
|
|
167
|
+
agent.input("""
|
|
168
|
+
Implement user authentication:
|
|
169
|
+
1. Create User model
|
|
170
|
+
2. Add login endpoint
|
|
171
|
+
3. Add logout endpoint
|
|
172
|
+
4. Write tests
|
|
173
|
+
""")
|
|
174
|
+
|
|
175
|
+
# Agent will:
|
|
176
|
+
# 1. Add all tasks to todo list
|
|
177
|
+
# 2. Start each task before working on it
|
|
178
|
+
# 3. Complete each task when done
|
|
179
|
+
# 4. Show progress throughout
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Best Practices
|
|
183
|
+
|
|
184
|
+
### Task Naming
|
|
185
|
+
|
|
186
|
+
Use both forms:
|
|
187
|
+
- **content**: Imperative form ("Fix bug", "Run tests")
|
|
188
|
+
- **active_form**: Present continuous ("Fixing bug", "Running tests")
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
todo.add("Fix authentication bug", "Fixing authentication bug")
|
|
192
|
+
# ^-- content ^-- active_form
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### One In-Progress at a Time
|
|
196
|
+
|
|
197
|
+
Only one task should be in_progress. Complete current before starting next.
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
todo.add("Task A", "Doing A")
|
|
201
|
+
todo.add("Task B", "Doing B")
|
|
202
|
+
|
|
203
|
+
todo.start("Task A")
|
|
204
|
+
todo.start("Task B") # Error: Another task is in progress
|
|
205
|
+
todo.complete("Task A")
|
|
206
|
+
todo.start("Task B") # Now works
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Mark Complete Immediately
|
|
210
|
+
|
|
211
|
+
Complete tasks as soon as done, don't batch:
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
# Good
|
|
215
|
+
todo.complete("Step 1")
|
|
216
|
+
# ... do step 2 ...
|
|
217
|
+
todo.complete("Step 2")
|
|
218
|
+
|
|
219
|
+
# Bad - batching completions
|
|
220
|
+
# ... do all steps ...
|
|
221
|
+
todo.complete("Step 1")
|
|
222
|
+
todo.complete("Step 2")
|
|
223
|
+
todo.complete("Step 3")
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Example: Multi-Step Task
|
|
227
|
+
|
|
228
|
+
```python
|
|
229
|
+
from connectonion import Agent, TodoList, DiffWriter
|
|
230
|
+
|
|
231
|
+
todo = TodoList()
|
|
232
|
+
writer = DiffWriter()
|
|
233
|
+
|
|
234
|
+
agent = Agent(
|
|
235
|
+
"developer",
|
|
236
|
+
tools=[todo, writer],
|
|
237
|
+
system_prompt="""
|
|
238
|
+
You are a developer. For complex tasks:
|
|
239
|
+
1. Break into steps using TodoList
|
|
240
|
+
2. Start each step before working
|
|
241
|
+
3. Complete each step when done
|
|
242
|
+
"""
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
agent.input("Create a REST API with user CRUD operations")
|
|
246
|
+
|
|
247
|
+
# Agent workflow:
|
|
248
|
+
# 1. todo.add("Create User model", "Creating User model")
|
|
249
|
+
# 2. todo.add("Add GET /users endpoint", "Adding GET endpoint")
|
|
250
|
+
# 3. todo.add("Add POST /users endpoint", "Adding POST endpoint")
|
|
251
|
+
# ...
|
|
252
|
+
# 4. todo.start("Create User model")
|
|
253
|
+
# 5. writer.write("models.py", "...")
|
|
254
|
+
# 6. todo.complete("Create User model")
|
|
255
|
+
# 7. todo.start("Add GET /users endpoint")
|
|
256
|
+
# ...
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Customizing
|
|
260
|
+
|
|
261
|
+
Need to modify TodoList's behavior? Copy the source to your project:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
co copy todo_list
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Then import from your local copy:
|
|
268
|
+
|
|
269
|
+
```python
|
|
270
|
+
# from connectonion import TodoList # Before
|
|
271
|
+
from tools.todo_list import TodoList # After - customize freely!
|
|
272
|
+
```
|