kolega-code 0.8.3__tar.gz → 0.8.4__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.8.4/.githooks/pre-commit +4 -0
- kolega_code-0.8.4/.github/ISSUE_TEMPLATE/bug_report.yml +84 -0
- kolega_code-0.8.4/.github/ISSUE_TEMPLATE/config.yml +8 -0
- kolega_code-0.8.4/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
- kolega_code-0.8.4/.github/workflows/ci.yml +131 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/.github/workflows/docs.yml +5 -4
- kolega_code-0.8.4/.github/workflows/release.yml +205 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/.gitignore +3 -0
- kolega_code-0.8.4/.pre-commit-config.yaml +17 -0
- kolega_code-0.8.4/CHANGELOG.md +77 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/CONTRIBUTING.md +42 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/PKG-INFO +20 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/README.md +11 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/RELEASING.md +37 -5
- kolega_code-0.8.4/docs/src/assets/coverage.svg +1 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/tui/composer.md +9 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/tui/slash-commands.md +2 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/__init__.py +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/baseagent.py +2 -5
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/conversation.py +2 -5
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/budget.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/executor.py +61 -10
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/planningagent.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +2 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +4 -4
- kolega_code-0.8.4/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +3 -0
- kolega_code-0.8.4/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +3 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +3 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompts.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/agent_tool.py +1 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/base_tool.py +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/browser_tool.py +3 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/create_file_tool.py +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/glob_tool.py +3 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/list_directory_tool.py +7 -8
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/read_image_tool.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/replace_entire_file_tool.py +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_and_replace_tool.py +2 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/__init__.py +2 -5
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/tavily.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_codebase_tool.py +26 -19
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/terminal_tool.py +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/web_fetch_tool.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/web_search_tool.py +1 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/auth/chatgpt_oauth.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/app.py +155 -38
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/clipboard_image.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/config.py +4 -12
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/messages.py +2 -7
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/session_store.py +5 -5
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/settings.py +2 -14
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/skills.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/slash_commands.py +11 -5
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/agent_runtime.py +11 -4
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/command_handlers.py +11 -17
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/settings_panel.py +3 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/state.py +2 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/styles.tcss +9 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/sub_agent_screen.py +2 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/transcript.py +15 -11
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/widgets.py +111 -10
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/updater.py +1 -4
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/events.py +3 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/client.py +9 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/exceptions.py +10 -31
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/models.py +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/anthropic.py +2 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/openai.py +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/responses_common.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/specs.py +49 -8
- kolega_code-0.8.4/kolega_code/local_state.py +38 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/models/sandbox_terminal_state.py +1 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/permissions.py +4 -4
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/async_filesystem.py +7 -10
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/base.py +3 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/event_loop.py +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/filesystem.py +6 -8
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/local.py +3 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/serializer.py +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/utils.py +17 -13
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/services/browser.py +0 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/services/terminal.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/utils/images.py +2 -6
- {kolega_code-0.8.3 → kolega_code-0.8.4}/pyproject.toml +9 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/run_tests.sh +13 -0
- kolega_code-0.8.4/scripts/check-dev-hooks.sh +18 -0
- kolega_code-0.8.4/scripts/setup-dev.sh +7 -0
- kolega_code-0.8.4/tests/agent/conftest.py +50 -0
- kolega_code-0.8.4/tests/agent/llm/_token_counting_utils.py +71 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_anthropic_token_counting.py +60 -113
- kolega_code-0.8.4/tests/agent/llm/test_billing_openai_cache.py +74 -0
- kolega_code-0.8.4/tests/agent/llm/test_chatgpt_oauth_auth_config.py +86 -0
- kolega_code-0.8.4/tests/agent/llm/test_chatgpt_oauth_conversion.py +200 -0
- kolega_code-0.8.4/tests/agent/llm/test_chatgpt_oauth_provider.py +2 -0
- kolega_code-0.8.4/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +135 -0
- kolega_code-0.8.4/tests/agent/llm/test_chatgpt_oauth_streaming.py +273 -0
- kolega_code-0.8.4/tests/agent/llm/test_client.py +2 -0
- kolega_code-0.8.4/tests/agent/llm/test_client_live.py +338 -0
- kolega_code-0.8.4/tests/agent/llm/test_client_runtime.py +171 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_dashscope_mapping.py +8 -8
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_google_tool_signature_live.py +28 -8
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_instrumented_client.py +2 -151
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_instrumented_client_integration.py +1 -0
- kolega_code-0.8.4/tests/agent/llm/test_instrumented_client_stream.py +165 -0
- kolega_code-0.8.4/tests/agent/llm/test_langfuse_normalization.py +73 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_live_providers.py +3 -1
- kolega_code-0.8.4/tests/agent/llm/test_message_conversion.py +187 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_openai_cached_tokens.py +9 -12
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_openai_cached_tokens_stream.py +9 -12
- kolega_code-0.8.4/tests/agent/llm/test_openai_message_conversion.py +151 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_openai_responses_provider.py +3 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_openai_token_counting.py +30 -82
- kolega_code-0.8.4/tests/agent/llm/test_provider_usage_mapping.py +284 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_thinking_effort.py +10 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/orchestration/test_orchestration.py +3 -16
- kolega_code-0.8.4/tests/agent/services/test_browser.py +2 -0
- kolega_code-0.8.3/tests/agent/services/test_browser.py → kolega_code-0.8.4/tests/agent/services/test_browser_console_logs.py +13 -146
- kolega_code-0.8.4/tests/agent/services/test_browser_content.py +94 -0
- kolega_code-0.8.4/tests/agent/services/test_browser_integration.py +120 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/services/test_browser_parity.py +1 -1
- kolega_code-0.8.4/tests/agent/services/test_file_system.py +2 -0
- kolega_code-0.8.4/tests/agent/services/test_file_system_integration.py +127 -0
- kolega_code-0.8.4/tests/agent/services/test_file_system_path.py +206 -0
- kolega_code-0.8.3/tests/agent/services/test_file_system.py → kolega_code-0.8.4/tests/agent/services/test_local_file_system.py +1 -321
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/services/test_terminal_state_serializer.py +1 -2
- kolega_code-0.8.4/tests/agent/test_base_agent.py +2 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_anthropic_history_validation.py +119 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_compaction.py +215 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_effective_history.py +173 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_history_serialization.py +238 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_prompt_context.py +78 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_role_overrides.py +91 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_runtime.py +205 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_tool_call_repair.py +861 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_tool_call_repair_integration.py +527 -0
- kolega_code-0.8.4/tests/agent/test_base_agent_tool_execution.py +84 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_coder_attachments.py +5 -14
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_compaction_tui_events.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_duplicate_tool_results.py +10 -14
- kolega_code-0.8.3/tests/agent/test_image_compat.py → kolega_code-0.8.4/tests/agent/test_history_adapter_thinking.py +1 -200
- kolega_code-0.8.4/tests/agent/test_history_image_blocks.py +220 -0
- kolega_code-0.8.4/tests/agent/test_image_compat.py +2 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_permissions.py +21 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_planning_agent.py +4 -13
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_read_image_tool.py +3 -9
- kolega_code-0.8.4/tests/agent/test_tool_collection_builtin_dispatch.py +229 -0
- kolega_code-0.8.4/tests/agent/test_tool_collection_config.py +243 -0
- kolega_code-0.8.4/tests/agent/test_tool_collection_extensions.py +161 -0
- kolega_code-0.8.4/tests/agent/test_tool_collection_initialization.py +186 -0
- kolega_code-0.8.4/tests/agent/test_tool_collection_memory.py +193 -0
- kolega_code-0.8.4/tests/agent/test_tools.py +2 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_agent_tool.py +5 -4
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_base_tool.py +4 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_browser_tool.py +1 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_build_tool.py +0 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_create_file_tool.py +4 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_glob_tool.py +4 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +7 -6
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_read_file_tool.py +4 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_replace_entire_file_tool.py +4 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_replace_lines_tool.py +4 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_search_codebase_tool.py +4 -2
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_terminal_tool.py +5 -4
- kolega_code-0.8.4/tests/agent/tool_backend/test_think_hard_streaming.py +2 -0
- kolega_code-0.8.3/tests/agent/tool_backend/test_think_hard_streaming.py → kolega_code-0.8.4/tests/agent/tool_backend/test_think_hard_streaming_content.py +1 -197
- kolega_code-0.8.4/tests/agent/tool_backend/test_think_hard_streaming_errors.py +165 -0
- kolega_code-0.8.4/tests/agent/tool_backend/test_think_hard_streaming_updates.py +238 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_web_fetch_tool.py +82 -62
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_workflow_tool.py +4 -7
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/auth/test_tokens.py +1 -3
- kolega_code-0.8.4/tests/cli/_app_test_utils.py +227 -0
- kolega_code-0.8.4/tests/cli/test_app.py +2 -0
- kolega_code-0.8.4/tests/cli/test_app_agent_wiring.py +190 -0
- kolega_code-0.8.4/tests/cli/test_app_bootstrap_settings.py +798 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_app_compaction_restore.py +5 -11
- kolega_code-0.8.4/tests/cli/test_app_composer_commands.py +1 -0
- kolega_code-0.8.4/tests/cli/test_app_composer_input.py +494 -0
- kolega_code-0.8.4/tests/cli/test_app_conversation_rendering.py +1 -0
- kolega_code-0.8.4/tests/cli/test_app_focus_behavior.py +298 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_app_image_vision_warning.py +4 -12
- kolega_code-0.8.4/tests/cli/test_app_mention_dropdown.py +196 -0
- kolega_code-0.8.4/tests/cli/test_app_misc_commands.py +321 -0
- kolega_code-0.8.4/tests/cli/test_app_model_effort_commands.py +601 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_app_model_switch_vision.py +5 -9
- kolega_code-0.8.4/tests/cli/test_app_modes_planning.py +1 -0
- kolega_code-0.8.4/tests/cli/test_app_navigation_commands.py +251 -0
- kolega_code-0.8.4/tests/cli/test_app_permission_prompts.py +262 -0
- kolega_code-0.8.4/tests/cli/test_app_persistence_history.py +681 -0
- kolega_code-0.8.4/tests/cli/test_app_plan_lifecycle.py +529 -0
- kolega_code-0.8.4/tests/cli/test_app_planning_questions.py +442 -0
- kolega_code-0.8.4/tests/cli/test_app_planning_restore.py +210 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_entries.py +376 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_errors.py +298 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_scroll.py +277 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_selection.py +556 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_status.py +449 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_streaming.py +311 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_terminal_logs.py +456 -0
- kolega_code-0.8.4/tests/cli/test_app_rendering_tools.py +587 -0
- kolega_code-0.8.4/tests/cli/test_app_skill_commands.py +168 -0
- kolega_code-0.8.4/tests/cli/test_app_slash_dropdown.py +166 -0
- kolega_code-0.8.4/tests/cli/test_app_status_modes.py +627 -0
- kolega_code-0.8.4/tests/cli/test_app_sub_agents_workflows.py +761 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_cli_config.py +3 -9
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_clipboard_image.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_main.py +3 -9
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_mentions.py +3 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_session_store.py +19 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_skills.py +3 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_themes.py +2 -1
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_tui_stylesheet.py +3 -9
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_updater.py +9 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/utils/test_images_ascii.py +1 -3
- {kolega_code-0.8.3 → kolega_code-0.8.4}/uv.lock +522 -2
- kolega_code-0.8.3/.github/workflows/ci.yml +0 -46
- kolega_code-0.8.3/.github/workflows/release.yml +0 -121
- kolega_code-0.8.3/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -3
- kolega_code-0.8.3/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -3
- kolega_code-0.8.3/tests/agent/llm/test_billing_openai_cache.py +0 -74
- kolega_code-0.8.3/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -561
- kolega_code-0.8.3/tests/agent/llm/test_client.py +0 -910
- kolega_code-0.8.3/tests/agent/llm/test_langfuse_normalization.py +0 -56
- kolega_code-0.8.3/tests/agent/llm/test_openai_message_conversion.py +0 -140
- kolega_code-0.8.3/tests/agent/test_base_agent.py +0 -2303
- kolega_code-0.8.3/tests/agent/test_tools.py +0 -670
- kolega_code-0.8.3/tests/cli/test_app.py +0 -8772
- {kolega_code-0.8.3 → kolega_code-0.8.4}/.env.example +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/LICENSE +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/SECURITY.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/.gitignore +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/README.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/astro.config.mjs +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/package-lock.json +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/package.json +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/public/favicon.svg +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/assets/demo.gif +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/assets/kolega-dark.svg +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/assets/kolega-light.svg +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/cli/ask.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/cli/doctor.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/cli/overview.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/cli/sessions.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/concepts/agents.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/concepts/how-it-works.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/concepts/tools.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/configuration/environment-variables.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/configuration/providers-and-models.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/getting-started/installation.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/gigacode.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/hooks.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/index.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/skills.mdx +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/tui/interface.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/tui/modes.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/content.config.ts +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/src/styles/brand.css +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/docs/tsconfig.json +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/replace_lines_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/tools.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/main.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/provider_registry.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/prompt_flows.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/cli/tui/status_dashboard.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/config.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/google.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/runtime.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/services/base.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/services/html.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/scripts/install-kolega-code.sh +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/compaction_helpers.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_chatgpt_live.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_error_boundary.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_exceptions.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_google_thought_signature.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_model_specs.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_supports_vision.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/llm/test_tool_execution_ids.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/services/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/services/test_sandbox_terminal_input.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/services/test_terminal.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/services/test_terminal_buffer.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_agent_tools_inventory.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_coder_prompt_extensions.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_commands.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_compaction_integration.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_compaction_persistence.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_compaction_subagent.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_compress_command.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_compression.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_conversation_compaction.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_empty_message_handling.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_event_emitter.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_general_agent.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_gigacode_gating.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_hooks_integration.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_html.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_parallel_tool_calls.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_prompt_provider.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_prompts.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/test_tool_registry.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_edit_preview.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_search_and_replace_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/auth/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/auth/test_chatgpt_oauth.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_connection.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_file_index.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_provider_registry.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_settings.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/cli/test_slash_commands.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/conftest.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/hooks/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/hooks/test_hooks.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/tools/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/tools/test_definitions.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/utils/__init__.py +0 -0
- {kolega_code-0.8.3 → kolega_code-0.8.4}/tests/utils/test_images.py +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a reproducible problem with Kolega Code
|
|
3
|
+
title: "bug: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: summary
|
|
8
|
+
attributes:
|
|
9
|
+
label: Summary
|
|
10
|
+
description: What went wrong?
|
|
11
|
+
placeholder: "Kolega Code ..."
|
|
12
|
+
validations:
|
|
13
|
+
required: true
|
|
14
|
+
|
|
15
|
+
- type: input
|
|
16
|
+
id: version
|
|
17
|
+
attributes:
|
|
18
|
+
label: Kolega Code version
|
|
19
|
+
description: Run `kolega-code --version`.
|
|
20
|
+
placeholder: "kolega-code 0.8.3"
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
|
|
24
|
+
- type: input
|
|
25
|
+
id: os
|
|
26
|
+
attributes:
|
|
27
|
+
label: Operating system
|
|
28
|
+
placeholder: "macOS 15.5, Ubuntu 24.04, Fedora 42, etc."
|
|
29
|
+
validations:
|
|
30
|
+
required: true
|
|
31
|
+
|
|
32
|
+
- type: input
|
|
33
|
+
id: terminal
|
|
34
|
+
attributes:
|
|
35
|
+
label: Terminal
|
|
36
|
+
description: Include terminal app and shell if relevant.
|
|
37
|
+
placeholder: "Ghostty + zsh, Terminal.app + zsh, iTerm2 + fish, GNOME Terminal + bash"
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
|
|
41
|
+
- type: input
|
|
42
|
+
id: install-method
|
|
43
|
+
attributes:
|
|
44
|
+
label: Install method
|
|
45
|
+
placeholder: "install script, uv tool install, pipx, pip"
|
|
46
|
+
validations:
|
|
47
|
+
required: true
|
|
48
|
+
|
|
49
|
+
- type: textarea
|
|
50
|
+
id: repro
|
|
51
|
+
attributes:
|
|
52
|
+
label: Reproduction steps
|
|
53
|
+
description: Keep this as small and specific as possible.
|
|
54
|
+
placeholder: |
|
|
55
|
+
1. Run `kolega-code .`
|
|
56
|
+
2. ...
|
|
57
|
+
3. ...
|
|
58
|
+
validations:
|
|
59
|
+
required: true
|
|
60
|
+
|
|
61
|
+
- type: textarea
|
|
62
|
+
id: expected
|
|
63
|
+
attributes:
|
|
64
|
+
label: Expected behavior
|
|
65
|
+
placeholder: "I expected ..."
|
|
66
|
+
validations:
|
|
67
|
+
required: true
|
|
68
|
+
|
|
69
|
+
- type: textarea
|
|
70
|
+
id: actual
|
|
71
|
+
attributes:
|
|
72
|
+
label: Actual behavior
|
|
73
|
+
placeholder: "Instead ..."
|
|
74
|
+
validations:
|
|
75
|
+
required: true
|
|
76
|
+
|
|
77
|
+
- type: textarea
|
|
78
|
+
id: logs
|
|
79
|
+
attributes:
|
|
80
|
+
label: Logs or screenshots
|
|
81
|
+
description: Paste relevant output. Please remove API keys, tokens, project-private code, and other secrets.
|
|
82
|
+
render: shell
|
|
83
|
+
validations:
|
|
84
|
+
required: false
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Security vulnerability
|
|
4
|
+
url: https://github.com/kolega-ai/kolega-code/security/policy
|
|
5
|
+
about: Please report security issues privately.
|
|
6
|
+
- name: Documentation
|
|
7
|
+
url: https://kolega-ai.github.io/kolega-code/
|
|
8
|
+
about: Check the docs for setup, configuration, and usage guidance.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest an improvement or new capability
|
|
3
|
+
title: "feat: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: problem
|
|
8
|
+
attributes:
|
|
9
|
+
label: Problem
|
|
10
|
+
description: What are you trying to do, and what makes it hard today?
|
|
11
|
+
placeholder: "I want to ..."
|
|
12
|
+
validations:
|
|
13
|
+
required: true
|
|
14
|
+
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: proposal
|
|
17
|
+
attributes:
|
|
18
|
+
label: Proposed solution
|
|
19
|
+
description: What would you like Kolega Code to do?
|
|
20
|
+
placeholder: "It would be useful if ..."
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
|
|
24
|
+
- type: input
|
|
25
|
+
id: os
|
|
26
|
+
attributes:
|
|
27
|
+
label: Operating system
|
|
28
|
+
placeholder: "macOS 15.5, Ubuntu 24.04, Fedora 42, etc."
|
|
29
|
+
validations:
|
|
30
|
+
required: false
|
|
31
|
+
|
|
32
|
+
- type: input
|
|
33
|
+
id: terminal
|
|
34
|
+
attributes:
|
|
35
|
+
label: Terminal
|
|
36
|
+
placeholder: "Ghostty + zsh, Terminal.app + zsh, iTerm2 + fish, GNOME Terminal + bash"
|
|
37
|
+
validations:
|
|
38
|
+
required: false
|
|
39
|
+
|
|
40
|
+
- type: textarea
|
|
41
|
+
id: context
|
|
42
|
+
attributes:
|
|
43
|
+
label: Additional context
|
|
44
|
+
description: Add examples, alternatives considered, screenshots, or links if useful.
|
|
45
|
+
validations:
|
|
46
|
+
required: false
|
|
@@ -0,0 +1,131 @@
|
|
|
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@v5
|
|
30
|
+
|
|
31
|
+
- name: Setup Python
|
|
32
|
+
uses: actions/setup-python@v6
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python-version }}
|
|
35
|
+
|
|
36
|
+
- name: Setup uv
|
|
37
|
+
uses: astral-sh/setup-uv@v7
|
|
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 pre-commit hooks
|
|
46
|
+
run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
47
|
+
|
|
48
|
+
- name: Run fast tests with coverage
|
|
49
|
+
run: ./run_tests.sh --coverage
|
|
50
|
+
|
|
51
|
+
- name: Upload coverage report
|
|
52
|
+
uses: actions/upload-artifact@v6
|
|
53
|
+
with:
|
|
54
|
+
name: coverage-xml-python-${{ matrix.python-version }}
|
|
55
|
+
path: coverage.xml
|
|
56
|
+
if-no-files-found: error
|
|
57
|
+
|
|
58
|
+
coverage-badge:
|
|
59
|
+
name: Update coverage badge
|
|
60
|
+
needs: tests
|
|
61
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
permissions:
|
|
64
|
+
contents: write
|
|
65
|
+
steps:
|
|
66
|
+
- name: Checkout
|
|
67
|
+
uses: actions/checkout@v5
|
|
68
|
+
|
|
69
|
+
- name: Setup Python
|
|
70
|
+
uses: actions/setup-python@v6
|
|
71
|
+
with:
|
|
72
|
+
python-version: "3.11"
|
|
73
|
+
|
|
74
|
+
- name: Setup uv
|
|
75
|
+
uses: astral-sh/setup-uv@v7
|
|
76
|
+
with:
|
|
77
|
+
enable-cache: true
|
|
78
|
+
cache-dependency-glob: uv.lock
|
|
79
|
+
|
|
80
|
+
- name: Install dependencies
|
|
81
|
+
run: uv sync --extra dev --frozen
|
|
82
|
+
|
|
83
|
+
- name: Download Python 3.11 coverage report
|
|
84
|
+
uses: actions/download-artifact@v6
|
|
85
|
+
with:
|
|
86
|
+
name: coverage-xml-python-3.11
|
|
87
|
+
path: coverage-artifact
|
|
88
|
+
|
|
89
|
+
- name: Generate coverage badge
|
|
90
|
+
run: |
|
|
91
|
+
uv run genbadge coverage -i coverage-artifact/coverage.xml -o docs/src/assets/coverage.svg
|
|
92
|
+
python - <<'PY'
|
|
93
|
+
from pathlib import Path
|
|
94
|
+
|
|
95
|
+
badge = Path("docs/src/assets/coverage.svg")
|
|
96
|
+
badge.write_text(badge.read_text().rstrip("\n") + "\n")
|
|
97
|
+
PY
|
|
98
|
+
|
|
99
|
+
- name: Commit coverage badge
|
|
100
|
+
run: |
|
|
101
|
+
if [ -z "$(git status --porcelain -- docs/src/assets/coverage.svg)" ]; then
|
|
102
|
+
echo "Coverage badge is already up to date."
|
|
103
|
+
exit 0
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
git config user.name "github-actions[bot]"
|
|
107
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
108
|
+
git add docs/src/assets/coverage.svg
|
|
109
|
+
git commit -m "chore: update coverage badge [skip ci]"
|
|
110
|
+
git push
|
|
111
|
+
|
|
112
|
+
dependency-audit:
|
|
113
|
+
name: Dependency audit
|
|
114
|
+
runs-on: ubuntu-latest
|
|
115
|
+
steps:
|
|
116
|
+
- name: Checkout
|
|
117
|
+
uses: actions/checkout@v5
|
|
118
|
+
|
|
119
|
+
- name: Setup Python
|
|
120
|
+
uses: actions/setup-python@v6
|
|
121
|
+
with:
|
|
122
|
+
python-version: "3.11"
|
|
123
|
+
|
|
124
|
+
- name: Setup uv
|
|
125
|
+
uses: astral-sh/setup-uv@v7
|
|
126
|
+
with:
|
|
127
|
+
enable-cache: true
|
|
128
|
+
cache-dependency-glob: uv.lock
|
|
129
|
+
|
|
130
|
+
- name: Audit locked dependencies
|
|
131
|
+
run: uv audit --locked
|
|
@@ -29,10 +29,10 @@ jobs:
|
|
|
29
29
|
working-directory: docs
|
|
30
30
|
steps:
|
|
31
31
|
- name: Checkout
|
|
32
|
-
uses: actions/checkout@
|
|
32
|
+
uses: actions/checkout@v5
|
|
33
33
|
|
|
34
34
|
- name: Setup Node
|
|
35
|
-
uses: actions/setup-node@
|
|
35
|
+
uses: actions/setup-node@v5
|
|
36
36
|
with:
|
|
37
37
|
node-version: "22.12.0"
|
|
38
38
|
cache: npm
|
|
@@ -46,9 +46,10 @@ jobs:
|
|
|
46
46
|
|
|
47
47
|
- name: Upload Pages artifact
|
|
48
48
|
if: github.event_name != 'pull_request'
|
|
49
|
-
uses: actions/upload-pages-artifact@
|
|
49
|
+
uses: actions/upload-pages-artifact@v5
|
|
50
50
|
with:
|
|
51
51
|
path: docs/dist
|
|
52
|
+
include-hidden-files: true
|
|
52
53
|
|
|
53
54
|
deploy:
|
|
54
55
|
if: github.event_name != 'pull_request'
|
|
@@ -63,4 +64,4 @@ jobs:
|
|
|
63
64
|
steps:
|
|
64
65
|
- name: Deploy to GitHub Pages
|
|
65
66
|
id: deployment
|
|
66
|
-
uses: actions/deploy-pages@
|
|
67
|
+
uses: actions/deploy-pages@v5
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build:
|
|
13
|
+
name: Build and test package
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
attestations: write
|
|
18
|
+
id-token: write
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout
|
|
21
|
+
uses: actions/checkout@v5
|
|
22
|
+
|
|
23
|
+
- name: Setup Python
|
|
24
|
+
uses: actions/setup-python@v6
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.11"
|
|
27
|
+
|
|
28
|
+
- name: Setup uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
|
+
with:
|
|
31
|
+
enable-cache: true
|
|
32
|
+
cache-dependency-glob: uv.lock
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: uv sync --extra dev --frozen
|
|
36
|
+
|
|
37
|
+
- name: Verify release version metadata
|
|
38
|
+
run: |
|
|
39
|
+
uv run python - <<'PY'
|
|
40
|
+
import ast
|
|
41
|
+
import os
|
|
42
|
+
import sys
|
|
43
|
+
import tomllib
|
|
44
|
+
from pathlib import Path
|
|
45
|
+
|
|
46
|
+
def module_version(path: str) -> str:
|
|
47
|
+
tree = ast.parse(Path(path).read_text(encoding="utf-8"), filename=path)
|
|
48
|
+
for node in tree.body:
|
|
49
|
+
if isinstance(node, ast.Assign):
|
|
50
|
+
for target in node.targets:
|
|
51
|
+
if isinstance(target, ast.Name) and target.id == "__version__":
|
|
52
|
+
if isinstance(node.value, ast.Constant) and isinstance(node.value.value, str):
|
|
53
|
+
return node.value.value
|
|
54
|
+
raise RuntimeError(f"Could not find string __version__ assignment in {path}")
|
|
55
|
+
|
|
56
|
+
tag = os.environ["GITHUB_REF_NAME"]
|
|
57
|
+
with open("pyproject.toml", "rb") as fh:
|
|
58
|
+
version = tomllib.load(fh)["project"]["version"]
|
|
59
|
+
expected_tag = f"v{version}"
|
|
60
|
+
if tag != expected_tag:
|
|
61
|
+
print(f"Release tag {tag!r} does not match pyproject.toml version {version!r}; expected {expected_tag!r}.")
|
|
62
|
+
sys.exit(1)
|
|
63
|
+
|
|
64
|
+
module_versions = {
|
|
65
|
+
"kolega_code/__init__.py": module_version("kolega_code/__init__.py"),
|
|
66
|
+
"kolega_code/agent/__init__.py": module_version("kolega_code/agent/__init__.py"),
|
|
67
|
+
}
|
|
68
|
+
mismatches = {path: value for path, value in module_versions.items() if value != version}
|
|
69
|
+
if mismatches:
|
|
70
|
+
print("Version metadata mismatch:")
|
|
71
|
+
print(f" pyproject.toml: {version}")
|
|
72
|
+
for path, value in mismatches.items():
|
|
73
|
+
print(f" {path}: {value}")
|
|
74
|
+
sys.exit(1)
|
|
75
|
+
PY
|
|
76
|
+
|
|
77
|
+
- name: Run tests
|
|
78
|
+
run: uv run pytest -ra --durations=50 --import-mode=importlib -m "not slow"
|
|
79
|
+
|
|
80
|
+
- name: Build distributions
|
|
81
|
+
run: uv build
|
|
82
|
+
|
|
83
|
+
- name: Check distributions
|
|
84
|
+
run: uv run twine check dist/*
|
|
85
|
+
|
|
86
|
+
- name: Prepare release asset directory
|
|
87
|
+
run: mkdir -p release-assets
|
|
88
|
+
|
|
89
|
+
- name: Generate SBOM
|
|
90
|
+
uses: anchore/sbom-action@v0
|
|
91
|
+
with:
|
|
92
|
+
path: .
|
|
93
|
+
format: spdx-json
|
|
94
|
+
output-file: release-assets/kolega-code-sbom.spdx.json
|
|
95
|
+
upload-artifact: false
|
|
96
|
+
|
|
97
|
+
- name: Attest release artifacts
|
|
98
|
+
uses: actions/attest-build-provenance@v3
|
|
99
|
+
with:
|
|
100
|
+
subject-path: "dist/*"
|
|
101
|
+
|
|
102
|
+
- name: Upload distributions
|
|
103
|
+
uses: actions/upload-artifact@v6
|
|
104
|
+
with:
|
|
105
|
+
name: python-distributions
|
|
106
|
+
path: dist/
|
|
107
|
+
if-no-files-found: error
|
|
108
|
+
|
|
109
|
+
- name: Upload SBOM
|
|
110
|
+
uses: actions/upload-artifact@v6
|
|
111
|
+
with:
|
|
112
|
+
name: release-sbom
|
|
113
|
+
path: release-assets/kolega-code-sbom.spdx.json
|
|
114
|
+
if-no-files-found: error
|
|
115
|
+
|
|
116
|
+
smoke:
|
|
117
|
+
name: Smoke-test artifacts on Python ${{ matrix.python-version }}
|
|
118
|
+
needs: build
|
|
119
|
+
runs-on: ubuntu-latest
|
|
120
|
+
strategy:
|
|
121
|
+
fail-fast: false
|
|
122
|
+
matrix:
|
|
123
|
+
python-version: ["3.11", "3.12"]
|
|
124
|
+
steps:
|
|
125
|
+
- name: Setup Python
|
|
126
|
+
uses: actions/setup-python@v6
|
|
127
|
+
with:
|
|
128
|
+
python-version: ${{ matrix.python-version }}
|
|
129
|
+
|
|
130
|
+
- name: Download distributions
|
|
131
|
+
uses: actions/download-artifact@v7
|
|
132
|
+
with:
|
|
133
|
+
name: python-distributions
|
|
134
|
+
path: dist/
|
|
135
|
+
|
|
136
|
+
- name: Smoke-test wheel
|
|
137
|
+
run: |
|
|
138
|
+
python -m venv /tmp/kolega-code-wheel-smoke
|
|
139
|
+
/tmp/kolega-code-wheel-smoke/bin/python -m pip install --upgrade pip
|
|
140
|
+
/tmp/kolega-code-wheel-smoke/bin/python -m pip install dist/*.whl
|
|
141
|
+
/tmp/kolega-code-wheel-smoke/bin/kolega-code --version
|
|
142
|
+
|
|
143
|
+
- name: Smoke-test sdist
|
|
144
|
+
run: |
|
|
145
|
+
python -m venv /tmp/kolega-code-sdist-smoke
|
|
146
|
+
/tmp/kolega-code-sdist-smoke/bin/python -m pip install --upgrade pip
|
|
147
|
+
/tmp/kolega-code-sdist-smoke/bin/python -m pip install dist/*.tar.gz
|
|
148
|
+
/tmp/kolega-code-sdist-smoke/bin/kolega-code --version
|
|
149
|
+
|
|
150
|
+
publish:
|
|
151
|
+
name: Publish to PyPI
|
|
152
|
+
needs: [build, smoke]
|
|
153
|
+
runs-on: ubuntu-latest
|
|
154
|
+
environment:
|
|
155
|
+
name: pypi
|
|
156
|
+
url: https://pypi.org/p/kolega-code
|
|
157
|
+
permissions:
|
|
158
|
+
contents: read
|
|
159
|
+
id-token: write
|
|
160
|
+
steps:
|
|
161
|
+
- name: Download distributions
|
|
162
|
+
uses: actions/download-artifact@v7
|
|
163
|
+
with:
|
|
164
|
+
name: python-distributions
|
|
165
|
+
path: dist/
|
|
166
|
+
|
|
167
|
+
- name: Publish distributions to PyPI
|
|
168
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
169
|
+
with:
|
|
170
|
+
packages-dir: dist/
|
|
171
|
+
skip-existing: false
|
|
172
|
+
|
|
173
|
+
github-release:
|
|
174
|
+
name: Create GitHub Release
|
|
175
|
+
needs: publish
|
|
176
|
+
runs-on: ubuntu-latest
|
|
177
|
+
permissions:
|
|
178
|
+
contents: write
|
|
179
|
+
env:
|
|
180
|
+
GH_TOKEN: ${{ github.token }}
|
|
181
|
+
steps:
|
|
182
|
+
- name: Create release
|
|
183
|
+
run: |
|
|
184
|
+
if gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
|
|
185
|
+
echo "GitHub Release $GITHUB_REF_NAME already exists."
|
|
186
|
+
exit 0
|
|
187
|
+
fi
|
|
188
|
+
|
|
189
|
+
version="${GITHUB_REF_NAME#v}"
|
|
190
|
+
prelude=$(printf '%s\n\n%s\n\n%s\n%s\n%s\n\n%s\n' \
|
|
191
|
+
"PyPI: https://pypi.org/project/kolega-code/${version}/" \
|
|
192
|
+
"Update with:" \
|
|
193
|
+
'```bash' \
|
|
194
|
+
'uv tool install --force kolega-code' \
|
|
195
|
+
'```' \
|
|
196
|
+
"PyPI is the canonical package distribution. GitHub provides source archives for this release."
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
gh release create "$GITHUB_REF_NAME" \
|
|
200
|
+
--repo "$GITHUB_REPOSITORY" \
|
|
201
|
+
--verify-tag \
|
|
202
|
+
--title "$GITHUB_REF_NAME" \
|
|
203
|
+
--latest \
|
|
204
|
+
--generate-notes \
|
|
205
|
+
--notes "$prelude"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
+
rev: v0.15.12
|
|
4
|
+
hooks:
|
|
5
|
+
- id: ruff-check
|
|
6
|
+
args: [--fix]
|
|
7
|
+
- id: ruff-format
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: v6.0.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: trailing-whitespace
|
|
13
|
+
args: [--markdown-linebreak-ext=md]
|
|
14
|
+
- id: end-of-file-fixer
|
|
15
|
+
- id: check-yaml
|
|
16
|
+
- id: debug-statements
|
|
17
|
+
- id: detect-private-key
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Kolega Code are documented here.
|
|
4
|
+
|
|
5
|
+
This project uses GitHub Releases for detailed generated release notes. This file provides a concise, human-maintained summary of user-visible changes.
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
## 0.8.4 - 2026-06-24
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Added minimal GitHub issue templates for bug reports and feature requests.
|
|
14
|
+
- Added project links (homepage, documentation, changelog, security) to package metadata.
|
|
15
|
+
- Added pre-commit configuration and a repository coverage badge.
|
|
16
|
+
- Added Ruff lint/formatting checks and dependency vulnerability auditing to CI.
|
|
17
|
+
- Added coverage reporting and SBOM/provenance attestation to the release workflow.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Hardened local state file permissions for settings, sessions, and project permission files.
|
|
22
|
+
- Hardened the release workflow with lockfile-backed installs, version parity checks, and artifact smoke tests.
|
|
23
|
+
- Split and reformatted oversized test modules to keep the suite maintainable.
|
|
24
|
+
- Reduced the Logs and Terminal TUI scrollback caps to 2000 lines for better performance.
|
|
25
|
+
- Updated GitHub Actions to Node 24-compatible versions.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- Fixed the chat composer to auto-grow as text wraps across multiple lines.
|
|
30
|
+
- Fixed `ctrl-u` so it clears multiline composer drafts.
|
|
31
|
+
- Fixed composer select-all shortcuts.
|
|
32
|
+
- Fixed prompt-option focus handoff so focus returns from the composer correctly.
|
|
33
|
+
- Fixed chat focus restoration after the app resumes or a turn is cancelled.
|
|
34
|
+
- Fixed runtime output clearing when a planning thread is reset.
|
|
35
|
+
- Optimized planning sidebar markdown rendering to reduce lag.
|
|
36
|
+
|
|
37
|
+
## 0.8.3 - 2026-06-23
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- Persisted TUI permission mode across sessions.
|
|
42
|
+
- Updated the `idna` dependency to a patched version.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Externalized the TUI stylesheet.
|
|
47
|
+
- Moved tests into the top-level `tests/` directory.
|
|
48
|
+
|
|
49
|
+
## 0.8.2 - 2026-06-22
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
|
|
53
|
+
- Improved gigacode workflow transcript artifacts.
|
|
54
|
+
- Documented branch and pull request naming guidance.
|
|
55
|
+
- Documented the optional logs sidebar flag.
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
|
|
59
|
+
- Fixed long TUI approval prompt layout.
|
|
60
|
+
- Fixed transcript jump-to-bottom locking.
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- Optimized sidebar terminal/log rendering and streaming render updates.
|
|
65
|
+
- Moved TUI session persistence off the event loop.
|
|
66
|
+
- Refactored the CLI TUI package layout and controller mixins.
|
|
67
|
+
|
|
68
|
+
## 0.8.1 - 2026-06-21
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
|
|
72
|
+
- Added an optional agent iteration cap.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- Migrated the API-key OpenAI provider to the Responses API.
|
|
77
|
+
- Preserved OpenAI Responses reasoning continuity.
|
|
@@ -4,12 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
Kolega Code requires Python 3.11 or newer.
|
|
6
6
|
|
|
7
|
-
Install the CLI
|
|
7
|
+
Install the CLI, development dependencies, and the tracked Git hooks with the setup script:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
./scripts/setup-dev.sh
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If you prefer to run the steps manually:
|
|
8
14
|
|
|
9
15
|
```bash
|
|
10
16
|
uv sync --extra cli --extra dev
|
|
17
|
+
git config core.hooksPath .githooks
|
|
18
|
+
uv run pre-commit install-hooks
|
|
19
|
+
uv run pre-commit run --all-files --show-diff-on-failure
|
|
11
20
|
```
|
|
12
21
|
|
|
22
|
+
Installing the `pre-commit` Python package is not enough. This repository uses a tracked
|
|
23
|
+
`.githooks/pre-commit` wrapper that runs the exact same all-files command as CI. Run
|
|
24
|
+
`./scripts/setup-dev.sh` or `git config core.hooksPath .githooks` once per clone.
|
|
25
|
+
|
|
13
26
|
If you prefer `pip`, install the package in editable mode:
|
|
14
27
|
|
|
15
28
|
```bash
|
|
@@ -29,7 +42,34 @@ environment file only when you need those tests, and never commit real secrets:
|
|
|
29
42
|
cp .env.example .env
|
|
30
43
|
```
|
|
31
44
|
|
|
32
|
-
## Tests
|
|
45
|
+
## Tests and quality checks
|
|
46
|
+
|
|
47
|
+
Verify that Git is configured to use the tracked hooks:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
./scripts/check-dev-hooks.sh
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Local commits run the same all-files pre-commit command as CI when `core.hooksPath` points
|
|
54
|
+
to `.githooks`:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
uv run pre-commit run --all-files --show-diff-on-failure
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
CI runs Ruff through pre-commit. You can also run Ruff directly for one-off linting and
|
|
61
|
+
formatting checks:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
uv run ruff check .
|
|
65
|
+
uv run ruff format --check .
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
To apply formatting locally:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
uv run ruff format .
|
|
72
|
+
```
|
|
33
73
|
|
|
34
74
|
Run the fast test suite before opening a pull request:
|
|
35
75
|
|