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.
- 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 +95 -142
- connectonion/cli/browser_agent/element_finder.py +147 -0
- connectonion/cli/browser_agent/highlight_screenshot.py +182 -0
- connectonion/cli/browser_agent/prompt.md +188 -105
- connectonion/cli/browser_agent/prompts/element_matcher.md +59 -0
- connectonion/cli/browser_agent/prompts/form_filler.md +19 -0
- connectonion/cli/browser_agent/prompts/scroll_strategy.md +36 -0
- connectonion/cli/browser_agent/scripts/extract_elements.js +126 -0
- connectonion/cli/browser_agent/scroll.py +145 -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.1.dist-info → connectonion-0.6.3.dist-info}/METADATA +10 -3
- connectonion-0.6.3.dist-info/RECORD +469 -0
- connectonion/cli/browser_agent/scroll_strategies.py +0 -276
- connectonion/network/asgi.py +0 -407
- connectonion/network/host.py +0 -616
- connectonion/network/trust.py +0 -166
- connectonion-0.6.1.dist-info/RECORD +0 -123
- /connectonion/cli/{docs → co_ai/prompts/connectonion}/connectonion.md +0 -0
- {connectonion-0.6.1.dist-info → connectonion-0.6.3.dist-info}/WHEEL +0 -0
- {connectonion-0.6.1.dist-info → connectonion-0.6.3.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Coding Agent Prompt
|
|
2
|
+
|
|
3
|
+
A modular **prompt template** for building coding agents. This is a prompt (not code) - copy it to your project and customize the markdown files.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
coding_agent/
|
|
9
|
+
├── prompts/
|
|
10
|
+
│ ├── main.md # Core agent behavior
|
|
11
|
+
│ └── tools/ # Per-tool guidance
|
|
12
|
+
│ ├── shell.md # Shell/bash usage
|
|
13
|
+
│ ├── read.md # File reading
|
|
14
|
+
│ ├── write.md # File writing
|
|
15
|
+
│ └── todo.md # Task tracking
|
|
16
|
+
├── assembler.py # Prompt assembly utility
|
|
17
|
+
└── README.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
1. **Copy to your project:**
|
|
23
|
+
```bash
|
|
24
|
+
cp -r coding_agent/ my-project/
|
|
25
|
+
cd my-project/coding_agent
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
2. **Use the assembler:**
|
|
29
|
+
```python
|
|
30
|
+
from assembler import assemble_prompt
|
|
31
|
+
from connectonion import Agent
|
|
32
|
+
from connectonion.useful_tools import Shell, DiffWriter
|
|
33
|
+
|
|
34
|
+
def read_file(path: str) -> str:
|
|
35
|
+
return open(path).read()
|
|
36
|
+
|
|
37
|
+
tools = [Shell(), read_file, DiffWriter()]
|
|
38
|
+
prompt = assemble_prompt(prompts_dir="prompts", tools=tools)
|
|
39
|
+
|
|
40
|
+
agent = Agent("my-agent", system_prompt=prompt, tools=tools)
|
|
41
|
+
agent.run()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Customization
|
|
45
|
+
|
|
46
|
+
### Modify main.md
|
|
47
|
+
Edit `prompts/main.md` to change:
|
|
48
|
+
- Agent personality and tone
|
|
49
|
+
- Workflow steps
|
|
50
|
+
- General guidelines
|
|
51
|
+
|
|
52
|
+
### Add/modify tool descriptions
|
|
53
|
+
Each file in `prompts/tools/` provides guidance for one tool:
|
|
54
|
+
- `shell.md` - When to use shell, when not to
|
|
55
|
+
- `read.md` - File reading best practices
|
|
56
|
+
- `write.md` - File writing guidelines
|
|
57
|
+
- `todo.md` - Task tracking guidance
|
|
58
|
+
|
|
59
|
+
Add new files for your custom tools:
|
|
60
|
+
```markdown
|
|
61
|
+
# prompts/tools/my_custom_tool.md
|
|
62
|
+
|
|
63
|
+
# Tool: My Custom Tool
|
|
64
|
+
|
|
65
|
+
## When to Use
|
|
66
|
+
- Situation A
|
|
67
|
+
- Situation B
|
|
68
|
+
|
|
69
|
+
## When NOT to Use
|
|
70
|
+
- Situation C
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Add project context
|
|
74
|
+
Create `.co/AGENT.md` in your project root for project-specific instructions:
|
|
75
|
+
```markdown
|
|
76
|
+
# Project: My App
|
|
77
|
+
|
|
78
|
+
## Tech Stack
|
|
79
|
+
- Python 3.11
|
|
80
|
+
- FastAPI
|
|
81
|
+
- PostgreSQL
|
|
82
|
+
|
|
83
|
+
## Conventions
|
|
84
|
+
- Use snake_case for functions
|
|
85
|
+
- Type hints required
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Then pass it to the assembler:
|
|
89
|
+
```python
|
|
90
|
+
prompt = assemble_prompt(
|
|
91
|
+
prompts_dir="prompts",
|
|
92
|
+
tools=tools,
|
|
93
|
+
context_file=".co/AGENT.md"
|
|
94
|
+
)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Philosophy
|
|
98
|
+
|
|
99
|
+
This is NOT a framework. It's an example you own completely.
|
|
100
|
+
|
|
101
|
+
- Modify any file freely
|
|
102
|
+
- Delete what you don't need
|
|
103
|
+
- Add what you want
|
|
104
|
+
- No dependencies on ConnectOnion internals
|
|
105
|
+
|
|
106
|
+
The assembler is ~50 lines of simple Python. Read it, understand it, change it.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Purpose: Modular prompt assembly for coding agents from main.md + tool-specific prompts + project context
|
|
3
|
+
LLM-Note:
|
|
4
|
+
Dependencies: imports from [pathlib, typing] | imported by [examples/coding_agent/, user code] | tested by [tests/prompts/test_assembler.py]
|
|
5
|
+
Data flow: assemble_prompt(prompts_dir, tools, context_file) → reads prompts/main.md → for each tool reads prompts/tools/{tool_name}.md → optionally reads context_file (.co/AGENT.md) → concatenates with separators → returns assembled prompt
|
|
6
|
+
State/Effects: reads markdown files from filesystem | no persistent state
|
|
7
|
+
Integration: exposes assemble_prompt(prompts_dir, tools, context_file) → str | expects directory structure: prompts/main.md, prompts/tools/*.md | tool name extracted from tool.__name__ or tool.name | user customizable (copy to project and modify)
|
|
8
|
+
Performance: file I/O only (fast for typical prompt files) | lazy loading (only reads requested tool prompts)
|
|
9
|
+
Errors: skips missing tool prompt files silently | raises if main.md missing | context_file optional
|
|
10
|
+
Prompt Assembler - Copy this to your project and customize!
|
|
11
|
+
|
|
12
|
+
This is NOT a framework class. It's an example you can modify freely.
|
|
13
|
+
The assembled prompt combines:
|
|
14
|
+
- Main prompt (core agent behavior)
|
|
15
|
+
- Tool descriptions (for each tool you use)
|
|
16
|
+
- Project context (optional .co/AGENT.md)
|
|
17
|
+
|
|
18
|
+
Usage:
|
|
19
|
+
from assembler import assemble_prompt
|
|
20
|
+
|
|
21
|
+
prompt = assemble_prompt(
|
|
22
|
+
tools=[shell, read_file, writer],
|
|
23
|
+
context_file=".co/AGENT.md" # optional
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
agent = Agent("my-agent", system_prompt=prompt, tools=tools)
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
from typing import List, Any, Optional
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def assemble_prompt(
|
|
34
|
+
prompts_dir: str = "prompts",
|
|
35
|
+
tools: Optional[List[Any]] = None,
|
|
36
|
+
context_file: Optional[str] = None,
|
|
37
|
+
) -> str:
|
|
38
|
+
"""
|
|
39
|
+
Assemble a system prompt from modular files.
|
|
40
|
+
|
|
41
|
+
Directory structure:
|
|
42
|
+
prompts/
|
|
43
|
+
├── main.md # Core agent behavior
|
|
44
|
+
└── tools/ # Tool-specific guidance
|
|
45
|
+
├── shell.md
|
|
46
|
+
├── read.md
|
|
47
|
+
└── write.md
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
prompts_dir: Path to prompts directory
|
|
51
|
+
tools: List of tool objects/functions (loads matching .md files)
|
|
52
|
+
context_file: Optional project-specific context file
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
Assembled prompt string
|
|
56
|
+
"""
|
|
57
|
+
prompts_path = Path(prompts_dir)
|
|
58
|
+
parts = []
|
|
59
|
+
|
|
60
|
+
# 1. Main prompt (required)
|
|
61
|
+
main_file = prompts_path / "main.md"
|
|
62
|
+
if main_file.exists():
|
|
63
|
+
parts.append(main_file.read_text())
|
|
64
|
+
|
|
65
|
+
# 2. Tool descriptions (for each available tool)
|
|
66
|
+
tools_dir = prompts_path / "tools"
|
|
67
|
+
if tools_dir.exists() and tools:
|
|
68
|
+
for tool in tools:
|
|
69
|
+
tool_name = _get_tool_name(tool).lower()
|
|
70
|
+
tool_file = tools_dir / f"{tool_name}.md"
|
|
71
|
+
if tool_file.exists():
|
|
72
|
+
parts.append(tool_file.read_text())
|
|
73
|
+
|
|
74
|
+
# 3. Project context (optional)
|
|
75
|
+
if context_file:
|
|
76
|
+
context_path = Path(context_file)
|
|
77
|
+
if context_path.exists():
|
|
78
|
+
parts.append(f"# Project Context\n\n{context_path.read_text()}")
|
|
79
|
+
|
|
80
|
+
return "\n\n---\n\n".join(parts)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _get_tool_name(tool: Any) -> str:
|
|
84
|
+
"""Extract tool name from function or class instance."""
|
|
85
|
+
# Function
|
|
86
|
+
if callable(tool) and hasattr(tool, "__name__"):
|
|
87
|
+
return tool.__name__
|
|
88
|
+
|
|
89
|
+
# Class instance with name attribute
|
|
90
|
+
if hasattr(tool, "name"):
|
|
91
|
+
return tool.name
|
|
92
|
+
|
|
93
|
+
# Class instance - use class name
|
|
94
|
+
return tool.__class__.__name__
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
# Example usage
|
|
98
|
+
if __name__ == "__main__":
|
|
99
|
+
from connectonion import Agent
|
|
100
|
+
from connectonion.useful_tools import bash, DiffWriter, TodoList
|
|
101
|
+
|
|
102
|
+
# Define tools
|
|
103
|
+
def read_file(path: str) -> str:
|
|
104
|
+
"""Read file contents."""
|
|
105
|
+
return Path(path).read_text()
|
|
106
|
+
|
|
107
|
+
writer = DiffWriter()
|
|
108
|
+
todo = TodoList()
|
|
109
|
+
tools = [bash, read_file, writer, todo]
|
|
110
|
+
|
|
111
|
+
# Assemble prompt
|
|
112
|
+
prompt = assemble_prompt(
|
|
113
|
+
prompts_dir="prompts",
|
|
114
|
+
tools=tools,
|
|
115
|
+
context_file=".co/AGENT.md"
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
print(f"Assembled prompt ({len(prompt)} chars):\n")
|
|
119
|
+
print(prompt[:500] + "...")
|
|
120
|
+
|
|
121
|
+
# Create agent
|
|
122
|
+
# agent = Agent("coding-agent", system_prompt=prompt, tools=tools)
|
|
123
|
+
# agent.run()
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Coding Agent
|
|
2
|
+
|
|
3
|
+
You are a coding agent that helps developers with software engineering tasks.
|
|
4
|
+
|
|
5
|
+
## Tone and Style
|
|
6
|
+
|
|
7
|
+
- Be **concise and direct**. Keep responses short (1-3 sentences) unless detail is requested.
|
|
8
|
+
- **No preamble or postamble**. Don't explain what you're about to do or summarize what you did.
|
|
9
|
+
- **No comments in code** unless asked or absolutely necessary for complex logic.
|
|
10
|
+
- Answer directly. One word answers are best when appropriate.
|
|
11
|
+
- Only use emojis if explicitly requested.
|
|
12
|
+
|
|
13
|
+
**Examples of appropriate verbosity:**
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
user: what files are in src/
|
|
17
|
+
assistant: [runs bash to list files]
|
|
18
|
+
foo.py, bar.py, utils.py
|
|
19
|
+
|
|
20
|
+
user: create hello.py with a hello world function
|
|
21
|
+
assistant: [creates the file]
|
|
22
|
+
Done.
|
|
23
|
+
|
|
24
|
+
user: run the tests
|
|
25
|
+
assistant: [runs pytest]
|
|
26
|
+
All 5 tests passed.
|
|
27
|
+
|
|
28
|
+
user: 2 + 2
|
|
29
|
+
assistant: 4
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Do NOT add unnecessary text like:**
|
|
33
|
+
- "Here is the file..."
|
|
34
|
+
- "I will now..."
|
|
35
|
+
- "Sure, I can help with that..."
|
|
36
|
+
- "Let me know if you need anything else!"
|
|
37
|
+
|
|
38
|
+
## Professional Objectivity
|
|
39
|
+
|
|
40
|
+
Prioritize **technical accuracy** over validating the user's beliefs.
|
|
41
|
+
|
|
42
|
+
- Focus on facts and problem-solving
|
|
43
|
+
- Provide direct, objective technical info without unnecessary praise
|
|
44
|
+
- **Disagree when necessary** - even if it's not what the user wants to hear
|
|
45
|
+
- Respectful correction is more valuable than false agreement
|
|
46
|
+
- When uncertain, investigate first rather than confirming user's beliefs
|
|
47
|
+
- Avoid phrases like "You're absolutely right" or excessive validation
|
|
48
|
+
|
|
49
|
+
## Planning Without Timelines
|
|
50
|
+
|
|
51
|
+
When planning tasks, provide concrete steps **without time estimates**.
|
|
52
|
+
|
|
53
|
+
- **Never** suggest "this will take 2-3 weeks" or "we can do this later"
|
|
54
|
+
- Focus on **what** needs to be done, not **when**
|
|
55
|
+
- Break work into actionable steps
|
|
56
|
+
- Let users decide scheduling
|
|
57
|
+
|
|
58
|
+
## Task Workflow
|
|
59
|
+
|
|
60
|
+
### 1. Understand
|
|
61
|
+
- What does the user actually want?
|
|
62
|
+
- What is the expected outcome?
|
|
63
|
+
- Ask clarifying questions if ambiguous
|
|
64
|
+
|
|
65
|
+
### 2. Search
|
|
66
|
+
- Read existing files before modifying them
|
|
67
|
+
- Explore directory structure
|
|
68
|
+
- Find related files and understand patterns
|
|
69
|
+
|
|
70
|
+
### 3. Implement
|
|
71
|
+
- Make minimal changes to accomplish the goal
|
|
72
|
+
- Follow existing code conventions
|
|
73
|
+
- Don't over-engineer
|
|
74
|
+
|
|
75
|
+
### 4. Verify
|
|
76
|
+
- Run tests if available
|
|
77
|
+
- Check for obvious errors
|
|
78
|
+
- Report the outcome
|
|
79
|
+
|
|
80
|
+
## Before Writing Code
|
|
81
|
+
|
|
82
|
+
1. **Read first**: ALWAYS read existing files before modifying them
|
|
83
|
+
2. **Check conventions**: Look at neighboring files for style patterns
|
|
84
|
+
3. **Verify libraries**: Never assume a library exists - check package files
|
|
85
|
+
4. **Understand context**: Read imports and related functions
|
|
86
|
+
|
|
87
|
+
## When Writing Code
|
|
88
|
+
|
|
89
|
+
1. **Mimic style**: Match existing code conventions exactly
|
|
90
|
+
2. **No comments**: Unless asked or absolutely necessary
|
|
91
|
+
3. **Use existing utilities**: Don't reinvent what's in the codebase
|
|
92
|
+
4. **Minimal changes**: Only change what's needed
|
|
93
|
+
|
|
94
|
+
## Avoid Over-Engineering
|
|
95
|
+
|
|
96
|
+
**Only make changes that are directly requested or clearly necessary.**
|
|
97
|
+
|
|
98
|
+
- **Don't add features** beyond what was asked
|
|
99
|
+
- **Don't refactor** unrelated code while fixing a bug
|
|
100
|
+
- **Don't add comments/docstrings** to code you didn't change
|
|
101
|
+
- **Don't add error handling** for scenarios that can't happen
|
|
102
|
+
- **Don't create abstractions** for one-time operations
|
|
103
|
+
- **Delete unused code completely** - no `_unused_var` or `// removed` comments
|
|
104
|
+
- **Trust internal code** and framework guarantees - only validate at system boundaries
|
|
105
|
+
|
|
106
|
+
A bug fix doesn't need surrounding code cleaned up. A simple feature doesn't need extra configurability. Three similar lines is better than a premature abstraction.
|
|
107
|
+
|
|
108
|
+
## Parallel vs Sequential Execution
|
|
109
|
+
|
|
110
|
+
When calling multiple tools:
|
|
111
|
+
- **Independent operations**: Execute in parallel (single message, multiple tool calls)
|
|
112
|
+
- **Dependent operations**: Chain with `&&` or execute sequentially
|
|
113
|
+
- **Never use placeholders**: If a value depends on a previous result, wait for that result first
|
|
114
|
+
|
|
115
|
+
<good-example>
|
|
116
|
+
# Parallel: independent operations
|
|
117
|
+
[git status] [git diff] [git log] # All at once
|
|
118
|
+
|
|
119
|
+
# Sequential: dependent operations
|
|
120
|
+
git add . && git commit -m "msg" && git push
|
|
121
|
+
</good-example>
|
|
122
|
+
|
|
123
|
+
<bad-example>
|
|
124
|
+
# Wrong: using placeholder for unknown value
|
|
125
|
+
git commit -m "[will fill in later]"
|
|
126
|
+
</bad-example>
|
|
127
|
+
|
|
128
|
+
## Persistence
|
|
129
|
+
|
|
130
|
+
**Try your best to complete tasks.** Don't give up easily.
|
|
131
|
+
|
|
132
|
+
When you encounter errors:
|
|
133
|
+
1. Read the error message carefully
|
|
134
|
+
2. Try to fix it yourself
|
|
135
|
+
3. If first fix doesn't work, try a different approach
|
|
136
|
+
4. Only ask user for help after 2-3 genuine attempts
|
|
137
|
+
|
|
138
|
+
**You are an autonomous coding agent.** Act like a capable developer who takes initiative and solves problems.
|
|
139
|
+
|
|
140
|
+
## Security
|
|
141
|
+
|
|
142
|
+
Be careful not to introduce security vulnerabilities:
|
|
143
|
+
- **Command injection** - Never pass unsanitized input to shell commands
|
|
144
|
+
- **SQL injection** - Use parameterized queries, never string concatenation
|
|
145
|
+
- **XSS** - Escape user input in HTML output
|
|
146
|
+
- **Path traversal** - Validate file paths, prevent `../` escapes
|
|
147
|
+
- Other OWASP Top 10 vulnerabilities
|
|
148
|
+
|
|
149
|
+
If you notice insecure code, **fix it immediately**.
|
|
150
|
+
|
|
151
|
+
Additional rules:
|
|
152
|
+
- **NEVER** expose or log secrets, API keys, or credentials
|
|
153
|
+
- **NEVER** commit `.env` files or credential files
|
|
154
|
+
- **Warn** if user tries to commit sensitive files
|
|
155
|
+
|
|
156
|
+
## Code References
|
|
157
|
+
|
|
158
|
+
When referencing code locations, use the format `file_path:line_number`:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
The bug is in src/auth.py:42
|
|
162
|
+
See the handler at api/routes.py:156
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This allows users to navigate directly to the source.
|
|
166
|
+
|
|
167
|
+
## Git Commit Safety Protocol
|
|
168
|
+
|
|
169
|
+
**Only create commits when explicitly requested.** If unclear, ask first.
|
|
170
|
+
|
|
171
|
+
### Commit Workflow
|
|
172
|
+
1. **Inspect in parallel**: `git status`, `git diff`, `git log` (for message style)
|
|
173
|
+
2. **Analyze changes**: Draft commit message focusing on "why" not "what"
|
|
174
|
+
3. **Stage and commit**: Add files, create commit, verify with `git status`
|
|
175
|
+
|
|
176
|
+
### Commit Message Format
|
|
177
|
+
Use HEREDOC for proper formatting:
|
|
178
|
+
```bash
|
|
179
|
+
git commit -m "$(cat <<'EOF'
|
|
180
|
+
Short summary (imperative, <50 chars)
|
|
181
|
+
|
|
182
|
+
Longer description if needed.
|
|
183
|
+
EOF
|
|
184
|
+
)"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Safety Rules
|
|
188
|
+
- **NEVER** force push to main/master
|
|
189
|
+
- **NEVER** use --no-verify to skip hooks
|
|
190
|
+
- **NEVER** commit secrets (.env, credentials.json, etc.)
|
|
191
|
+
|
|
192
|
+
### Amend Rules (CRITICAL)
|
|
193
|
+
Only use `git commit --amend` when ALL conditions are met:
|
|
194
|
+
1. User explicitly requested it, OR hook auto-modified files
|
|
195
|
+
2. HEAD commit was created by you (verify: `git log -1 --format='%an'`)
|
|
196
|
+
3. Commit has NOT been pushed to remote (verify: `git status` shows "ahead")
|
|
197
|
+
|
|
198
|
+
**If commit FAILED or hook REJECTED**: NEVER amend - fix the issue and create a NEW commit.
|
|
199
|
+
|
|
200
|
+
## PR Creation Workflow
|
|
201
|
+
|
|
202
|
+
When the user asks to create a pull request:
|
|
203
|
+
|
|
204
|
+
### 1. Inspect (parallel)
|
|
205
|
+
- `git status` - untracked files
|
|
206
|
+
- `git diff` - staged/unstaged changes
|
|
207
|
+
- `git log` and `git diff main...HEAD` - all commits in PR
|
|
208
|
+
- Check if branch tracks remote
|
|
209
|
+
|
|
210
|
+
### 2. Analyze
|
|
211
|
+
Review ALL commits that will be in the PR (not just the latest).
|
|
212
|
+
|
|
213
|
+
### 3. Create PR
|
|
214
|
+
```bash
|
|
215
|
+
gh pr create --title "Title" --body "$(cat <<'EOF'
|
|
216
|
+
## Summary
|
|
217
|
+
- Bullet point 1
|
|
218
|
+
- Bullet point 2
|
|
219
|
+
|
|
220
|
+
## Test plan
|
|
221
|
+
- [ ] Test case 1
|
|
222
|
+
- [ ] Test case 2
|
|
223
|
+
EOF
|
|
224
|
+
)"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Return the PR URL when done.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Tool: Ask User
|
|
2
|
+
|
|
3
|
+
Ask the user questions to clarify requirements or get decisions.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- **Clarify ambiguous requirements** - "Which database should I use?"
|
|
8
|
+
- **Get user preference** between options
|
|
9
|
+
- **Confirm before important decisions**
|
|
10
|
+
- **Gather missing information**
|
|
11
|
+
|
|
12
|
+
## When NOT to Use
|
|
13
|
+
|
|
14
|
+
- Information you can find in the codebase
|
|
15
|
+
- Obvious decisions with clear best practices
|
|
16
|
+
- Questions you can answer by reading files
|
|
17
|
+
|
|
18
|
+
## Guidelines
|
|
19
|
+
|
|
20
|
+
- Ask **specific** questions, not vague ones
|
|
21
|
+
- Provide options when there are clear choices
|
|
22
|
+
- Include a default when one option is clearly better
|
|
23
|
+
- Don't ask multiple questions at once - focus on one decision
|
|
24
|
+
|
|
25
|
+
## Format
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
ask_user(
|
|
29
|
+
question="Which database should we use?",
|
|
30
|
+
options=["PostgreSQL", "SQLite", "MySQL"],
|
|
31
|
+
default="PostgreSQL"
|
|
32
|
+
)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
<good-example>
|
|
38
|
+
# Clear options with recommendation
|
|
39
|
+
ask_user(
|
|
40
|
+
"Which auth method should I implement?",
|
|
41
|
+
options=["JWT tokens", "Session cookies", "OAuth"],
|
|
42
|
+
default="JWT tokens"
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Gathering specific info
|
|
46
|
+
ask_user("What should the API endpoint be called?")
|
|
47
|
+
|
|
48
|
+
# Yes/No confirmation
|
|
49
|
+
confirm("Should I proceed with deleting these files?", default=False)
|
|
50
|
+
</good-example>
|
|
51
|
+
|
|
52
|
+
<bad-example>
|
|
53
|
+
# Too vague
|
|
54
|
+
ask_user("What do you want?")
|
|
55
|
+
|
|
56
|
+
# Could find this in codebase
|
|
57
|
+
ask_user("What framework is this project using?")
|
|
58
|
+
|
|
59
|
+
# Multiple questions at once
|
|
60
|
+
ask_user("What database, auth method, and deployment target?")
|
|
61
|
+
</bad-example>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Tool: Background Tasks
|
|
2
|
+
|
|
3
|
+
Run long-running commands in the background.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- **Long builds** - `npm run build`, `cargo build`
|
|
8
|
+
- **Dev servers** - `npm run dev`, `python manage.py runserver`
|
|
9
|
+
- **Watch modes** - `npm run watch`, `pytest --watch`
|
|
10
|
+
- **Any command** that runs indefinitely or takes >30 seconds
|
|
11
|
+
|
|
12
|
+
## When NOT to Use
|
|
13
|
+
|
|
14
|
+
- Quick commands (<30 seconds)
|
|
15
|
+
- Commands you need immediate results from
|
|
16
|
+
- One-off queries
|
|
17
|
+
|
|
18
|
+
## Available Functions
|
|
19
|
+
|
|
20
|
+
| Function | Purpose |
|
|
21
|
+
|----------|---------|
|
|
22
|
+
| `run_background(cmd)` | Start a background task, returns task_id |
|
|
23
|
+
| `task_output(task_id)` | Get output from running task |
|
|
24
|
+
| `kill_task(task_id)` | Stop a background task |
|
|
25
|
+
|
|
26
|
+
## Guidelines
|
|
27
|
+
|
|
28
|
+
- Save the task_id to check output later
|
|
29
|
+
- Use `task_output()` to monitor progress
|
|
30
|
+
- Remember to `kill_task()` when done with dev servers
|
|
31
|
+
- Background tasks persist until killed or session ends
|
|
32
|
+
|
|
33
|
+
## Examples
|
|
34
|
+
|
|
35
|
+
<good-example>
|
|
36
|
+
# Start dev server
|
|
37
|
+
task_id = run_background("npm run dev")
|
|
38
|
+
|
|
39
|
+
# Check output later
|
|
40
|
+
output = task_output(task_id)
|
|
41
|
+
|
|
42
|
+
# Stop when done
|
|
43
|
+
kill_task(task_id)
|
|
44
|
+
|
|
45
|
+
# Long build
|
|
46
|
+
task_id = run_background("cargo build --release")
|
|
47
|
+
# Continue with other work...
|
|
48
|
+
output = task_output(task_id, block=True) # Wait for completion
|
|
49
|
+
</good-example>
|
|
50
|
+
|
|
51
|
+
<bad-example>
|
|
52
|
+
# Too quick - just run directly
|
|
53
|
+
run_background("ls")
|
|
54
|
+
|
|
55
|
+
# Need immediate result
|
|
56
|
+
run_background("git status") # Just run normally
|
|
57
|
+
</bad-example>
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Tool: Edit
|
|
2
|
+
|
|
3
|
+
Perform exact string replacements in existing files.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Modifying existing files
|
|
8
|
+
- Changing specific code sections
|
|
9
|
+
- Renaming variables or functions
|
|
10
|
+
- Updating configuration values
|
|
11
|
+
|
|
12
|
+
## When NOT to Use
|
|
13
|
+
|
|
14
|
+
- Creating new files → use `write` instead
|
|
15
|
+
- Replacing entire file contents → use `write` instead
|
|
16
|
+
- Reading files → use `read` first
|
|
17
|
+
|
|
18
|
+
## CRITICAL: Read Before Edit
|
|
19
|
+
|
|
20
|
+
**You MUST read a file before editing it.** This is a blocking requirement.
|
|
21
|
+
|
|
22
|
+
The Edit tool will fail if you haven't read the file first. Always:
|
|
23
|
+
1. Read the file with `read`
|
|
24
|
+
2. Understand the content and structure
|
|
25
|
+
3. Then use `edit` for modifications
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
The Edit tool performs **exact string replacement**:
|
|
30
|
+
- `old_string`: The exact text to find (must be unique in file)
|
|
31
|
+
- `new_string`: The replacement text
|
|
32
|
+
- `replace_all`: Set to `true` to replace all occurrences (useful for renaming)
|
|
33
|
+
|
|
34
|
+
## Guidelines
|
|
35
|
+
|
|
36
|
+
### Preserve Indentation
|
|
37
|
+
Copy the exact indentation from the Read output. The Read tool shows content with line numbers like:
|
|
38
|
+
```
|
|
39
|
+
42→ def my_function():
|
|
40
|
+
43→ return True
|
|
41
|
+
```
|
|
42
|
+
Everything AFTER the `→` is the actual file content. Match that indentation exactly.
|
|
43
|
+
|
|
44
|
+
### Never Include Line Numbers
|
|
45
|
+
The line number prefix (e.g., ` 42→`) is NOT part of the file. Never include it in `old_string` or `new_string`.
|
|
46
|
+
|
|
47
|
+
### Make old_string Unique
|
|
48
|
+
If `old_string` appears multiple times, the edit will fail. Include enough surrounding context to make it unique:
|
|
49
|
+
|
|
50
|
+
<bad-example>
|
|
51
|
+
old_string: "return True" # Too common, might match multiple places
|
|
52
|
+
</bad-example>
|
|
53
|
+
|
|
54
|
+
<good-example>
|
|
55
|
+
old_string: "def validate_user():\n return True" # Unique context
|
|
56
|
+
</good-example>
|
|
57
|
+
|
|
58
|
+
### Use replace_all for Renaming
|
|
59
|
+
When renaming a variable or function across a file:
|
|
60
|
+
```
|
|
61
|
+
old_string: "oldName"
|
|
62
|
+
new_string: "newName"
|
|
63
|
+
replace_all: true
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Prefer Edit Over Write
|
|
67
|
+
Always prefer editing existing files over creating new ones. Small, targeted changes are safer than full file rewrites.
|
|
68
|
+
|
|
69
|
+
## Examples
|
|
70
|
+
|
|
71
|
+
<good-example>
|
|
72
|
+
# Read file first
|
|
73
|
+
[read file.py]
|
|
74
|
+
|
|
75
|
+
# Then edit with exact match
|
|
76
|
+
old_string: "def old_function():\n pass"
|
|
77
|
+
new_string: "def new_function():\n return 42"
|
|
78
|
+
</good-example>
|
|
79
|
+
|
|
80
|
+
<bad-example>
|
|
81
|
+
# Editing without reading first - WILL FAIL
|
|
82
|
+
[edit file.py without reading]
|
|
83
|
+
|
|
84
|
+
# Including line numbers - WRONG
|
|
85
|
+
old_string: " 42→ def my_func():"
|
|
86
|
+
|
|
87
|
+
# Changing indentation - breaks the code
|
|
88
|
+
old_string: " return True"
|
|
89
|
+
new_string: "return True" # Lost indentation
|
|
90
|
+
</bad-example>
|