kolega-code 0.1.0__tar.gz → 0.2.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.2.0}/.env.example +2 -0
- kolega_code-0.2.0/.github/workflows/ci.yml +46 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/.github/workflows/docs.yml +10 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/PKG-INFO +9 -5
- {kolega_code-0.1.0 → kolega_code-0.2.0}/README.md +8 -4
- {kolega_code-0.1.0 → kolega_code-0.2.0}/RELEASING.md +6 -6
- {kolega_code-0.1.0 → kolega_code-0.2.0}/conftest.py +3 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/package-lock.json +107 -564
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/package.json +3 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/ask.md +2 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/doctor.md +8 -6
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/overview.md +1 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/concepts/how-it-works.md +3 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/configuration/environment-variables.md +10 -4
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/configuration/providers-and-models.mdx +31 -14
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +11 -5
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/getting-started/installation.mdx +2 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/getting-started/introduction.md +2 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/getting-started/quick-start.mdx +5 -4
- kolega_code-0.2.0/docs/src/content/docs/index.mdx +52 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/composer.md +1 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/interface.md +2 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/slash-commands.md +8 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/styles/brand.css +58 -23
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/baseagent.py +38 -32
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/coder.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/generalagent.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/planningagent.py +11 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_provider.py +17 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/browser.j2 +18 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/coder_cli_mode.j2 +13 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/general.j2 +17 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/investigation.j2 +18 -3
- kolega_code-0.2.0/kolega_code/agent/prompt_templates/common/kolega_md_instructions.md +15 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompts.py +0 -38
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_anthropic_token_counting.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_client.py +7 -10
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_dashscope_mapping.py +4 -4
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_error_boundary.py +7 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_exceptions.py +50 -21
- kolega_code-0.2.0/kolega_code/agent/tests/llm/test_google_thought_signature.py +78 -0
- kolega_code-0.2.0/kolega_code/agent/tests/llm/test_google_tool_signature_live.py +110 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_instrumented_client_integration.py +20 -23
- kolega_code-0.2.0/kolega_code/agent/tests/llm/test_live_providers.py +137 -0
- kolega_code-0.2.0/kolega_code/agent/tests/llm/test_model_specs.py +31 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_token_counting.py +0 -1
- kolega_code-0.2.0/kolega_code/agent/tests/llm/test_thinking_effort.py +102 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_tool_execution_ids.py +19 -9
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_base_agent.py +98 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_coder_attachments.py +0 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_coder_prompt_extensions.py +4 -4
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_duplicate_tool_results.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_general_agent.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_parallel_tool_calls.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_planning_agent.py +1 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_prompt_provider.py +22 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_tools.py +138 -15
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_agent_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_base_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_create_file_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_glob_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_glob_tool_sandbox_parity.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_read_file_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_replace_entire_file_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_replace_lines_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_search_codebase_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_terminal_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_think_hard_integration.py +2 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_think_hard_streaming.py +1 -2
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_web_fetch_tool.py +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/memory_tool.py +17 -15
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/think_hard_tool.py +2 -12
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tools.py +19 -57
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/app.py +532 -65
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/config.py +56 -46
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/main.py +42 -9
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/messages.py +13 -4
- kolega_code-0.2.0/kolega_code/cli/provider_registry.py +209 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/settings.py +7 -3
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/slash_commands.py +1 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_app.py +916 -69
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_cli_config.py +86 -25
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_main.py +164 -2
- kolega_code-0.2.0/kolega_code/cli/tests/test_settings.py +116 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_slash_commands.py +1 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/config.py +8 -12
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/client.py +14 -42
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/exceptions.py +138 -19
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/models.py +91 -51
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/anthropic.py +17 -16
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/base.py +2 -6
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/google.py +28 -9
- kolega_code-0.2.0/kolega_code/llm/providers/models.py +18 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/openai.py +26 -6
- kolega_code-0.2.0/kolega_code/llm/specs.py +291 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/tools/__init__.py +7 -1
- kolega_code-0.2.0/kolega_code/tools/definitions.py +141 -0
- kolega_code-0.2.0/kolega_code/tools/tests/__init__.py +0 -0
- kolega_code-0.2.0/kolega_code/tools/tests/test_definitions.py +114 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/pyproject.toml +1 -1
- {kolega_code-0.1.0 → kolega_code-0.2.0}/uv.lock +2 -2
- 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.2.0}/.github/workflows/release.yml +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/.gitignore +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/CONTRIBUTING.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/LICENSE +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/SECURITY.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/.gitignore +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/README.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/astro.config.mjs +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/public/favicon.svg +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/assets/kolega-dark.svg +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/assets/kolega-light.svg +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/sessions.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/concepts/agents.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/concepts/tools.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/skills.mdx +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/modes.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content.config.ts +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/tsconfig.json +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/common/frontend_guidance.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/expo-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/html-website-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/mern-stack-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/react-vite-shadcdn-template.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_billing_openai_cache.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_instrumented_client.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_langfuse_normalization.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens_stream.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_message_conversion.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_browser.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_browser_parity.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_file_system.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_sandbox_terminal_input.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_terminal.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_terminal_command_tracking.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_terminal_state_serializer.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_agent_tools_inventory.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_commands.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_empty_message_handling.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_html.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_tool_registry.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_browser_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_build_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_list_directory_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_search_and_replace_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/apply_patch_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/create_file_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/session_store.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_connection.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_file_index.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_mentions.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_session_store.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_skills.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/events.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/base.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.1.0 → kolega_code-0.2.0}/run_tests.sh +0 -0
- /kolega_code-0.1.0/scripts/install-kolega-code → /kolega_code-0.2.0/scripts/install-kolega-code.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.2.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/
|
|
@@ -78,7 +78,7 @@ The package owns the `kolega_code` import namespace and provides the
|
|
|
78
78
|
Install with the public installer:
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
curl -fsSL https://kolega.dev/install-kolega-code | sh
|
|
81
|
+
curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
Or install directly from PyPI with uv:
|
|
@@ -100,7 +100,7 @@ uv tool upgrade kolega-code
|
|
|
100
100
|
uv tool uninstall kolega-code
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
Run the Textual UI and open the Settings tab to
|
|
103
|
+
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
104
|
|
|
105
105
|
```bash
|
|
106
106
|
kolega-code .
|
|
@@ -115,16 +115,20 @@ kolega-code . --resume
|
|
|
115
115
|
kolega-code . --resume <thread-or-session-id>
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
You can also
|
|
118
|
+
You can also use env/flag based configuration for non-UI commands. API key
|
|
119
|
+
variables provide credentials only; set a provider/model explicitly or save one
|
|
120
|
+
in the Settings UI:
|
|
119
121
|
|
|
120
122
|
```bash
|
|
123
|
+
export KOLEGA_CODE_PROVIDER=deepseek
|
|
124
|
+
export DEEPSEEK_API_KEY=...
|
|
121
125
|
kolega-code ask "summarize this repository" --project .
|
|
122
126
|
kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
|
|
123
127
|
kolega-code sessions list --project .
|
|
124
128
|
kolega-code doctor --project .
|
|
125
129
|
```
|
|
126
130
|
|
|
127
|
-
The Settings UI
|
|
131
|
+
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
132
|
|
|
129
133
|
## From source
|
|
130
134
|
|
|
@@ -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:
|
|
@@ -32,7 +32,7 @@ uv tool upgrade kolega-code
|
|
|
32
32
|
uv tool uninstall kolega-code
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Run the Textual UI and open the Settings tab to
|
|
35
|
+
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
36
|
|
|
37
37
|
```bash
|
|
38
38
|
kolega-code .
|
|
@@ -47,16 +47,20 @@ kolega-code . --resume
|
|
|
47
47
|
kolega-code . --resume <thread-or-session-id>
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
You can also
|
|
50
|
+
You can also use env/flag based configuration for non-UI commands. API key
|
|
51
|
+
variables provide credentials only; set a provider/model explicitly or save one
|
|
52
|
+
in the Settings UI:
|
|
51
53
|
|
|
52
54
|
```bash
|
|
55
|
+
export KOLEGA_CODE_PROVIDER=deepseek
|
|
56
|
+
export DEEPSEEK_API_KEY=...
|
|
53
57
|
kolega-code ask "summarize this repository" --project .
|
|
54
58
|
kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
|
|
55
59
|
kolega-code sessions list --project .
|
|
56
60
|
kolega-code doctor --project .
|
|
57
61
|
```
|
|
58
62
|
|
|
59
|
-
The Settings UI
|
|
63
|
+
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
64
|
|
|
61
65
|
## From source
|
|
62
66
|
|
|
@@ -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.2.0
|
|
33
|
+
git push origin v0.2.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"))
|