kolega-code 0.5.1__tar.gz → 0.7.0__tar.gz
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.
- kolega_code-0.7.0/PKG-INFO +223 -0
- kolega_code-0.7.0/README.md +150 -0
- kolega_code-0.7.0/docs/src/assets/demo.gif +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/concepts/tools.md +8 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/configuration/environment-variables.md +28 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/configuration/providers-and-models.mdx +36 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +34 -5
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/index.mdx +3 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/baseagent.py +86 -31
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/coder.py +0 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/context.py +7 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/generalagent.py +0 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/runtime.py +15 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_anthropic_token_counting.py +0 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_client.py +7 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_openai_token_counting.py +0 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_file_system.py +15 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_sandbox_terminal_input.py +12 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_agent_tools_inventory.py +3 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_base_agent.py +113 -6
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_coder_attachments.py +3 -7
- kolega_code-0.7.0/kolega_code/agent/tests/test_event_emitter.py +84 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_general_agent.py +2 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_gigacode_gating.py +2 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_permissions.py +1 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_planning_agent.py +3 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_tools.py +21 -31
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_create_file_tool.py +39 -5
- kolega_code-0.7.0/kolega_code/agent/tests/tool_backend/test_edit_preview.py +83 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_list_directory_tool.py +25 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_replace_entire_file_tool.py +16 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_replace_lines_tool.py +8 -16
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_search_and_replace_tool.py +3 -8
- kolega_code-0.7.0/kolega_code/agent/tests/tool_backend/test_web_search_tool.py +366 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_workflow_tool.py +52 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/agent_tool.py +2 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/base_tool.py +35 -6
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/create_file_tool.py +16 -10
- kolega_code-0.7.0/kolega_code/agent/tool_backend/edit_preview.py +152 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/list_directory_tool.py +20 -21
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/read_file_tool.py +15 -15
- kolega_code-0.7.0/kolega_code/agent/tool_backend/replace_entire_file_tool.py +56 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +17 -20
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +19 -23
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/__init__.py +83 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/base.py +58 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +56 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/errors.py +23 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/firecrawl.py +117 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/models.py +28 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/searxng.py +62 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/search_backends/tavily.py +70 -0
- kolega_code-0.7.0/kolega_code/agent/tool_backend/web_search_tool.py +114 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/workflow_tool.py +41 -8
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tools.py +49 -92
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/app.py +910 -63
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/config.py +92 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/provider_registry.py +25 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/session_store.py +3 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/settings.py +61 -5
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_app.py +665 -20
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_cli_config.py +148 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_session_store.py +5 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_settings.py +85 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/theme.py +4 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/config.py +72 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/events.py +6 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/providers/anthropic.py +4 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/providers/google.py +11 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/providers/openai.py +4 -2
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/specs.py +1 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/permissions.py +3 -6
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/terminal.py +10 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/services/file_system.py +5 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/pyproject.toml +6 -1
- {kolega_code-0.5.1 → kolega_code-0.7.0}/uv.lock +829 -2
- kolega_code-0.5.1/PKG-INFO +0 -164
- kolega_code-0.5.1/README.md +0 -96
- kolega_code-0.5.1/kolega_code/agent/tool_backend/apply_patch_tool.py +0 -514
- kolega_code-0.5.1/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -40
- {kolega_code-0.5.1 → kolega_code-0.7.0}/.env.example +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/.github/workflows/ci.yml +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/.github/workflows/docs.yml +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/.github/workflows/release.yml +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/.gitignore +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/CONTRIBUTING.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/LICENSE +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/RELEASING.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/SECURITY.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/conftest.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/.gitignore +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/README.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/astro.config.mjs +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/package-lock.json +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/package.json +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/public/favicon.svg +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/assets/kolega-dark.svg +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/assets/kolega-light.svg +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/cli/ask.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/cli/doctor.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/cli/overview.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/cli/sessions.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/concepts/agents.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/concepts/how-it-works.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/gigacode.mdx +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/hooks.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/skills.mdx +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/tui/composer.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/tui/interface.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/tui/modes.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/tui/slash-commands.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content.config.ts +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/styles/brand.css +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/docs/tsconfig.json +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/tests/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/tests/test_orchestration.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_billing_openai_cache.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_dashscope_mapping.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_error_boundary.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_exceptions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_google_thought_signature.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_google_tool_signature_live.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_instrumented_client.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_instrumented_client_integration.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_langfuse_normalization.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_live_providers.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_model_specs.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens_stream.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_openai_message_conversion.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_thinking_effort.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/llm/test_tool_execution_ids.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_browser.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_browser_parity.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_terminal.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_terminal_buffer.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/services/test_terminal_state_serializer.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_coder_prompt_extensions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_commands.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_duplicate_tool_results.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_empty_message_handling.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_hooks_integration.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_html.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_parallel_tool_calls.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_prompt_provider.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_prompts.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/test_tool_registry.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_agent_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_base_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_browser_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_build_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_glob_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_read_file_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_search_codebase_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_terminal_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_think_hard_integration.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_think_hard_streaming.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tests/tool_backend/test_web_fetch_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/main.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/messages.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/slash_commands.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_connection.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_file_index.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_main.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_mentions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_skills.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_slash_commands.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_themes.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/tests/test_updater.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/tests/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/hooks/tests/test_hooks.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/client.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/exceptions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/models.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/services/base.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/tools/tests/__init__.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/kolega_code/tools/tests/test_definitions.py +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/run_tests.sh +0 -0
- {kolega_code-0.5.1 → kolega_code-0.7.0}/scripts/install-kolega-code.sh +0 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kolega-code
|
|
3
|
+
Version: 0.7.0
|
|
4
|
+
Summary: Local-first AI coding agent for the terminal
|
|
5
|
+
Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
|
|
6
|
+
Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
|
|
7
|
+
Project-URL: Repository, https://github.com/kolega-ai/kolega-code
|
|
8
|
+
Project-URL: Issues, https://github.com/kolega-ai/kolega-code/issues
|
|
9
|
+
Author: Kolega Team
|
|
10
|
+
License: MIT License
|
|
11
|
+
|
|
12
|
+
Copyright (c) 2026 Kolega Team
|
|
13
|
+
|
|
14
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
15
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
16
|
+
in the Software without restriction, including without limitation the rights
|
|
17
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
19
|
+
furnished to do so, subject to the following conditions:
|
|
20
|
+
|
|
21
|
+
The above copyright notice and this permission notice shall be included in all
|
|
22
|
+
copies or substantial portions of the Software.
|
|
23
|
+
|
|
24
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
25
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
26
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
27
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
28
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
29
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
30
|
+
SOFTWARE.
|
|
31
|
+
License-File: LICENSE
|
|
32
|
+
Keywords: agent,ai,cli,coding-agent,developer-tools
|
|
33
|
+
Classifier: Development Status :: 3 - Alpha
|
|
34
|
+
Classifier: Environment :: Console
|
|
35
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
36
|
+
Classifier: Operating System :: MacOS
|
|
37
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
38
|
+
Classifier: Programming Language :: Python :: 3
|
|
39
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
41
|
+
Classifier: Topic :: Software Development
|
|
42
|
+
Classifier: Topic :: Utilities
|
|
43
|
+
Requires-Python: >=3.11
|
|
44
|
+
Requires-Dist: anthropic==0.101.0
|
|
45
|
+
Requires-Dist: beautifulsoup4==4.14.3
|
|
46
|
+
Requires-Dist: ddgs==9.14.4
|
|
47
|
+
Requires-Dist: firecrawl-py==4.28.2
|
|
48
|
+
Requires-Dist: google-genai==2.0.1
|
|
49
|
+
Requires-Dist: httpx==0.28.1
|
|
50
|
+
Requires-Dist: jinja2==3.1.6
|
|
51
|
+
Requires-Dist: langfuse==3.14.5
|
|
52
|
+
Requires-Dist: lxml-html-clean==0.4.4
|
|
53
|
+
Requires-Dist: nest-asyncio==1.6.0
|
|
54
|
+
Requires-Dist: openai==1.109.1
|
|
55
|
+
Requires-Dist: packaging==25.0
|
|
56
|
+
Requires-Dist: pathspec==1.1.1
|
|
57
|
+
Requires-Dist: playwright==1.59.0
|
|
58
|
+
Requires-Dist: psutil==7.2.2
|
|
59
|
+
Requires-Dist: pydantic==2.13.4
|
|
60
|
+
Requires-Dist: python-dotenv==1.2.2
|
|
61
|
+
Requires-Dist: pyyaml==6.0.3
|
|
62
|
+
Requires-Dist: tavily-python==0.7.26
|
|
63
|
+
Requires-Dist: tenacity==9.1.4
|
|
64
|
+
Requires-Dist: textual==8.2.5
|
|
65
|
+
Requires-Dist: tiktoken==0.12.0
|
|
66
|
+
Requires-Dist: trafilatura==2.0.0
|
|
67
|
+
Provides-Extra: cli
|
|
68
|
+
Provides-Extra: dev
|
|
69
|
+
Requires-Dist: pytest-asyncio==1.3.0; extra == 'dev'
|
|
70
|
+
Requires-Dist: pytest==9.0.3; extra == 'dev'
|
|
71
|
+
Requires-Dist: ruff==0.15.12; extra == 'dev'
|
|
72
|
+
Description-Content-Type: text/markdown
|
|
73
|
+
|
|
74
|
+
# Kolega Code
|
|
75
|
+
|
|
76
|
+
**An AI coding agent that runs in your terminal — local-first, model-agnostic, plan-then-build.**
|
|
77
|
+
|
|
78
|
+
[](https://pypi.org/project/kolega-code/)
|
|
79
|
+
[](https://pypi.org/project/kolega-code/)
|
|
80
|
+
[](LICENSE)
|
|
81
|
+
[](https://github.com/kolega-ai/kolega-code/actions/workflows/ci.yml)
|
|
82
|
+
[](https://kolega-ai.github.io/kolega-code/)
|
|
83
|
+
|
|
84
|
+
Point Kolega Code at a project directory and it opens an interactive UI where you talk to an
|
|
85
|
+
agent that can read and edit your code, run shell commands, search the codebase, browse the
|
|
86
|
+
web, and dispatch specialized sub-agents to get work done.
|
|
87
|
+
|
|
88
|
+
It's **local-first**: the agent operates on your actual filesystem and terminal, and your
|
|
89
|
+
sessions, settings, and API keys stay on your own machine.
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+
## Why Kolega Code
|
|
94
|
+
|
|
95
|
+
- **Plans before it builds.** A read-only **Plan mode** produces a reviewable plan and a
|
|
96
|
+
shared task list before anything changes; **Build mode** implements it. Toggle with `Shift+Tab`.
|
|
97
|
+
- **Orchestrates many agents.** For larger jobs, the main agent dispatches specialized
|
|
98
|
+
sub-agents (investigation, browser, coding, general) and can fan them out in parallel for
|
|
99
|
+
broad audits, large migrations, or implementing a plan's independent parts at once.
|
|
100
|
+
- **Local-first by design.** It works on your real files and terminal; sessions, settings,
|
|
101
|
+
and credentials live on your machine, not in someone else's cloud.
|
|
102
|
+
- **Bring your own model.** Talks to a range of providers and lets you assign different models
|
|
103
|
+
to different roles.
|
|
104
|
+
|
|
105
|
+
## What it does
|
|
106
|
+
|
|
107
|
+
- **Reads and edits your code.** Opens files, searches across the codebase, creates new files,
|
|
108
|
+
and applies precise edits.
|
|
109
|
+
- **Runs commands.** Executes shell commands and watches their output in a dedicated terminal view.
|
|
110
|
+
- **Plans before it builds.** Plan mode investigates and proposes; Build mode executes.
|
|
111
|
+
- **Searches and browses the web.** The agent can search for relevant pages, fetch URLs
|
|
112
|
+
directly, or use the built-in browser agent (powered by Playwright) when a task needs
|
|
113
|
+
site interaction.
|
|
114
|
+
- **Dispatches sub-agents.** Hands work off to specialized agents and tracks their activity live.
|
|
115
|
+
- **Orchestrates workflows.** With [gigacode](https://kolega-ai.github.io/kolega-code/gigacode/),
|
|
116
|
+
it fans out many sub-agents in parallel.
|
|
117
|
+
- **Works non-interactively too.** Run a single prompt with `kolega-code ask`, get JSON output,
|
|
118
|
+
and save or resume sessions.
|
|
119
|
+
|
|
120
|
+
## Quick start
|
|
121
|
+
|
|
122
|
+
**1. Install** with the script:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Or with [uv](https://docs.astral.sh/uv/) (or `pip`):
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
uv tool install kolega-code
|
|
132
|
+
# or: pip install kolega-code
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Verify the install:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
kolega-code --version
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**2. Start a session** in your project:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
kolega-code .
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**3. Add a provider key.** Open the **Settings** tab to pick a provider and model and save your
|
|
148
|
+
API key. Then press `Shift+Tab` anytime to switch between **Plan** and **Build** mode.
|
|
149
|
+
|
|
150
|
+
Resume a previous conversation:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
kolega-code . --resume # latest session
|
|
154
|
+
kolega-code . --resume <id> # a specific thread or session
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Two ways to use it
|
|
158
|
+
|
|
159
|
+
| Mode | Command | Best for |
|
|
160
|
+
| --- | --- | --- |
|
|
161
|
+
| **Interactive TUI** | `kolega-code .` | Day-to-day development, exploration, pair-programming |
|
|
162
|
+
| **One-shot** | `kolega-code ask "…"` | Scripting, automation, quick questions, CI |
|
|
163
|
+
|
|
164
|
+
There are also helper commands for managing sessions and checking your setup:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
kolega-code ask "summarize this repository" --project .
|
|
168
|
+
kolega-code sessions list --project .
|
|
169
|
+
kolega-code doctor --project .
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Bring your own model
|
|
173
|
+
|
|
174
|
+
Kolega Code talks to a range of LLM providers — including Anthropic, OpenAI, Google, Moonshot,
|
|
175
|
+
and DeepSeek — and lets you assign **different models to different roles**: a strong
|
|
176
|
+
long-context model for coding, a fast cheap model for small utility calls, and one for extended
|
|
177
|
+
"thinking". See [Providers & Models](https://kolega-ai.github.io/kolega-code/configuration/providers-and-models/).
|
|
178
|
+
|
|
179
|
+
## Configuration
|
|
180
|
+
|
|
181
|
+
Set your provider, model, and API keys from the **Settings** tab in the UI, or via environment
|
|
182
|
+
variables and flags for non-interactive use:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
export KOLEGA_CODE_PROVIDER=deepseek
|
|
186
|
+
export DEEPSEEK_API_KEY=...
|
|
187
|
+
kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
API key variables only provide credentials — pick a provider/model explicitly or save one in
|
|
191
|
+
Settings. Local session state lives under your platform's state directory unless
|
|
192
|
+
`KOLEGA_CODE_STATE_DIR` is set. See the
|
|
193
|
+
[Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
|
|
194
|
+
for the full story.
|
|
195
|
+
|
|
196
|
+
The `web_search` tool uses DuckDuckGo by default without a key. To choose another backend,
|
|
197
|
+
set it in **Settings** or export `KOLEGA_CODE_WEB_SEARCH_BACKEND` as `firecrawl`, `tavily`,
|
|
198
|
+
or `searxng`; use `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, or `SEARXNG_BASE_URL` as needed.
|
|
199
|
+
|
|
200
|
+
## Requirements
|
|
201
|
+
|
|
202
|
+
- **Python 3.11+**
|
|
203
|
+
- An **API key** for at least one supported provider
|
|
204
|
+
- A terminal that supports a modern TUI (most do)
|
|
205
|
+
|
|
206
|
+
## Documentation
|
|
207
|
+
|
|
208
|
+
Full documentation lives at **[kolega-ai.github.io/kolega-code](https://kolega-ai.github.io/kolega-code/)**:
|
|
209
|
+
|
|
210
|
+
- [Quick Start](https://kolega-ai.github.io/kolega-code/getting-started/quick-start/)
|
|
211
|
+
- [CLI overview](https://kolega-ai.github.io/kolega-code/cli/overview/)
|
|
212
|
+
- [How it works & concepts](https://kolega-ai.github.io/kolega-code/concepts/how-it-works/)
|
|
213
|
+
- [Configuration](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
|
|
214
|
+
|
|
215
|
+
## Contributing
|
|
216
|
+
|
|
217
|
+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup, running the
|
|
218
|
+
test suite, and building the docs site. Please report security issues privately per
|
|
219
|
+
[SECURITY.md](SECURITY.md).
|
|
220
|
+
|
|
221
|
+
## License
|
|
222
|
+
|
|
223
|
+
Released under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Kolega Code
|
|
2
|
+
|
|
3
|
+
**An AI coding agent that runs in your terminal — local-first, model-agnostic, plan-then-build.**
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/kolega-code/)
|
|
6
|
+
[](https://pypi.org/project/kolega-code/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://github.com/kolega-ai/kolega-code/actions/workflows/ci.yml)
|
|
9
|
+
[](https://kolega-ai.github.io/kolega-code/)
|
|
10
|
+
|
|
11
|
+
Point Kolega Code at a project directory and it opens an interactive UI where you talk to an
|
|
12
|
+
agent that can read and edit your code, run shell commands, search the codebase, browse the
|
|
13
|
+
web, and dispatch specialized sub-agents to get work done.
|
|
14
|
+
|
|
15
|
+
It's **local-first**: the agent operates on your actual filesystem and terminal, and your
|
|
16
|
+
sessions, settings, and API keys stay on your own machine.
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
## Why Kolega Code
|
|
21
|
+
|
|
22
|
+
- **Plans before it builds.** A read-only **Plan mode** produces a reviewable plan and a
|
|
23
|
+
shared task list before anything changes; **Build mode** implements it. Toggle with `Shift+Tab`.
|
|
24
|
+
- **Orchestrates many agents.** For larger jobs, the main agent dispatches specialized
|
|
25
|
+
sub-agents (investigation, browser, coding, general) and can fan them out in parallel for
|
|
26
|
+
broad audits, large migrations, or implementing a plan's independent parts at once.
|
|
27
|
+
- **Local-first by design.** It works on your real files and terminal; sessions, settings,
|
|
28
|
+
and credentials live on your machine, not in someone else's cloud.
|
|
29
|
+
- **Bring your own model.** Talks to a range of providers and lets you assign different models
|
|
30
|
+
to different roles.
|
|
31
|
+
|
|
32
|
+
## What it does
|
|
33
|
+
|
|
34
|
+
- **Reads and edits your code.** Opens files, searches across the codebase, creates new files,
|
|
35
|
+
and applies precise edits.
|
|
36
|
+
- **Runs commands.** Executes shell commands and watches their output in a dedicated terminal view.
|
|
37
|
+
- **Plans before it builds.** Plan mode investigates and proposes; Build mode executes.
|
|
38
|
+
- **Searches and browses the web.** The agent can search for relevant pages, fetch URLs
|
|
39
|
+
directly, or use the built-in browser agent (powered by Playwright) when a task needs
|
|
40
|
+
site interaction.
|
|
41
|
+
- **Dispatches sub-agents.** Hands work off to specialized agents and tracks their activity live.
|
|
42
|
+
- **Orchestrates workflows.** With [gigacode](https://kolega-ai.github.io/kolega-code/gigacode/),
|
|
43
|
+
it fans out many sub-agents in parallel.
|
|
44
|
+
- **Works non-interactively too.** Run a single prompt with `kolega-code ask`, get JSON output,
|
|
45
|
+
and save or resume sessions.
|
|
46
|
+
|
|
47
|
+
## Quick start
|
|
48
|
+
|
|
49
|
+
**1. Install** with the script:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Or with [uv](https://docs.astral.sh/uv/) (or `pip`):
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
uv tool install kolega-code
|
|
59
|
+
# or: pip install kolega-code
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Verify the install:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
kolega-code --version
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**2. Start a session** in your project:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
kolega-code .
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**3. Add a provider key.** Open the **Settings** tab to pick a provider and model and save your
|
|
75
|
+
API key. Then press `Shift+Tab` anytime to switch between **Plan** and **Build** mode.
|
|
76
|
+
|
|
77
|
+
Resume a previous conversation:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
kolega-code . --resume # latest session
|
|
81
|
+
kolega-code . --resume <id> # a specific thread or session
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Two ways to use it
|
|
85
|
+
|
|
86
|
+
| Mode | Command | Best for |
|
|
87
|
+
| --- | --- | --- |
|
|
88
|
+
| **Interactive TUI** | `kolega-code .` | Day-to-day development, exploration, pair-programming |
|
|
89
|
+
| **One-shot** | `kolega-code ask "…"` | Scripting, automation, quick questions, CI |
|
|
90
|
+
|
|
91
|
+
There are also helper commands for managing sessions and checking your setup:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
kolega-code ask "summarize this repository" --project .
|
|
95
|
+
kolega-code sessions list --project .
|
|
96
|
+
kolega-code doctor --project .
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Bring your own model
|
|
100
|
+
|
|
101
|
+
Kolega Code talks to a range of LLM providers — including Anthropic, OpenAI, Google, Moonshot,
|
|
102
|
+
and DeepSeek — and lets you assign **different models to different roles**: a strong
|
|
103
|
+
long-context model for coding, a fast cheap model for small utility calls, and one for extended
|
|
104
|
+
"thinking". See [Providers & Models](https://kolega-ai.github.io/kolega-code/configuration/providers-and-models/).
|
|
105
|
+
|
|
106
|
+
## Configuration
|
|
107
|
+
|
|
108
|
+
Set your provider, model, and API keys from the **Settings** tab in the UI, or via environment
|
|
109
|
+
variables and flags for non-interactive use:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
export KOLEGA_CODE_PROVIDER=deepseek
|
|
113
|
+
export DEEPSEEK_API_KEY=...
|
|
114
|
+
kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
API key variables only provide credentials — pick a provider/model explicitly or save one in
|
|
118
|
+
Settings. Local session state lives under your platform's state directory unless
|
|
119
|
+
`KOLEGA_CODE_STATE_DIR` is set. See the
|
|
120
|
+
[Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
|
|
121
|
+
for the full story.
|
|
122
|
+
|
|
123
|
+
The `web_search` tool uses DuckDuckGo by default without a key. To choose another backend,
|
|
124
|
+
set it in **Settings** or export `KOLEGA_CODE_WEB_SEARCH_BACKEND` as `firecrawl`, `tavily`,
|
|
125
|
+
or `searxng`; use `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, or `SEARXNG_BASE_URL` as needed.
|
|
126
|
+
|
|
127
|
+
## Requirements
|
|
128
|
+
|
|
129
|
+
- **Python 3.11+**
|
|
130
|
+
- An **API key** for at least one supported provider
|
|
131
|
+
- A terminal that supports a modern TUI (most do)
|
|
132
|
+
|
|
133
|
+
## Documentation
|
|
134
|
+
|
|
135
|
+
Full documentation lives at **[kolega-ai.github.io/kolega-code](https://kolega-ai.github.io/kolega-code/)**:
|
|
136
|
+
|
|
137
|
+
- [Quick Start](https://kolega-ai.github.io/kolega-code/getting-started/quick-start/)
|
|
138
|
+
- [CLI overview](https://kolega-ai.github.io/kolega-code/cli/overview/)
|
|
139
|
+
- [How it works & concepts](https://kolega-ai.github.io/kolega-code/concepts/how-it-works/)
|
|
140
|
+
- [Configuration](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
|
|
141
|
+
|
|
142
|
+
## Contributing
|
|
143
|
+
|
|
144
|
+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup, running the
|
|
145
|
+
test suite, and building the docs site. Please report security issues privately per
|
|
146
|
+
[SECURITY.md](SECURITY.md).
|
|
147
|
+
|
|
148
|
+
## License
|
|
149
|
+
|
|
150
|
+
Released under the [MIT License](LICENSE).
|
|
Binary file
|
|
@@ -38,8 +38,14 @@ the [TUI](../../cli/overview/) or [`ask`](../../cli/ask/).
|
|
|
38
38
|
|
|
39
39
|
### Web
|
|
40
40
|
|
|
41
|
+
- `web_search` — search the web for relevant pages and return ranked results.
|
|
41
42
|
- `web_fetch` — fetch and parse a web page without a full browser.
|
|
42
43
|
|
|
44
|
+
Use `web_search` when you do not already know the right URL, then follow up with
|
|
45
|
+
`web_fetch` to read a result in depth. The default backend is keyless DuckDuckGo;
|
|
46
|
+
Firecrawl, Tavily, and self-hosted SearXNG can be selected in Settings or with
|
|
47
|
+
environment variables.
|
|
48
|
+
|
|
43
49
|
### Reasoning & memory
|
|
44
50
|
|
|
45
51
|
- `think_hard` — an extended-reasoning step that uses the
|
|
@@ -57,8 +63,8 @@ and `dispatch_general_agent`.
|
|
|
57
63
|
Tools are gated by mode. In a read-only context — like [Plan mode](../../tui/modes/)
|
|
58
64
|
or an investigation sub-agent — only non-mutating tools are available
|
|
59
65
|
(`list_directory`, `read_entire_file`, `read_file_section`, `search_codebase`,
|
|
60
|
-
`find_files_by_pattern`, `web_fetch`, `think_hard`, and reading
|
|
61
|
-
files and running commands require Build mode's full toolset.
|
|
66
|
+
`find_files_by_pattern`, `web_search`, `web_fetch`, `think_hard`, and reading
|
|
67
|
+
memory). Editing files and running commands require Build mode's full toolset.
|
|
62
68
|
|
|
63
69
|
This separation is what makes Plan mode safe to run against any codebase: the
|
|
64
70
|
planning agent can look but not touch.
|
{kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/configuration/environment-variables.md
RENAMED
|
@@ -67,6 +67,19 @@ provider's default model, or set both provider and model.
|
|
|
67
67
|
|
|
68
68
|
See [Providers & Models](../providers-and-models/) for what each role does.
|
|
69
69
|
|
|
70
|
+
## Per-agent models
|
|
71
|
+
|
|
72
|
+
Give an individual agent its own model. `<ROLE>` is one of `PLANNING`, `BUILDING`,
|
|
73
|
+
`INVESTIGATION`, `GENERAL`, or `BROWSER`. A role with no override inherits the main
|
|
74
|
+
model. These also override anything saved in the Settings tab's **Agent Models**
|
|
75
|
+
section.
|
|
76
|
+
|
|
77
|
+
| Variable | Purpose |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| `KOLEGA_CODE_<ROLE>_PROVIDER` | Provider for that agent (e.g. `KOLEGA_CODE_INVESTIGATION_PROVIDER`) |
|
|
80
|
+
| `KOLEGA_CODE_<ROLE>_MODEL` | Model for that agent |
|
|
81
|
+
| `KOLEGA_CODE_<ROLE>_EFFORT` | Thinking effort for that agent |
|
|
82
|
+
|
|
70
83
|
## State & environment
|
|
71
84
|
|
|
72
85
|
| Variable | Purpose |
|
|
@@ -74,6 +87,18 @@ See [Providers & Models](../providers-and-models/) for what each role does.
|
|
|
74
87
|
| `KOLEGA_CODE_STATE_DIR` | Override where settings and sessions are stored |
|
|
75
88
|
| `KOLEGA_CODE_ENVIRONMENT` | Environment label attached to tracing/metadata (default `development`) |
|
|
76
89
|
|
|
90
|
+
## Web search
|
|
91
|
+
|
|
92
|
+
The `web_search` tool defaults to the keyless DuckDuckGo backend. Set a backend
|
|
93
|
+
explicitly when you want a cloud provider or a self-hosted SearXNG instance.
|
|
94
|
+
|
|
95
|
+
| Variable | Purpose |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| `KOLEGA_CODE_WEB_SEARCH_BACKEND` | Backend for `web_search`: `duckduckgo`, `firecrawl`, `tavily`, or `searxng` |
|
|
98
|
+
| `FIRECRAWL_API_KEY` | Optional Firecrawl key for higher rate limits |
|
|
99
|
+
| `TAVILY_API_KEY` | Tavily API key |
|
|
100
|
+
| `SEARXNG_BASE_URL` | Base URL for a self-hosted SearXNG instance |
|
|
101
|
+
|
|
77
102
|
## Telemetry (Langfuse)
|
|
78
103
|
|
|
79
104
|
Optional [Langfuse](https://langfuse.com/) tracing of LLM usage.
|
|
@@ -100,6 +125,9 @@ KOLEGA_CODE_PROVIDER=moonshot
|
|
|
100
125
|
KOLEGA_CODE_MODEL=kimi-k2.7-code
|
|
101
126
|
KOLEGA_CODE_THINKING_EFFORT=auto
|
|
102
127
|
|
|
128
|
+
# Optional: web search
|
|
129
|
+
KOLEGA_CODE_WEB_SEARCH_BACKEND=duckduckgo
|
|
130
|
+
|
|
103
131
|
# Optional: Langfuse tracing
|
|
104
132
|
LANGFUSE_HOST=https://us.cloud.langfuse.com
|
|
105
133
|
LANGFUSE_PUBLIC_KEY=
|
{kolega_code-0.5.1 → kolega_code-0.7.0}/docs/src/content/docs/configuration/providers-and-models.mdx
RENAMED
|
@@ -102,6 +102,42 @@ kolega-code . \
|
|
|
102
102
|
Or with environment variables — see
|
|
103
103
|
[Environment Variables](../environment-variables/) for the complete list.
|
|
104
104
|
|
|
105
|
+
## Per-agent models
|
|
106
|
+
|
|
107
|
+
The three slots above describe *operational* roles (main, fast, thinking). Separately,
|
|
108
|
+
you can give each **agent** its own model, so a cheap, fast model handles
|
|
109
|
+
investigation while a stronger model does the building. This applies to top-level
|
|
110
|
+
agents and to the sub-agents they dispatch.
|
|
111
|
+
|
|
112
|
+
| Agent role | Key | Runs |
|
|
113
|
+
| --- | --- | --- |
|
|
114
|
+
| **Planning** | `planning` | The plan-mode agent |
|
|
115
|
+
| **Building** | `building` | The main coder agent |
|
|
116
|
+
| **Investigation** | `investigation` | Read-only research/exploration sub-agents |
|
|
117
|
+
| **General** | `general` | General-purpose sub-agents |
|
|
118
|
+
| **Browser** | `browser` | Browser/web sub-agents |
|
|
119
|
+
|
|
120
|
+
Each role **inherits the active (long-context) model** unless you give it an override —
|
|
121
|
+
so with nothing configured, behavior is unchanged.
|
|
122
|
+
|
|
123
|
+
In the **Settings tab**, the **Agent Models** section (below the main Model section)
|
|
124
|
+
has a provider/model/effort group per role. Leave a role on **Default** to inherit;
|
|
125
|
+
pick a provider, model, and thinking effort to override it.
|
|
126
|
+
|
|
127
|
+
Or use environment variables, named `KOLEGA_CODE_<ROLE>_PROVIDER` / `_MODEL` / `_EFFORT`:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Use a fast model for investigation; everything else uses the active model.
|
|
131
|
+
export KOLEGA_CODE_INVESTIGATION_PROVIDER=deepseek
|
|
132
|
+
export KOLEGA_CODE_INVESTIGATION_MODEL=deepseek-v4-flash
|
|
133
|
+
export KOLEGA_CODE_INVESTIGATION_EFFORT=high
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Resolution order for a role (first match wins): **env var → saved Settings → the
|
|
137
|
+
active model**. Each override's provider must have an API key, exactly like the main
|
|
138
|
+
roles. (Inside a `run_workflow` script, an explicit `model=`/`effort=` on an `agent()`
|
|
139
|
+
call still takes precedence over these per-role defaults.)
|
|
140
|
+
|
|
105
141
|
## Thinking effort
|
|
106
142
|
|
|
107
143
|
Thinking effort is model-specific. Kolega Code validates the selected value
|
|
@@ -21,12 +21,24 @@ the TUI:
|
|
|
21
21
|
|
|
22
22
|
When you switch models, the thinking effort resets to the new model's default.
|
|
23
23
|
|
|
24
|
-
A saved selection is
|
|
24
|
+
A saved selection is the default for **all** agent model roles. Existing environment
|
|
25
25
|
variables and `--provider` / `--model` flags continue to override it — see
|
|
26
26
|
[Providers & Models](../providers-and-models/) for resolution order.
|
|
27
27
|
API key environment variables are credentials only; they do not choose the active
|
|
28
28
|
provider or model.
|
|
29
29
|
|
|
30
|
+
The **Agent Models** section beneath the main Model section lets you give individual
|
|
31
|
+
agents (planning, building, investigation, general, browser) their own provider,
|
|
32
|
+
model, and effort. Leave a role on **Default** to inherit the active model. See
|
|
33
|
+
[Per-agent models](../providers-and-models/#per-agent-models).
|
|
34
|
+
|
|
35
|
+
The **Web Search** section configures the `web_search` tool. DuckDuckGo is the
|
|
36
|
+
default and needs no key. Firecrawl can also run without a key, with an optional
|
|
37
|
+
key for higher rate limits. Tavily requires a key, and SearXNG requires the base
|
|
38
|
+
URL of your self-hosted instance. The same settings can be supplied with
|
|
39
|
+
[`KOLEGA_CODE_WEB_SEARCH_BACKEND`, `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, and
|
|
40
|
+
`SEARXNG_BASE_URL`](../environment-variables/#web-search).
|
|
41
|
+
|
|
30
42
|
## Where settings live
|
|
31
43
|
|
|
32
44
|
Settings are stored as JSON in your platform's state directory, in a file named
|
|
@@ -45,16 +57,33 @@ The file looks like this:
|
|
|
45
57
|
|
|
46
58
|
```json
|
|
47
59
|
{
|
|
48
|
-
"schema_version":
|
|
60
|
+
"schema_version": 3,
|
|
49
61
|
"active_provider": "moonshot",
|
|
50
62
|
"active_model": "kimi-k2.7-code",
|
|
51
63
|
"active_thinking_effort": "auto",
|
|
52
64
|
"api_keys": {
|
|
53
|
-
"moonshot": "sk-..."
|
|
54
|
-
|
|
65
|
+
"moonshot": "sk-...",
|
|
66
|
+
"deepseek": "sk-...",
|
|
67
|
+
"tavily": "tvly-..."
|
|
68
|
+
},
|
|
69
|
+
"agent_models": {
|
|
70
|
+
"investigation": {
|
|
71
|
+
"provider": "deepseek",
|
|
72
|
+
"model": "deepseek-v4-flash",
|
|
73
|
+
"thinking_effort": "high"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"web_search_backend": "tavily",
|
|
77
|
+
"web_search_base_url": null
|
|
55
78
|
}
|
|
56
79
|
```
|
|
57
80
|
|
|
81
|
+
`agent_models` holds per-agent overrides keyed by role (`planning`, `building`,
|
|
82
|
+
`investigation`, `general`, `browser`); a role that is absent inherits the active
|
|
83
|
+
model. The field is optional and older `schema_version` files load unchanged.
|
|
84
|
+
Cloud web-search keys are stored in `api_keys` under their backend names
|
|
85
|
+
(`firecrawl` or `tavily`); `web_search_base_url` is used by SearXNG.
|
|
86
|
+
|
|
58
87
|
<Aside type="caution" title="Keys are stored in plaintext">
|
|
59
88
|
API keys are written to `settings.json` in plaintext, but the file is created with
|
|
60
89
|
`0600` permissions (readable and writable only by your user). If you'd rather not
|
|
@@ -66,7 +95,7 @@ store keys on disk at all, supply them via
|
|
|
66
95
|
|
|
67
96
|
<FileTree>
|
|
68
97
|
- kolega-code/
|
|
69
|
-
- settings.json Provider, model, thinking effort, and API keys (0600)
|
|
98
|
+
- settings.json Provider, model, web search, thinking effort, and API keys (0600)
|
|
70
99
|
- sessions/
|
|
71
100
|
- <session-id>.json One file per saved session
|
|
72
101
|
</FileTree>
|
|
@@ -19,8 +19,9 @@ and your sessions, settings, and API keys are stored on your own machine.
|
|
|
19
19
|
dedicated terminal view in the UI.
|
|
20
20
|
- **Plans before it builds.** A read-only **Plan mode** produces a reviewable plan
|
|
21
21
|
and a shared task list; **Build mode** implements it.
|
|
22
|
-
- **
|
|
23
|
-
|
|
22
|
+
- **Searches and browses the web.** The agent can search for relevant pages,
|
|
23
|
+
fetch URLs directly, or use the built-in browser agent (powered by Playwright)
|
|
24
|
+
when a task needs site interaction.
|
|
24
25
|
- **Dispatches sub-agents.** For larger tasks, the main agent can hand off to
|
|
25
26
|
specialized agents (investigation, browser, coding, general) and track their
|
|
26
27
|
activity live.
|