kolega-code 0.1.0__tar.gz → 0.3.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.1.0 → kolega_code-0.3.0}/.env.example +4 -0
- kolega_code-0.3.0/.github/workflows/ci.yml +46 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/.github/workflows/docs.yml +10 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/PKG-INFO +14 -6
- {kolega_code-0.1.0 → kolega_code-0.3.0}/README.md +12 -5
- {kolega_code-0.1.0 → kolega_code-0.3.0}/RELEASING.md +6 -6
- {kolega_code-0.1.0 → kolega_code-0.3.0}/conftest.py +3 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/package-lock.json +107 -564
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/package.json +3 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/cli/ask.md +2 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/cli/doctor.md +11 -6
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/cli/overview.md +4 -4
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/concepts/how-it-works.md +3 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/configuration/environment-variables.md +17 -5
- kolega_code-0.3.0/docs/src/content/docs/configuration/providers-and-models.mdx +129 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +11 -5
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/getting-started/installation.mdx +11 -4
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/getting-started/introduction.md +2 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/getting-started/quick-start.mdx +5 -4
- kolega_code-0.3.0/docs/src/content/docs/index.mdx +52 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/tui/composer.md +1 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/tui/interface.md +2 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/tui/sessions-and-resume.md +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/tui/slash-commands.md +10 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/styles/brand.css +58 -23
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/baseagent.py +38 -32
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/coder.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/generalagent.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/planningagent.py +11 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_provider.py +17 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/agents/browser.j2 +18 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/agents/coder_cli_mode.j2 +13 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/agents/general.j2 +17 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/agents/investigation.j2 +18 -3
- kolega_code-0.3.0/kolega_code/agent/prompt_templates/common/kolega_md_instructions.md +15 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompts.py +0 -38
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_anthropic_token_counting.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_client.py +7 -10
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_dashscope_mapping.py +4 -4
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_error_boundary.py +7 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_exceptions.py +50 -21
- kolega_code-0.3.0/kolega_code/agent/tests/llm/test_google_thought_signature.py +78 -0
- kolega_code-0.3.0/kolega_code/agent/tests/llm/test_google_tool_signature_live.py +110 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_instrumented_client_integration.py +20 -23
- kolega_code-0.3.0/kolega_code/agent/tests/llm/test_live_providers.py +137 -0
- kolega_code-0.3.0/kolega_code/agent/tests/llm/test_model_specs.py +31 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_openai_token_counting.py +0 -1
- kolega_code-0.3.0/kolega_code/agent/tests/llm/test_thinking_effort.py +146 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_tool_execution_ids.py +19 -9
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_base_agent.py +98 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_coder_attachments.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_coder_prompt_extensions.py +4 -4
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_duplicate_tool_results.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_general_agent.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_parallel_tool_calls.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_planning_agent.py +1 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_prompt_provider.py +22 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_tools.py +138 -15
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_agent_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_base_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_create_file_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_glob_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_glob_tool_sandbox_parity.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_read_file_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_replace_entire_file_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_replace_lines_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_search_codebase_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_terminal_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_think_hard_integration.py +2 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_think_hard_streaming.py +1 -2
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_web_fetch_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/memory_tool.py +17 -15
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/think_hard_tool.py +2 -12
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tools.py +19 -57
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/app.py +579 -67
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/config.py +60 -46
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/main.py +75 -12
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/messages.py +17 -4
- kolega_code-0.3.0/kolega_code/cli/provider_registry.py +218 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/settings.py +7 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/slash_commands.py +3 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_app.py +984 -72
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_cli_config.py +86 -25
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_main.py +249 -8
- kolega_code-0.3.0/kolega_code/cli/tests/test_settings.py +116 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_slash_commands.py +3 -0
- kolega_code-0.3.0/kolega_code/cli/tests/test_updater.py +87 -0
- kolega_code-0.3.0/kolega_code/cli/updater.py +102 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/config.py +14 -12
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/client.py +18 -42
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/exceptions.py +138 -19
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/instrumented_client.py +3 -3
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/models.py +91 -51
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/providers/anthropic.py +18 -17
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/providers/base.py +2 -6
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/providers/google.py +28 -9
- kolega_code-0.3.0/kolega_code/llm/providers/models.py +18 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/providers/openai.py +26 -6
- kolega_code-0.3.0/kolega_code/llm/specs.py +336 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/tools/__init__.py +7 -1
- kolega_code-0.3.0/kolega_code/tools/definitions.py +141 -0
- kolega_code-0.3.0/kolega_code/tools/tests/__init__.py +0 -0
- kolega_code-0.3.0/kolega_code/tools/tests/test_definitions.py +114 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/pyproject.toml +2 -1
- kolega_code-0.1.0/scripts/install-kolega-code → kolega_code-0.3.0/scripts/install-kolega-code.sh +1 -1
- {kolega_code-0.1.0 → kolega_code-0.3.0}/uv.lock +55 -53
- kolega_code-0.1.0/docs/src/content/docs/configuration/providers-and-models.mdx +0 -92
- kolega_code-0.1.0/docs/src/content/docs/index.mdx +0 -70
- kolega_code-0.1.0/kolega_code/agent/prompt_templates/common/kolega_md_instructions.md +0 -14
- kolega_code-0.1.0/kolega_code/agent/tests/llm/test_model_specs.py +0 -17
- kolega_code-0.1.0/kolega_code/agent/tool_backend/apply_edit_tool.py +0 -98
- kolega_code-0.1.0/kolega_code/cli/provider_registry.py +0 -96
- kolega_code-0.1.0/kolega_code/cli/tests/test_settings.py +0 -62
- kolega_code-0.1.0/kolega_code/llm/providers/models.py +0 -37
- kolega_code-0.1.0/kolega_code/llm/specs.py +0 -67
- kolega_code-0.1.0/kolega_code/tools/definitions.py +0 -81
- {kolega_code-0.1.0 → kolega_code-0.3.0}/.github/workflows/release.yml +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/.gitignore +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/CONTRIBUTING.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/LICENSE +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/SECURITY.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/.gitignore +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/README.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/astro.config.mjs +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/public/favicon.svg +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/assets/kolega-dark.svg +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/assets/kolega-light.svg +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/cli/sessions.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/concepts/agents.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/concepts/tools.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/skills.mdx +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content/docs/tui/modes.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/src/content.config.ts +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/docs/tsconfig.json +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/common/frontend_guidance.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/template_guidance/expo-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/template_guidance/html-website-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/template_guidance/mern-stack-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/prompt_templates/template_guidance/react-vite-shadcdn-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_billing_openai_cache.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_instrumented_client.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_langfuse_normalization.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens_stream.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/llm/test_openai_message_conversion.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_browser.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_browser_parity.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_file_system.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_sandbox_terminal_input.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_terminal.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_terminal_command_tracking.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/services/test_terminal_state_serializer.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_agent_tools_inventory.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_commands.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_empty_message_handling.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_html.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/test_tool_registry.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_browser_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_build_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_list_directory_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tests/tool_backend/test_search_and_replace_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/apply_patch_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/create_file_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/session_store.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_connection.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_file_index.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_mentions.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_session_store.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/tests/test_skills.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/events.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/services/base.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.3.0}/run_tests.sh +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main]
|
|
6
|
+
types: [opened, synchronize, reopened, ready_for_review]
|
|
7
|
+
push:
|
|
8
|
+
branches: [main]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
tests:
|
|
20
|
+
name: Python ${{ matrix.python-version }}
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
strategy:
|
|
23
|
+
fail-fast: false
|
|
24
|
+
matrix:
|
|
25
|
+
python-version: ["3.11", "3.12"]
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
|
|
31
|
+
- name: Setup Python
|
|
32
|
+
uses: actions/setup-python@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python-version }}
|
|
35
|
+
|
|
36
|
+
- name: Setup uv
|
|
37
|
+
uses: astral-sh/setup-uv@v5
|
|
38
|
+
with:
|
|
39
|
+
enable-cache: true
|
|
40
|
+
cache-dependency-glob: uv.lock
|
|
41
|
+
|
|
42
|
+
- name: Install dependencies
|
|
43
|
+
run: uv sync --extra dev --frozen
|
|
44
|
+
|
|
45
|
+
- name: Run fast tests
|
|
46
|
+
run: uv run pytest -ra --durations=50 --import-mode=importlib -m "not slow"
|
|
@@ -6,13 +6,15 @@ on:
|
|
|
6
6
|
paths:
|
|
7
7
|
- "docs/**"
|
|
8
8
|
- ".github/workflows/docs.yml"
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [main]
|
|
11
|
+
paths:
|
|
12
|
+
- "docs/**"
|
|
13
|
+
- ".github/workflows/docs.yml"
|
|
9
14
|
workflow_dispatch:
|
|
10
15
|
|
|
11
|
-
# Allow this workflow to publish to GitHub Pages.
|
|
12
16
|
permissions:
|
|
13
17
|
contents: read
|
|
14
|
-
pages: write
|
|
15
|
-
id-token: write
|
|
16
18
|
|
|
17
19
|
# Allow one concurrent deployment; don't cancel an in-progress production deploy.
|
|
18
20
|
concurrency:
|
|
@@ -43,13 +45,18 @@ jobs:
|
|
|
43
45
|
run: npm run build
|
|
44
46
|
|
|
45
47
|
- name: Upload Pages artifact
|
|
48
|
+
if: github.event_name != 'pull_request'
|
|
46
49
|
uses: actions/upload-pages-artifact@v3
|
|
47
50
|
with:
|
|
48
51
|
path: docs/dist
|
|
49
52
|
|
|
50
53
|
deploy:
|
|
54
|
+
if: github.event_name != 'pull_request'
|
|
51
55
|
needs: build
|
|
52
56
|
runs-on: ubuntu-latest
|
|
57
|
+
permissions:
|
|
58
|
+
pages: write
|
|
59
|
+
id-token: write
|
|
53
60
|
environment:
|
|
54
61
|
name: github-pages
|
|
55
62
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kolega-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Local-first AI coding agent for the terminal
|
|
5
5
|
Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
|
|
6
6
|
Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
|
|
@@ -49,6 +49,7 @@ Requires-Dist: jinja2==3.1.6
|
|
|
49
49
|
Requires-Dist: langfuse==3.14.5
|
|
50
50
|
Requires-Dist: nest-asyncio==1.6.0
|
|
51
51
|
Requires-Dist: openai==1.109.1
|
|
52
|
+
Requires-Dist: packaging==25.0
|
|
52
53
|
Requires-Dist: pathspec==1.1.1
|
|
53
54
|
Requires-Dist: playwright==1.59.0
|
|
54
55
|
Requires-Dist: psutil==7.2.2
|
|
@@ -78,7 +79,7 @@ The package owns the `kolega_code` import namespace and provides the
|
|
|
78
79
|
Install with the public installer:
|
|
79
80
|
|
|
80
81
|
```bash
|
|
81
|
-
curl -fsSL https://kolega.dev/install-kolega-code | sh
|
|
82
|
+
curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
|
|
82
83
|
```
|
|
83
84
|
|
|
84
85
|
Or install directly from PyPI with uv:
|
|
@@ -96,11 +97,14 @@ kolega-code --version
|
|
|
96
97
|
Upgrade or uninstall:
|
|
97
98
|
|
|
98
99
|
```bash
|
|
99
|
-
|
|
100
|
+
kolega-code update
|
|
100
101
|
uv tool uninstall kolega-code
|
|
101
102
|
```
|
|
102
103
|
|
|
103
|
-
|
|
104
|
+
Running the installer again also updates an existing install to the latest
|
|
105
|
+
released version.
|
|
106
|
+
|
|
107
|
+
Run the Textual UI and open the Settings tab to pick any provider and model from the catalog, choose the model's thinking effort, and save your API key:
|
|
104
108
|
|
|
105
109
|
```bash
|
|
106
110
|
kolega-code .
|
|
@@ -115,16 +119,20 @@ kolega-code . --resume
|
|
|
115
119
|
kolega-code . --resume <thread-or-session-id>
|
|
116
120
|
```
|
|
117
121
|
|
|
118
|
-
You can also
|
|
122
|
+
You can also use env/flag based configuration for non-UI commands. API key
|
|
123
|
+
variables provide credentials only; set a provider/model explicitly or save one
|
|
124
|
+
in the Settings UI:
|
|
119
125
|
|
|
120
126
|
```bash
|
|
127
|
+
export KOLEGA_CODE_PROVIDER=deepseek
|
|
128
|
+
export DEEPSEEK_API_KEY=...
|
|
121
129
|
kolega-code ask "summarize this repository" --project .
|
|
122
130
|
kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
|
|
123
131
|
kolega-code sessions list --project .
|
|
124
132
|
kolega-code doctor --project .
|
|
125
133
|
```
|
|
126
134
|
|
|
127
|
-
The Settings UI
|
|
135
|
+
The Settings UI exposes every model in the catalog (`kolega_code/llm/specs.py`) across all supported providers — the provider and model dropdowns are derived from that catalog, so adding a model there makes it selectable in the UI automatically. A saved UI selection is used for all agent model roles, and switching models resets thinking effort to that model's default. API keys are stored in the local CLI settings file with restrictive permissions. Existing environment and model/provider flag overrides continue to work, but API key variables alone never select a provider or model. Local session state is stored under the platform state directory unless `KOLEGA_CODE_STATE_DIR` is set.
|
|
128
136
|
|
|
129
137
|
## From source
|
|
130
138
|
|
|
@@ -10,7 +10,7 @@ The package owns the `kolega_code` import namespace and provides the
|
|
|
10
10
|
Install with the public installer:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
curl -fsSL https://kolega.dev/install-kolega-code | sh
|
|
13
|
+
curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
Or install directly from PyPI with uv:
|
|
@@ -28,11 +28,14 @@ kolega-code --version
|
|
|
28
28
|
Upgrade or uninstall:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
|
|
31
|
+
kolega-code update
|
|
32
32
|
uv tool uninstall kolega-code
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Running the installer again also updates an existing install to the latest
|
|
36
|
+
released version.
|
|
37
|
+
|
|
38
|
+
Run the Textual UI and open the Settings tab to pick any provider and model from the catalog, choose the model's thinking effort, and save your API key:
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
41
|
kolega-code .
|
|
@@ -47,16 +50,20 @@ kolega-code . --resume
|
|
|
47
50
|
kolega-code . --resume <thread-or-session-id>
|
|
48
51
|
```
|
|
49
52
|
|
|
50
|
-
You can also
|
|
53
|
+
You can also use env/flag based configuration for non-UI commands. API key
|
|
54
|
+
variables provide credentials only; set a provider/model explicitly or save one
|
|
55
|
+
in the Settings UI:
|
|
51
56
|
|
|
52
57
|
```bash
|
|
58
|
+
export KOLEGA_CODE_PROVIDER=deepseek
|
|
59
|
+
export DEEPSEEK_API_KEY=...
|
|
53
60
|
kolega-code ask "summarize this repository" --project .
|
|
54
61
|
kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
|
|
55
62
|
kolega-code sessions list --project .
|
|
56
63
|
kolega-code doctor --project .
|
|
57
64
|
```
|
|
58
65
|
|
|
59
|
-
The Settings UI
|
|
66
|
+
The Settings UI exposes every model in the catalog (`kolega_code/llm/specs.py`) across all supported providers — the provider and model dropdowns are derived from that catalog, so adding a model there makes it selectable in the UI automatically. A saved UI selection is used for all agent model roles, and switching models resets thinking effort to that model's default. API keys are stored in the local CLI settings file with restrictive permissions. Existing environment and model/provider flag overrides continue to work, but API key variables alone never select a provider or model. Local session state is stored under the platform state directory unless `KOLEGA_CODE_STATE_DIR` is set.
|
|
60
67
|
|
|
61
68
|
## From source
|
|
62
69
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Releasing Kolega Code
|
|
2
2
|
|
|
3
3
|
This project publishes the `kolega-code` package to PyPI and serves the public
|
|
4
|
-
installer from `https://kolega.dev/install-kolega-code`.
|
|
4
|
+
installer from `https://kolega.dev/install-kolega-code.sh`.
|
|
5
5
|
|
|
6
6
|
## First PyPI release
|
|
7
7
|
|
|
@@ -29,8 +29,8 @@ the organization request.
|
|
|
29
29
|
4. Create and push a matching tag:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
git tag v0.
|
|
33
|
-
git push origin v0.
|
|
32
|
+
git tag v0.3.0
|
|
33
|
+
git push origin v0.3.0
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
5. Approve the `pypi` environment deployment in GitHub Actions.
|
|
@@ -47,19 +47,19 @@ the organization request.
|
|
|
47
47
|
The canonical installer source is tracked at:
|
|
48
48
|
|
|
49
49
|
```text
|
|
50
|
-
scripts/install-kolega-code
|
|
50
|
+
scripts/install-kolega-code.sh
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
The `kolega.dev` site repo should publish that file verbatim at:
|
|
54
54
|
|
|
55
55
|
```text
|
|
56
|
-
https://kolega.dev/install-kolega-code
|
|
56
|
+
https://kolega.dev/install-kolega-code.sh
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
After updating the site, verify:
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
curl -fsSL https://kolega.dev/install-kolega-code | sh
|
|
62
|
+
curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
## Transfer to the PyPI organization
|
|
@@ -17,6 +17,7 @@ CLI_CONFIG_ENV_KEYS = {
|
|
|
17
17
|
"KOLEGA_CODE_EDIT_MODEL",
|
|
18
18
|
"KOLEGA_CODE_THINKING_PROVIDER",
|
|
19
19
|
"KOLEGA_CODE_THINKING_MODEL",
|
|
20
|
+
"KOLEGA_CODE_THINKING_EFFORT",
|
|
20
21
|
"KOLEGA_CODE_THINKING_TOKENS",
|
|
21
22
|
"KOLEGA_CODE_ENVIRONMENT",
|
|
22
23
|
}
|
|
@@ -28,7 +29,8 @@ def pytest_configure() -> None:
|
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
@pytest.fixture
|
|
31
|
-
def isolated_cli_env(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
32
|
+
def isolated_cli_env(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:
|
|
32
33
|
"""Remove process CLI config so unit tests don't depend on a developer .env."""
|
|
33
34
|
for key in {*API_KEY_ENV.values(), *CLI_CONFIG_ENV_KEYS}:
|
|
34
35
|
monkeypatch.delenv(key, raising=False)
|
|
36
|
+
monkeypatch.setenv("KOLEGA_CODE_STATE_DIR", str(tmp_path / "state"))
|