kolega-code 0.13.0__tar.gz → 0.14.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.13.0 → kolega_code-0.14.0}/.gitignore +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.pre-commit-config.yaml +10 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/CHANGELOG.md +27 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/CONTRIBUTING.md +24 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/PKG-INFO +2 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/astro.config.mjs +6 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/package-lock.json +9 -9
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/package.json +2 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/public/favicon.svg +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/assets/coverage.svg +1 -1
- kolega_code-0.14.0/docs/src/assets/kolega-dark.svg +15 -0
- kolega_code-0.14.0/docs/src/assets/kolega-light.svg +15 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/cli/ask.md +30 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/cli/overview.md +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/configuration/providers-and-models.mdx +2 -0
- kolega_code-0.14.0/docs/src/content/docs/goal.md +167 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/tui/interface.md +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/tui/sessions-and-resume.md +2 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/tui/slash-commands.md +8 -0
- kolega_code-0.14.0/docs/src/styles/brand.css +461 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/baseagent.py +92 -14
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/common.py +10 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/context.py +2 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/conversation.py +4 -2
- kolega_code-0.14.0/kolega_code/agent/goal.py +114 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/agent_tool.py +4 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/base_tool.py +2 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/browser_tool.py +5 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/build_tool.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/edit_preview.py +33 -9
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/edit_tool.py +56 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/glob_tool.py +3 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/list_directory_tool.py +10 -4
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/terminal_tool.py +5 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/think_hard_tool.py +21 -10
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tools.py +12 -9
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/utils/commands.py +5 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/app.py +13 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/file_index.py +4 -1
- kolega_code-0.14.0/kolega_code/cli/goal.py +190 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/main.py +120 -4
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/messages.py +16 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/provider_registry.py +2 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/session_store.py +4 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/slash_commands.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/agent_runtime.py +193 -8
- kolega_code-0.14.0/kolega_code/cli/tui/app_base.py +290 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/changes_screen.py +2 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/command_handlers.py +83 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/prompt_flows.py +2 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/session_diff.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/settings_panel.py +8 -4
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/state.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/status_dashboard.py +21 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/transcript.py +5 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/widgets.py +10 -4
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/client.py +5 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/exceptions.py +21 -19
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/instrumented_client.py +24 -18
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/models.py +53 -24
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/anthropic.py +15 -11
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/base.py +7 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/google.py +8 -6
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/models.py +5 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/openai.py +16 -9
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/accessors.py +2 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/anthropic.py +24 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/transport.py +2 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/local.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/serializer.py +4 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/terminal.py +6 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/utils.py +7 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/services/browser.py +3 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/services/file_system.py +11 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/services/terminal.py +3 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/utils/images.py +9 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/pyproject.toml +9 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_anthropic_token_counting.py +3 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_billing_openai_cache.py +8 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_chatgpt_live.py +8 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +11 -7
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_chatgpt_oauth_streaming.py +4 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_client_runtime.py +6 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_exceptions.py +14 -10
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_google_thought_signature.py +14 -11
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_google_tool_signature_live.py +15 -8
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_instrumented_client_integration.py +7 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_langfuse_normalization.py +3 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_live_providers.py +18 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_message_conversion.py +9 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_model_specs.py +26 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_cached_tokens_stream.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_message_conversion.py +2 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_responses_provider.py +6 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_token_counting.py +3 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_provider_usage_mapping.py +24 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_streaming_timeouts.py +4 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_supports_vision.py +2 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_thinking_effort.py +10 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_tool_execution_ids.py +37 -33
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_browser_integration.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_local_file_system.py +10 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_sandbox_terminal_input.py +3 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_terminal.py +20 -10
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_terminal_state_serializer.py +24 -9
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_agent_tools_inventory.py +4 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_compaction.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_runtime.py +15 -6
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_coder_attachments.py +11 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_compaction_tui_events.py +22 -10
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_compress_command.py +3 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_compression.py +12 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_gigacode_gating.py +2 -0
- kolega_code-0.14.0/tests/agent/test_goal.py +147 -0
- kolega_code-0.14.0/tests/agent/test_goal_evaluate.py +102 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_history_adapter_thinking.py +6 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_history_image_blocks.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_hooks_integration.py +8 -8
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_parallel_tool_calls.py +5 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_permissions.py +2 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_prompt_overrides.py +18 -6
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_read_image_tool.py +20 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_agent_tool.py +5 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_build_tool.py +41 -4
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_edit_preview.py +51 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_edit_tool.py +141 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_web_fetch_tool.py +3 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_workflow_tool.py +1 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/_app_test_utils.py +12 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_agent_wiring.py +2 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_bootstrap_settings.py +4 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_changes_inspector.py +3 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_composer_input.py +5 -5
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_diagnostics.py +1 -0
- kolega_code-0.14.0/tests/cli/test_app_goal_command.py +612 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_image_vision_warning.py +18 -18
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_mention_dropdown.py +22 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_misc_commands.py +4 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_model_effort_commands.py +8 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_model_switch_vision.py +3 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_navigation_commands.py +6 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_persistence_history.py +15 -4
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_plan_lifecycle.py +6 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_planning_questions.py +30 -15
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_entries.py +3 -6
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_errors.py +1 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_selection.py +9 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_terminal_logs.py +3 -3
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_skill_commands.py +3 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_slash_dropdown.py +9 -2
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_status_modes.py +30 -8
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_sub_agents_workflows.py +12 -3
- kolega_code-0.14.0/tests/cli/test_ask_goal.py +232 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_mcp_settings_formatting.py +22 -12
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_session_diff.py +9 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_session_store.py +3 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_themes.py +3 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/tools/test_definitions.py +12 -1
- {kolega_code-0.13.0 → kolega_code-0.14.0}/uv.lock +17 -2
- kolega_code-0.13.0/docs/src/assets/kolega-dark.svg +0 -5
- kolega_code-0.13.0/docs/src/assets/kolega-light.svg +0 -5
- kolega_code-0.13.0/docs/src/styles/brand.css +0 -178
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.env.example +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.githooks/pre-commit +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.github/workflows/ci.yml +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.github/workflows/docs.yml +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/.github/workflows/release.yml +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/LICENSE +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/README.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/RELEASING.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/SECURITY.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/.gitignore +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/README.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/assets/demo.gif +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/cli/doctor.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/cli/sessions.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/concepts/agents.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/concepts/how-it-works.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/concepts/tools.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/configuration/environment-variables.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/configuration/mcp.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/configuration/prompt-overrides.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/gigacode.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/hooks.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/index.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/skills.mdx +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/troubleshooting/diagnostics.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/tui/composer.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content/docs/tui/modes.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/src/content.config.ts +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/docs/tsconfig.json +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_dump.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_overrides.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/clipboard_image.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/diagnostics.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/plan_artifacts.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/settings.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/styles.tcss +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/tui/terminal_display.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/events.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/providers/responses_common.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/google.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/openai.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/together.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/xai.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/catalog/zai.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/thinking.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/specs/types.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/timeouts.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/local_state.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/oauth.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/service.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/state.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/mcp/tools.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/permissions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/services/base.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/run_tests.sh +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/scripts/bench_hotpaths.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/scripts/check-dev-hooks.sh +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/scripts/install-kolega-code.sh +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/scripts/setup-dev.sh +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/compaction_helpers.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/conftest.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/_token_counting_utils.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_anthropic_local_token_counting_incremental.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_chatgpt_oauth_auth_config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_chatgpt_oauth_conversion.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_client.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_client_live.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_dashscope_mapping.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_error_boundary.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_instrumented_client.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_instrumented_client_stream.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_cached_tokens.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_reasoning_replay.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_stream_accumulation.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/llm/test_openai_token_counting_incremental.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/orchestration/test_orchestration.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_browser.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_browser_console_logs.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_browser_content.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_browser_parity.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_file_system.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_file_system_integration.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_file_system_path.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/services/test_terminal_buffer.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_anthropic_history_validation.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_effective_history.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_history_serialization.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_prompt_context.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_role_overrides.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_tool_call_repair.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_tool_call_repair_integration.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_base_agent_tool_execution.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_coder_prompt_extensions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_commands.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_compaction_integration.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_compaction_persistence.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_compaction_subagent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_conversation_compaction.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_duplicate_tool_results.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_empty_message_handling.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_event_emitter.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_general_agent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_html.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_image_compat.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_planning_agent.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_prompt_dump.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_prompt_provider.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_prompts.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tool_collection_builtin_dispatch.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tool_collection_config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tool_collection_extensions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tool_collection_initialization.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tool_collection_memory.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tool_registry.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/test_tools.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_base_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_browser_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_glob_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_read_file_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_search_codebase_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_terminal_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_think_hard_streaming.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_think_hard_streaming_content.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_think_hard_streaming_errors.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_think_hard_streaming_updates.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/auth/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/auth/test_chatgpt_oauth.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/auth/test_tokens.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_compaction_restore.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_composer_commands.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_conversation_rendering.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_focus_behavior.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_modes_planning.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_permission_prompts.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_planning_restore.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_scroll.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_status.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_streaming.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_rendering_tools.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_app_session_diff_async.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_cli_config.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_clipboard_image.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_connection.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_diagnostics.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_file_index.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_main.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_mcp_cli.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_mentions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_plan_artifacts.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_provider_registry.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_settings.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_skills.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_slash_commands.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_sub_agent_stream_accumulation.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_terminal_display.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_transcript_streaming_render.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_tui_stylesheet.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/cli/test_updater.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/conftest.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/hooks/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/hooks/test_hooks.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/mcp/test_config_state_tools.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/test_mcp_permissions.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/test_mcp_transport.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/tools/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/utils/__init__.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/utils/test_images.py +0 -0
- {kolega_code-0.13.0 → kolega_code-0.14.0}/tests/utils/test_images_ascii.py +0 -0
|
@@ -15,3 +15,13 @@ repos:
|
|
|
15
15
|
- id: check-yaml
|
|
16
16
|
- id: debug-statements
|
|
17
17
|
- id: detect-private-key
|
|
18
|
+
|
|
19
|
+
- repo: local
|
|
20
|
+
hooks:
|
|
21
|
+
- id: pyright
|
|
22
|
+
name: pyright type checker
|
|
23
|
+
entry: uv run pyright
|
|
24
|
+
language: system
|
|
25
|
+
types: [python]
|
|
26
|
+
pass_filenames: false
|
|
27
|
+
require_serial: true
|
|
@@ -6,6 +6,33 @@ This project uses GitHub Releases for detailed generated release notes. This fil
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.14.0 - 2026-07-03
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Adopted Pyright static type checking (basic mode) across the codebase.
|
|
14
|
+
Pyright runs in pre-commit and CI, catching type errors before runtime. The
|
|
15
|
+
`[tool.pyright]` configuration lives in `pyproject.toml`. Run locally with
|
|
16
|
+
`uv run pyright`.
|
|
17
|
+
- Added support for Anthropic Claude Fable 5 (`claude-fable-5`) and Claude Sonnet 5
|
|
18
|
+
(`claude-sonnet-5`): 1M-token context, 128K max output, vision input, and
|
|
19
|
+
adaptive thinking with `low`/`medium`/`high`/`xhigh`/`max` effort levels. Both
|
|
20
|
+
are selectable in the Settings UI, `/model` picker, CLI flags, and env vars.
|
|
21
|
+
- Added a `/goal` slash command that sets an autonomous completion condition the
|
|
22
|
+
agent works toward. After each turn, a read-only investigation sub-agent
|
|
23
|
+
verifies whether the goal is met; if not, the agent is nudged to continue
|
|
24
|
+
automatically until the goal is met, a turn cap is hit, or the user
|
|
25
|
+
pauses/cancels. Also available as `kolega-code ask --goal <condition>` for
|
|
26
|
+
run-to-completion from the CLI. Goal state persists with the session.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Handled CRLF line endings in the edit, multi_edit, and write tools so diffs
|
|
31
|
+
and patches apply correctly on Windows-originated files.
|
|
32
|
+
- Showed full diffs on the session changes screen instead of a capped preview.
|
|
33
|
+
- Kept the turn worker alive during goal verification so the agent does not
|
|
34
|
+
stall while checking autonomous goal conditions.
|
|
35
|
+
|
|
9
36
|
## 0.13.0 - 2026-07-02
|
|
10
37
|
|
|
11
38
|
### Added
|
|
@@ -57,12 +57,13 @@ to `.githooks`:
|
|
|
57
57
|
uv run pre-commit run --all-files --show-diff-on-failure
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
CI runs Ruff through pre-commit. You can also run
|
|
61
|
-
|
|
60
|
+
CI runs Ruff and Pyright through pre-commit. You can also run them directly for
|
|
61
|
+
one-off checks:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
64
|
uv run ruff check .
|
|
65
65
|
uv run ruff format --check .
|
|
66
|
+
uv run pyright
|
|
66
67
|
```
|
|
67
68
|
|
|
68
69
|
To apply formatting locally:
|
|
@@ -71,6 +72,27 @@ To apply formatting locally:
|
|
|
71
72
|
uv run ruff format .
|
|
72
73
|
```
|
|
73
74
|
|
|
75
|
+
### Type checking
|
|
76
|
+
|
|
77
|
+
The project uses [Pyright](https://github.com/microsoft/pyright) in basic mode to
|
|
78
|
+
catch type errors before runtime. The configuration lives in `[tool.pyright]` in
|
|
79
|
+
`pyproject.toml`.
|
|
80
|
+
|
|
81
|
+
Run the type checker locally:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
uv run pyright
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Guidelines for type annotations:
|
|
88
|
+
|
|
89
|
+
- All new code should have type annotations on function signatures and class
|
|
90
|
+
attributes.
|
|
91
|
+
- Use `# pyright: ignore[<rule>]` sparingly and only for third-party stub
|
|
92
|
+
limitations — never to silence errors in first-party code.
|
|
93
|
+
- Prefer narrowing `Optional` values with `assert` or `if` guards over ignoring
|
|
94
|
+
the error.
|
|
95
|
+
|
|
74
96
|
Run the fast test suite before opening a pull request:
|
|
75
97
|
|
|
76
98
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kolega-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Multi-agent coding in 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/
|
|
@@ -255,6 +255,7 @@ Provides-Extra: cli
|
|
|
255
255
|
Provides-Extra: dev
|
|
256
256
|
Requires-Dist: genbadge[coverage]==1.1.3; extra == 'dev'
|
|
257
257
|
Requires-Dist: pre-commit==4.6.0; extra == 'dev'
|
|
258
|
+
Requires-Dist: pyright==1.1.411; extra == 'dev'
|
|
258
259
|
Requires-Dist: pytest-asyncio==1.3.0; extra == 'dev'
|
|
259
260
|
Requires-Dist: pytest-cov==7.0.0; extra == 'dev'
|
|
260
261
|
Requires-Dist: pytest==9.0.3; extra == 'dev'
|
|
@@ -23,8 +23,8 @@ export default defineConfig({
|
|
|
23
23
|
// Brand fonts (Geist) + the Kolega Code theme. Order matters: fonts first
|
|
24
24
|
// so the brand stylesheet can reference their family names.
|
|
25
25
|
customCss: [
|
|
26
|
-
"@fontsource-variable/
|
|
27
|
-
"@fontsource-variable/
|
|
26
|
+
"@fontsource-variable/ibm-plex-sans/index.css",
|
|
27
|
+
"@fontsource-variable/jetbrains-mono/index.css",
|
|
28
28
|
"./src/styles/brand.css",
|
|
29
29
|
],
|
|
30
30
|
social: [
|
|
@@ -105,6 +105,10 @@ export default defineConfig({
|
|
|
105
105
|
label: "Gigacode",
|
|
106
106
|
items: [{ label: "Workflow Orchestration", slug: "gigacode" }],
|
|
107
107
|
},
|
|
108
|
+
{
|
|
109
|
+
label: "Autonomous Goals",
|
|
110
|
+
items: [{ label: "Goal-Conditioned Work", slug: "goal" }],
|
|
111
|
+
},
|
|
108
112
|
{
|
|
109
113
|
label: "Troubleshooting",
|
|
110
114
|
items: [
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@astrojs/starlight": "^0.40.0",
|
|
13
|
-
"@fontsource-variable/
|
|
14
|
-
"@fontsource-variable/
|
|
13
|
+
"@fontsource-variable/ibm-plex-sans": "^5.2.8",
|
|
14
|
+
"@fontsource-variable/jetbrains-mono": "^5.2.8",
|
|
15
15
|
"astro": "^6.4.7",
|
|
16
16
|
"sharp": "^0.34.0"
|
|
17
17
|
}
|
|
@@ -747,19 +747,19 @@
|
|
|
747
747
|
"@expressive-code/core": "^0.43.1"
|
|
748
748
|
}
|
|
749
749
|
},
|
|
750
|
-
"node_modules/@fontsource-variable/
|
|
751
|
-
"version": "5.2.
|
|
752
|
-
"resolved": "https://registry.npmjs.org/@fontsource-variable/
|
|
753
|
-
"integrity": "sha512-
|
|
750
|
+
"node_modules/@fontsource-variable/ibm-plex-sans": {
|
|
751
|
+
"version": "5.2.8",
|
|
752
|
+
"resolved": "https://registry.npmjs.org/@fontsource-variable/ibm-plex-sans/-/ibm-plex-sans-5.2.8.tgz",
|
|
753
|
+
"integrity": "sha512-n5PF2iFa0CZT0QYTPzxvZ39opC9LnU0zdoRccoADbs+Dtsd+lbXOZF7RNuIPHcQX1dKjF63sxnRImQIB5eD0Ag==",
|
|
754
754
|
"license": "OFL-1.1",
|
|
755
755
|
"funding": {
|
|
756
756
|
"url": "https://github.com/sponsors/ayuhito"
|
|
757
757
|
}
|
|
758
758
|
},
|
|
759
|
-
"node_modules/@fontsource-variable/
|
|
759
|
+
"node_modules/@fontsource-variable/jetbrains-mono": {
|
|
760
760
|
"version": "5.2.8",
|
|
761
|
-
"resolved": "https://registry.npmjs.org/@fontsource-variable/
|
|
762
|
-
"integrity": "sha512-
|
|
761
|
+
"resolved": "https://registry.npmjs.org/@fontsource-variable/jetbrains-mono/-/jetbrains-mono-5.2.8.tgz",
|
|
762
|
+
"integrity": "sha512-WBA9elru6Jdp5df2mES55wuOO0WIrn3kpXnI4+W2ek5u3ZgLS9XS4gmIlcQhiZOWEKl95meYdvK7xI+ETLCq/Q==",
|
|
763
763
|
"license": "OFL-1.1",
|
|
764
764
|
"funding": {
|
|
765
765
|
"url": "https://github.com/sponsors/ayuhito"
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@astrojs/starlight": "^0.40.0",
|
|
16
|
-
"@fontsource-variable/
|
|
17
|
-
"@fontsource-variable/
|
|
16
|
+
"@fontsource-variable/ibm-plex-sans": "^5.2.8",
|
|
17
|
+
"@fontsource-variable/jetbrains-mono": "^5.2.8",
|
|
18
18
|
"astro": "^6.4.7",
|
|
19
19
|
"sharp": "^0.34.0"
|
|
20
20
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2
|
-
<rect width="24" height="24" rx="5" ry="5" fill="#
|
|
2
|
+
<rect width="24" height="24" rx="5" ry="5" fill="#39c5cf"/>
|
|
3
3
|
<path d="M7 8L3 12L7 16" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
4
4
|
<path d="M17 8L21 12L17 16" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
5
5
|
<path d="M10 20L14 4" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 80.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 80.35%"><title>coverage: 80.35%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">80.35%</text><text x="865" y="150" fill-opacity=".3" textLength="430">80.35%</text></g><text x="865" y="140" textLength="430">80.35%</text></g></g></svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 290 30" width="290" height="30">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g" x1="0" y1="0" x2="1" y2="0">
|
|
4
|
+
<stop offset="0%" stop-color="#39C5CF"/>
|
|
5
|
+
<stop offset="100%" stop-color="#9B7DD4"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<text x="0" y="5" font-family="'JetBrains Mono','Cascadia Code','Fira Code',Menlo,Consolas,monospace" font-size="5" fill="url(#g)" font-weight="700" xml:space="preserve">
|
|
9
|
+
<tspan x="0" dy="0"> ██ ██ ██████ ██ ███████ ██████ █████ ██████ ██████ ██████ ███████</tspan>
|
|
10
|
+
<tspan x="0" dy="5.5"> ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██</tspan>
|
|
11
|
+
<tspan x="0" dy="5.5"> ████ ██ ██ ██ █████ ██ ███ ███████ ██ ██ ██ ██ ██ █████</tspan>
|
|
12
|
+
<tspan x="0" dy="5.5"> ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██</tspan>
|
|
13
|
+
<tspan x="0" dy="5.5"> ██ ██ ██████ ███████ ███████ ██████ ██ ██ ██████ ██████ ██████ ███████</tspan>
|
|
14
|
+
</text>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 290 30" width="290" height="30">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g" x1="0" y1="0" x2="1" y2="0">
|
|
4
|
+
<stop offset="0%" stop-color="#0d7377"/>
|
|
5
|
+
<stop offset="100%" stop-color="#5a3d7a"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<text x="0" y="5" font-family="'JetBrains Mono','Cascadia Code','Fira Code',Menlo,Consolas,monospace" font-size="5" fill="url(#g)" font-weight="700" xml:space="preserve">
|
|
9
|
+
<tspan x="0" dy="0"> ██ ██ ██████ ██ ███████ ██████ █████ ██████ ██████ ██████ ███████</tspan>
|
|
10
|
+
<tspan x="0" dy="5.5"> ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██</tspan>
|
|
11
|
+
<tspan x="0" dy="5.5"> ████ ██ ██ ██ █████ ██ ███ ███████ ██ ██ ██ ██ ██ █████</tspan>
|
|
12
|
+
<tspan x="0" dy="5.5"> ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██</tspan>
|
|
13
|
+
<tspan x="0" dy="5.5"> ██ ██ ██████ ███████ ███████ ██████ ██ ██ ██████ ██████ ██████ ███████</tspan>
|
|
14
|
+
</text>
|
|
15
|
+
</svg>
|
|
@@ -15,8 +15,10 @@ kolega-code ask "<prompt>" [options]
|
|
|
15
15
|
|
|
16
16
|
| Argument / option | Description |
|
|
17
17
|
| --- | --- |
|
|
18
|
-
| `prompt` | The prompt to send (required
|
|
18
|
+
| `prompt` | The prompt to send (optional when `--goal` is given; otherwise required) |
|
|
19
19
|
| `--project <PATH>` | Project directory to work in (default `.`) |
|
|
20
|
+
| `--goal <condition>` | Set an autonomous completion goal and loop until it is met or capped (no prompt required) |
|
|
21
|
+
| `--goal-max-turns <N>` | Maximum evaluation turns before an unmet goal gives up (default 50) |
|
|
20
22
|
| `--save` | Persist the session after the prompt completes |
|
|
21
23
|
| `--json` | Emit response chunks and events as JSON |
|
|
22
24
|
| `--browser-visible` | Launch visible Playwright browser windows |
|
|
@@ -77,6 +79,22 @@ it against the project's [Agent Skills](../../skills/):
|
|
|
77
79
|
- `kolega-code ask "/my-skill do the thing"` activates the skill and runs the
|
|
78
80
|
remaining prompt.
|
|
79
81
|
|
|
82
|
+
## Goal mode
|
|
83
|
+
|
|
84
|
+
Pass `--goal "<condition>"` to set an autonomous completion goal. The agent works
|
|
85
|
+
toward the goal, and after each turn a read-only verifier checks whether it's met.
|
|
86
|
+
The loop continues until the goal is met or the turn cap (default 50, override
|
|
87
|
+
with `--goal-max-turns`) is reached. The positional `prompt` is optional with
|
|
88
|
+
`--goal` — the CLI synthesizes the first work-turn message from the condition:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
kolega-code ask --goal "all tests pass and ruff is clean" --project .
|
|
92
|
+
kolega-code ask "start by fixing the parser" --goal "all tests pass" --project .
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
See [Goal-Conditioned Work](../../goal/) for the loop behavior, safety model, and
|
|
96
|
+
JSON event details.
|
|
97
|
+
|
|
80
98
|
## JSON output
|
|
81
99
|
|
|
82
100
|
With `--json`, the command streams newline-delimited JSON objects, each tagged with
|
|
@@ -93,6 +111,8 @@ The stream includes:
|
|
|
93
111
|
| `chunk` | A streamed piece of the response |
|
|
94
112
|
| `event` | An agent event (sub-agent activity, tool calls, terminal output) |
|
|
95
113
|
| `skill` | Skill activation metadata |
|
|
114
|
+
| `goal_eval` | Emitted after each goal evaluation (with `--goal`): `met`, `turns`, `reason` |
|
|
115
|
+
| `goal_result` | Final goal outcome (with `--goal`): `met`, `turns`, `reason` |
|
|
96
116
|
| `summary` | A final object with the chunk count and `session_id` |
|
|
97
117
|
|
|
98
118
|
In plain (non-JSON) mode, the answer is written to **stdout** while sub-agent and
|
|
@@ -105,3 +125,12 @@ answer.
|
|
|
105
125
|
confirmations. If you pass `--permission-mode ask`, shell commands and file edits
|
|
106
126
|
prompt on stderr when stdin is interactive. Persisted allow rules are stored in
|
|
107
127
|
the project at `.kolega/permissions.json`.
|
|
128
|
+
|
|
129
|
+
## Exit codes
|
|
130
|
+
|
|
131
|
+
| Code | Meaning |
|
|
132
|
+
| --- | --- |
|
|
133
|
+
| `0` | Success (or: the goal was met when using `--goal`) |
|
|
134
|
+
| `1` | With `--goal`: the turn cap was reached without meeting the goal |
|
|
135
|
+
| `2` | Configuration / usage error (e.g. invalid provider, missing API key) |
|
|
136
|
+
| `130` | Interrupted (`Ctrl+C`) |
|
|
@@ -78,5 +78,6 @@ in [Settings & API Keys](../../configuration/settings-and-api-keys/).
|
|
|
78
78
|
| Code | Meaning |
|
|
79
79
|
| --- | --- |
|
|
80
80
|
| `0` | Success |
|
|
81
|
+
| `1` | Goal not met: `ask --goal` reached the turn cap without completing the goal |
|
|
81
82
|
| `2` | Configuration / usage error (e.g. invalid provider, missing API key, project path not found, Textual not installed) |
|
|
82
83
|
| `130` | Interrupted (`Ctrl+C`) |
|
|
@@ -171,6 +171,8 @@ models in the TUI.
|
|
|
171
171
|
|
|
172
172
|
| Provider/model | Values | Kolega Code default |
|
|
173
173
|
| --- | --- | --- |
|
|
174
|
+
| Anthropic `claude-fable-5` | `low`, `medium`, `high`, `xhigh`, `max` | `medium` |
|
|
175
|
+
| Anthropic `claude-sonnet-5` | `low`, `medium`, `high`, `xhigh`, `max` | `medium` |
|
|
174
176
|
| Anthropic `claude-opus-4-7` | `low`, `medium`, `high`, `xhigh`, `max` | `medium` |
|
|
175
177
|
| DeepSeek `deepseek-v4-pro` | `none`, `high`, `max` | `high` |
|
|
176
178
|
| Moonshot `kimi-k2.7-code` | `auto` | `auto` |
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Goal-Conditioned Work
|
|
3
|
+
description: Set an autonomous completion goal the agent works toward until it is verifiably met.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Set a verifiable completion condition and the agent works autonomously toward it,
|
|
7
|
+
verifying its own progress after every turn, until the goal is met, a turn cap is
|
|
8
|
+
hit, or you stop it. It's available as the `/goal` slash command in the
|
|
9
|
+
[TUI](../tui/interface/) and as `kolega-code ask --goal` from the
|
|
10
|
+
[CLI](../cli/ask/).
|
|
11
|
+
|
|
12
|
+
## How it works
|
|
13
|
+
|
|
14
|
+
The goal loop runs after each completed work turn:
|
|
15
|
+
|
|
16
|
+
1. **Work turn** — the agent uses its full toolset (read, edit, run commands, run
|
|
17
|
+
tests, dispatch sub-agents) to make progress toward the goal.
|
|
18
|
+
2. **Verification** — a **read-only investigation sub-agent** inspects the current
|
|
19
|
+
codebase state and decides whether the goal is met, ending its reply with a
|
|
20
|
+
JSON verdict: `{"ok": true}` or `{"ok": false, "reason": "<remaining gap>"}`.
|
|
21
|
+
3. **Met** — the goal completes, a confirmation message is shown, and the
|
|
22
|
+
active-goal prompt extension is dropped so subsequent turns are normal again.
|
|
23
|
+
4. **Not met** — the agent is nudged to continue. The nudge includes the
|
|
24
|
+
verifier's stated remaining gap and the number of turns left before the cap, so
|
|
25
|
+
the agent can prioritize accordingly. The loop repeats from step 1.
|
|
26
|
+
|
|
27
|
+
A **turn cap** (default **50**) is a safety backstop. If the goal isn't met within
|
|
28
|
+
that many evaluation turns, the loop pauses and tells you to refine the goal or
|
|
29
|
+
clear it.
|
|
30
|
+
|
|
31
|
+
## Safety model
|
|
32
|
+
|
|
33
|
+
:::note
|
|
34
|
+
The verifier is a **read-only investigation sub-agent**. It can read files, search
|
|
35
|
+
the code, and run commands or tests, but it **cannot edit** — so it can never game
|
|
36
|
+
an autonomous goal by falsifying its own completion.
|
|
37
|
+
:::
|
|
38
|
+
|
|
39
|
+
A few guarantees that keep the loop safe:
|
|
40
|
+
|
|
41
|
+
- The verifier inspects the codebase **fresh each evaluation** (stateless across
|
|
42
|
+
turns), so it judges the real current state, not a stale snapshot.
|
|
43
|
+
- A malformed, unparseable, or failed verdict is **always treated as not-met**. A
|
|
44
|
+
broken evaluator can never falsely complete a goal — the loop keeps running or
|
|
45
|
+
hits the cap.
|
|
46
|
+
- The verifier runs on the configured long-context model, separate from the
|
|
47
|
+
working agent's turn.
|
|
48
|
+
|
|
49
|
+
## In the TUI: `/goal`
|
|
50
|
+
|
|
51
|
+
Type `/goal` in the [composer](../tui/composer/) to set, check, or clear a goal.
|
|
52
|
+
|
|
53
|
+
| Form | Effect |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `/goal <condition>` | Set a goal and start working toward it |
|
|
56
|
+
| `/goal` | Show goal status (condition, runtime, turns evaluated, tokens spent, verifier's latest reason) |
|
|
57
|
+
| `/goal clear` | Remove the goal (aliases: `stop`, `off`, `reset`, `none`, `cancel`) |
|
|
58
|
+
| `/goal -p <condition>` | Run-to-completion mode (alias: `--print`) — no pauses until the goal is met or capped |
|
|
59
|
+
|
|
60
|
+
A few things to know:
|
|
61
|
+
|
|
62
|
+
- **Esc pauses** the goal loop after the current turn finishes. Sending any
|
|
63
|
+
message **resumes** it from where it left off.
|
|
64
|
+
- You can't set or clear a goal while a turn is active — stop the turn first.
|
|
65
|
+
- Setting a new goal replaces an active unmet one.
|
|
66
|
+
- When the turn cap is reached, the goal is **paused** with a note. Refine it with
|
|
67
|
+
`/goal <condition>` or remove it with `/goal clear`.
|
|
68
|
+
- The **status dashboard** (Status side-panel tab) shows a `Goal` line with the
|
|
69
|
+
condition (truncated if long) and a state label — `active`, `paused`, or `met`.
|
|
70
|
+
- **Persistence**: goal state is saved with the session and restored on resume, so
|
|
71
|
+
the loop picks up where it left off. See
|
|
72
|
+
[Sessions & Resuming](../tui/sessions-and-resume/).
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
/goal all tests pass and the linter is clean
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## From the CLI: `ask --goal`
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
kolega-code ask --goal "<condition>" [--goal-max-turns N] [options]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The positional `prompt` is **optional** when `--goal` is given — the CLI
|
|
85
|
+
synthesizes the first work-turn message from the condition. You can still pass a
|
|
86
|
+
prompt to give the agent a head start:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# No prompt needed — the condition drives the loop
|
|
90
|
+
kolega-code ask --goal "all tests pass and ruff is clean" --project .
|
|
91
|
+
|
|
92
|
+
# Lower the turn cap for a bounded task
|
|
93
|
+
kolega-code ask --goal "the failing test in test_parser.py passes" --goal-max-turns 10 --json
|
|
94
|
+
|
|
95
|
+
# Give the agent a starting point, then let the goal loop take over
|
|
96
|
+
kolega-code ask "start by fixing the parser" --goal "all tests pass" --project .
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
| Option | Description |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| `--goal <condition>` | Set an autonomous completion goal and loop until it is met or capped (no prompt required) |
|
|
102
|
+
| `--goal-max-turns <N>` | Maximum evaluation turns before an unmet goal gives up (default 50) |
|
|
103
|
+
|
|
104
|
+
### Plain output
|
|
105
|
+
|
|
106
|
+
In plain (non-JSON) mode, after each evaluation the CLI prints a line to
|
|
107
|
+
**stderr**:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
[goal] turn 1: not met — test_parser.py still fails on test_parse_empty
|
|
111
|
+
[goal] turn 2: not met — two tests still failing in test_parser.py
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
When the loop ends, a final summary line is printed:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
[goal] met after 3 turn(s)
|
|
118
|
+
# or
|
|
119
|
+
[goal] not met (turn cap reached) after 10 turn(s)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
The agent's response text is written to **stdout** as usual, so piping stdout still
|
|
123
|
+
gives you just the answer.
|
|
124
|
+
|
|
125
|
+
### Exit code
|
|
126
|
+
|
|
127
|
+
With `--goal`, the exit code reflects the outcome:
|
|
128
|
+
|
|
129
|
+
| Code | Meaning |
|
|
130
|
+
| --- | --- |
|
|
131
|
+
| `0` | The goal was met |
|
|
132
|
+
| `1` | The turn cap was reached without meeting the goal |
|
|
133
|
+
|
|
134
|
+
## JSON output
|
|
135
|
+
|
|
136
|
+
With `--json`, the command streams newline-delimited JSON objects as usual, plus
|
|
137
|
+
two goal-specific `kind` values alongside the existing `chunk`, `event`, and
|
|
138
|
+
`summary` kinds:
|
|
139
|
+
|
|
140
|
+
| `kind` | Meaning |
|
|
141
|
+
| --- | --- |
|
|
142
|
+
| `goal_eval` | Emitted after each evaluation: `{met, turns, reason}` |
|
|
143
|
+
| `goal_result` | Final outcome: `{met, turns, reason}` |
|
|
144
|
+
|
|
145
|
+
Example stream (abbreviated):
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{"kind": "chunk", "data": {"type": "response", "content": "Fixing the parser…"}}
|
|
149
|
+
{"kind": "goal_eval", "data": {"met": false, "turns": 1, "reason": "test_parse_empty still fails"}}
|
|
150
|
+
{"kind": "chunk", "data": {"type": "response", "content": "Added the empty-input guard…"}}
|
|
151
|
+
{"kind": "goal_eval", "data": {"met": true, "turns": 2, "reason": ""}}
|
|
152
|
+
{"kind": "goal_result", "data": {"met": true, "turns": 2, "reason": ""}}
|
|
153
|
+
{"kind": "summary", "chunks": 4, "session_id": "abc123"}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Tips
|
|
157
|
+
|
|
158
|
+
- Write conditions that are **verifiable** — "all tests pass", "the file exists",
|
|
159
|
+
"the command succeeds" — rather than subjective ones like "make the code better".
|
|
160
|
+
- Keep the turn cap in mind for open-ended goals. Lower it with `--goal-max-turns`
|
|
161
|
+
for bounded tasks where you don't want the agent to spin for 50 turns.
|
|
162
|
+
- The verifier is strict. "Mostly done" is not met — the goal is met only when
|
|
163
|
+
there is concrete evidence (described files/code exist, relevant tests or
|
|
164
|
+
commands pass).
|
|
165
|
+
- A good condition names a **checkable outcome**, not a process. "Refactor the
|
|
166
|
+
parser" is a process; "the parser module has 100% test coverage and all tests
|
|
167
|
+
pass" is a checkable outcome.
|
|
@@ -27,7 +27,7 @@ appears above the composer until those prompts are sent. See
|
|
|
27
27
|
|
|
28
28
|
| Tab | What it shows |
|
|
29
29
|
| --- | --- |
|
|
30
|
-
| **Status** | The active provider/model and thinking effort, the current interaction mode (Build/Plan), permission mode, the agent's turn state (idle, generating, thinking, running a tool, running sub-agents, waiting for input, …), token usage, and
|
|
30
|
+
| **Status** | The active provider/model and thinking effort, the current interaction mode (Build/Plan), permission mode, the agent's turn state (idle, generating, thinking, running a tool, running sub-agents, waiting for input, …), token usage, context warnings, and the active [goal](../../goal/) status when a goal is set. |
|
|
31
31
|
| **Logs** | Optional. Launch with `--show-logs` to show a timestamped, color-coded diagnostic activity log. New entries preserve manual scrollback and an indicator flags unseen entries when you're on another tab. |
|
|
32
32
|
| **Terminal** | Live output from commands the agent runs. |
|
|
33
33
|
| **Planning** | The current **Plan** (markdown from the planning agent) and the shared **Task List** that both modes can edit. |
|
|
@@ -52,4 +52,6 @@ kolega-code sessions delete <session_id>
|
|
|
52
52
|
:::note
|
|
53
53
|
All CLI sessions use the CLI-specific coding-agent prompt, including resumed ones.
|
|
54
54
|
Resuming restores the conversation history so the agent picks up with full context.
|
|
55
|
+
An active [goal](../../goal/) is also saved with the session and restored on resume,
|
|
56
|
+
so the autonomous loop continues where it left off.
|
|
55
57
|
:::
|
|
@@ -43,6 +43,7 @@ These control the app and your session.
|
|
|
43
43
|
| `/login` | Sign in to a provider, e.g. `/login chatgpt` |
|
|
44
44
|
| `/logout` | Sign out of a provider, e.g. `/logout chatgpt` |
|
|
45
45
|
| `/gigacode` | Toggle [gigacode](../../gigacode/) workflow orchestration on or off |
|
|
46
|
+
| `/goal` | Set, show, or clear an autonomous completion goal |
|
|
46
47
|
| `/queue-clear` | Clear queued follow-up messages |
|
|
47
48
|
| `/copy` | Copy the last response to the clipboard |
|
|
48
49
|
| `/diagnostics` | Show version, model/endpoint, and the local diagnostics log path |
|
|
@@ -52,6 +53,13 @@ These control the app and your session.
|
|
|
52
53
|
| `/quit` | Save the session and exit |
|
|
53
54
|
| `/exit` | Save the session and exit |
|
|
54
55
|
|
|
56
|
+
Run `/goal <condition>` to set an autonomous completion goal the agent works
|
|
57
|
+
toward, verifying its own progress after each turn until the goal is met, the turn
|
|
58
|
+
cap is hit, or you pause it. `/goal` (no args) shows the goal status; `/goal clear`
|
|
59
|
+
(aliases: `stop`, `off`, `reset`, `none`, `cancel`) removes it. See
|
|
60
|
+
[Goal-Conditioned Work](../../goal/) for the full loop behavior, safety model, and
|
|
61
|
+
examples.
|
|
62
|
+
|
|
55
63
|
Run `/model` to open a selectable list of supported models for the current
|
|
56
64
|
provider. You can also switch directly with `/model <name>`.
|
|
57
65
|
|