kolega-code 0.16.1__tar.gz → 0.17.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.16.1 → kolega_code-0.17.0}/.env.example +6 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.github/workflows/ci.yml +5 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.github/workflows/release.yml +3 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/CHANGELOG.md +24 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/PKG-INFO +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/RELEASING.md +2 -2
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/assets/coverage.svg +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/concepts/tools.md +8 -4
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/environment-variables.md +24 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/providers-and-models.mdx +10 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +4 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/browseragent.py +15 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +9 -0
- kolega_code-0.17.0/kolega_code/agent/tool_backend/browser_tool.py +395 -0
- kolega_code-0.17.0/kolega_code/agent/tool_backend/glob_tool.py +533 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +245 -40
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tools.py +198 -219
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/app.py +2 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/messages.py +12 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/provider_registry.py +8 -2
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/theme.py +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/agent_runtime.py +7 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/settings_panel.py +95 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/state.py +2 -2
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/styles.tcss +30 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/transcript.py +33 -45
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/widgets.py +20 -5
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/models.py +7 -0
- kolega_code-0.17.0/kolega_code/services/base.py +199 -0
- kolega_code-0.17.0/kolega_code/services/browser.py +911 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/detector.py +60 -66
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/manager.py +14 -0
- kolega_code-0.17.0/kolega_code/services/workspace_scan.py +244 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/pyproject.toml +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/scripts/bench_hotpaths.py +5 -5
- kolega_code-0.17.0/tests/agent/services/test_browser_console_logs.py +129 -0
- kolega_code-0.17.0/tests/agent/services/test_browser_content.py +130 -0
- kolega_code-0.17.0/tests/agent/services/test_browser_integration.py +36 -0
- kolega_code-0.17.0/tests/agent/services/test_browser_parity.py +117 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_agent_tools_inventory.py +82 -9
- kolega_code-0.17.0/tests/agent/tool_backend/test_browser_tool.py +167 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_glob_tool.py +79 -2
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +1 -1
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_search_codebase_tool.py +78 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_bootstrap_settings.py +89 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_lsp_settings_status.py +25 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_entries.py +95 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_selection.py +6 -6
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_tools.py +52 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_provider_registry.py +10 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_transcript_streaming_render.py +21 -14
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_detector.py +21 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_manager.py +14 -0
- kolega_code-0.17.0/tests/services/test_workspace_scan.py +116 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/uv.lock +2 -2
- kolega_code-0.16.1/kolega_code/agent/tool_backend/browser_tool.py +0 -271
- kolega_code-0.16.1/kolega_code/agent/tool_backend/glob_tool.py +0 -325
- kolega_code-0.16.1/kolega_code/services/base.py +0 -233
- kolega_code-0.16.1/kolega_code/services/browser.py +0 -446
- kolega_code-0.16.1/tests/agent/services/test_browser_console_logs.py +0 -314
- kolega_code-0.16.1/tests/agent/services/test_browser_content.py +0 -94
- kolega_code-0.16.1/tests/agent/services/test_browser_integration.py +0 -120
- kolega_code-0.16.1/tests/agent/services/test_browser_parity.py +0 -355
- kolega_code-0.16.1/tests/agent/tool_backend/test_browser_tool.py +0 -335
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.githooks/pre-commit +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.github/workflows/docs.yml +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.gitignore +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/.pre-commit-config.yaml +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/CONTRIBUTING.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/LICENSE +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/README.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/SECURITY.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/.gitignore +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/README.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/astro.config.mjs +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/package-lock.json +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/package.json +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/public/favicon.svg +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/assets/demo.gif +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/assets/kolega-dark.svg +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/assets/kolega-light.svg +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/cli/ask.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/cli/doctor.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/cli/overview.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/cli/sessions.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/concepts/agents.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/concepts/how-it-works.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/lsp.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/mcp.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/prompt-overrides.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/gigacode.mdx +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/goal.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/hooks.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/index.mdx +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/skills.mdx +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/troubleshooting/diagnostics.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/troubleshooting/terminal-tmux.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/tui/composer.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/tui/interface.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/tui/modes.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content/docs/tui/slash-commands.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/content.config.ts +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/src/styles/brand.css +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/docs/tsconfig.json +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/baseagent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/goal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_dump.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_overrides.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/clipboard_image.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/diagnostics.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/goal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/main.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/plan_artifacts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/session_store.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/settings.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/slash_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/app_base.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/changes_screen.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/command_handlers.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/prompt_flows.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/session_diff.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/status_dashboard.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/tui/terminal_display.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/events.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/client.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/exceptions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/anthropic.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/google.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/openai.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/providers/responses_common.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/accessors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/google.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/openai.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/together.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/xai.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/catalog/zai.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/thinking.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/specs/types.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/timeouts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/local_state.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/oauth.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/service.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/state.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/tools.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/mcp/transport.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/permissions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/client.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/diagnostics.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/edits.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/registry.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/lsp/registry.yaml +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/snapshots.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/kolega_code/utils/images.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/run_tests.sh +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/scripts/bench_web_fetch.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/scripts/check-dev-hooks.sh +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/scripts/install-kolega-code.sh +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/scripts/setup-dev.sh +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/compaction_helpers.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/conftest.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/_token_counting_utils.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_anthropic_local_token_counting_incremental.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_anthropic_token_counting.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_billing_openai_cache.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_chatgpt_live.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_chatgpt_oauth_auth_config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_chatgpt_oauth_conversion.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_chatgpt_oauth_streaming.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_client.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_client_live.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_client_runtime.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_dashscope_mapping.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_error_boundary.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_exceptions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_google_thought_signature.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_google_tool_signature_live.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_instrumented_client.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_instrumented_client_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_instrumented_client_stream.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_langfuse_normalization.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_live_providers.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_message_conversion.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_model_specs.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_cached_tokens.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_cached_tokens_stream.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_message_conversion.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_reasoning_replay.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_responses_provider.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_stream_accumulation.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_token_counting.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_openai_token_counting_incremental.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_provider_usage_mapping.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_streaming_timeouts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_supports_vision.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_thinking_effort.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_tool_execution_ids.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/llm/test_xai_prompt_cache_header.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/orchestration/test_orchestration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_browser.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_file_system.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_file_system_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_file_system_path.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_local_file_system.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_sandbox_terminal_input.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_terminal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_terminal_buffer.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/services/test_terminal_state_serializer.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_anthropic_history_validation.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_compaction.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_effective_history.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_history_serialization.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_prompt_context.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_role_overrides.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_runtime.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_tool_call_repair.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_tool_call_repair_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_base_agent_tool_execution.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_coder_attachments.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_coder_prompt_extensions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_compaction_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_compaction_persistence.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_compaction_subagent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_compaction_tui_events.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_compress_command.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_compression.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_conversation_compaction.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_duplicate_tool_results.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_empty_message_handling.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_event_emitter.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_general_agent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_gigacode_gating.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_goal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_goal_evaluate.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_history_adapter_thinking.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_history_image_blocks.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_hooks_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_html.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_image_compat.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_parallel_tool_calls.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_permissions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_planning_agent.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_prompt_dump.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_prompt_overrides.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_prompt_provider.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_prompts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_read_image_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tool_collection_builtin_dispatch.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tool_collection_config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tool_collection_extensions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tool_collection_initialization.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tool_collection_memory.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tool_registry.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/test_tools.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_agent_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_base_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_build_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_edit_preview.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_edit_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_lsp_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_read_file_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_snapshot_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_terminal_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_think_hard_streaming.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_think_hard_streaming_content.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_think_hard_streaming_errors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_think_hard_streaming_updates.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_web_fetch_answering.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_web_fetch_pipeline.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_web_fetch_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/agent/tool_backend/test_workflow_tool.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/auth/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/auth/test_chatgpt_oauth.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/auth/test_tokens.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/_app_test_utils.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_agent_wiring.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_changes_inspector.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_compaction_restore.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_composer_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_composer_input.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_conversation_rendering.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_diagnostics.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_focus_behavior.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_goal_command.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_image_vision_warning.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_mention_dropdown.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_misc_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_model_effort_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_model_switch_vision.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_modes_planning.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_navigation_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_permission_prompts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_persistence_history.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_plan_lifecycle.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_planning_questions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_planning_restore.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_errors.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_scroll.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_status.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_streaming.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_rendering_terminal_logs.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_session_diff_async.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_skill_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_slash_dropdown.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_status_modes.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_sub_agents_workflows.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_app_tmux_shortcuts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_ask_goal.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_cli_config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_clipboard_image.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_connection.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_diagnostics.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_file_index.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_main.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_mcp_cli.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_mcp_settings_formatting.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_mentions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_plan_artifacts.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_session_diff.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_session_store.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_settings.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_skills.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_slash_commands.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_sub_agent_stream_accumulation.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_terminal_display.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_themes.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_tui_stylesheet.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/cli/test_updater.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/conftest.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/hooks/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/hooks/test_hooks.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/mcp/test_config_state_tools.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/_fake_server.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/conftest.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_client.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_diagnostics.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_edits.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_lsp_edit_tool_integration.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_project_config.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_registry.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/lsp/test_trust.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/services/test_snapshots.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/test_agent_config_serialization.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/test_mcp_permissions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/test_mcp_transport.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/tools/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/tools/test_definitions.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/utils/__init__.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/utils/test_images.py +0 -0
- {kolega_code-0.16.1 → kolega_code-0.17.0}/tests/utils/test_images_ascii.py +0 -0
|
@@ -25,6 +25,12 @@ OLLAMA_API_KEY=
|
|
|
25
25
|
KOLEGA_CODE_THINKING_EFFORT=
|
|
26
26
|
|
|
27
27
|
BROWSERLESS_API_KEY=
|
|
28
|
+
# Optional Browserless connection overrides. CDP and the SFO region remain the defaults.
|
|
29
|
+
# BROWSERLESS_WS_ENDPOINT=wss://production-sfo.browserless.io
|
|
30
|
+
# BROWSERLESS_REGION=sfo
|
|
31
|
+
# BROWSERLESS_PROTOCOL=cdp
|
|
32
|
+
# BROWSERLESS_TIMEOUT_MS=300000
|
|
33
|
+
# BROWSER_CONNECT_TIMEOUT_MS=30000
|
|
28
34
|
|
|
29
35
|
LANGFUSE_HOST=https://us.cloud.langfuse.com
|
|
30
36
|
LANGFUSE_PUBLIC_KEY=
|
|
@@ -3,7 +3,7 @@ name: CI
|
|
|
3
3
|
on:
|
|
4
4
|
pull_request:
|
|
5
5
|
branches: [main]
|
|
6
|
-
types: [opened, synchronize, reopened
|
|
6
|
+
types: [opened, synchronize, reopened]
|
|
7
7
|
push:
|
|
8
8
|
branches: [main]
|
|
9
9
|
workflow_dispatch:
|
|
@@ -84,6 +84,10 @@ jobs:
|
|
|
84
84
|
if: needs.changes.outputs.coverage-badge-only != 'true'
|
|
85
85
|
run: uv sync --extra dev --frozen
|
|
86
86
|
|
|
87
|
+
- name: Install Playwright Chromium
|
|
88
|
+
if: needs.changes.outputs.coverage-badge-only != 'true'
|
|
89
|
+
run: uv run playwright install --with-deps chromium
|
|
90
|
+
|
|
87
91
|
- name: Run pre-commit hooks
|
|
88
92
|
if: needs.changes.outputs.coverage-badge-only != 'true'
|
|
89
93
|
run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
@@ -6,6 +6,30 @@ This project uses GitHub Releases for detailed generated release notes. This fil
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.17.0 - 2026-07-10
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Rebuilt the browser agent on a Playwright MCP-style accessibility-snapshot
|
|
14
|
+
toolset (`browser_navigate`, `browser_snapshot`, `browser_find`,
|
|
15
|
+
`browser_click`, `browser_type`, and more). Actions use stable element refs
|
|
16
|
+
(e.g. `e12`) and return an updated snapshot, so the agent interacts
|
|
17
|
+
deterministically without inventing CSS selectors or relying on screenshots.
|
|
18
|
+
- The browser agent now requires a vision-capable model. Models without image
|
|
19
|
+
input support are rejected with guidance to choose a vision-capable model or
|
|
20
|
+
inherit the default.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Prevented `glob`, `search_codebase`, and LSP language detection from hanging
|
|
25
|
+
on large or broad project directories by adding bounded, cancellable,
|
|
26
|
+
timeout-limited workspace traversal.
|
|
27
|
+
- Normalized TUI transcript indentation for consistent rendering.
|
|
28
|
+
|
|
29
|
+
### Security
|
|
30
|
+
|
|
31
|
+
- Hardened browser URL validation to address CodeQL static-analysis findings.
|
|
32
|
+
|
|
9
33
|
## 0.16.1 - 2026-07-10
|
|
10
34
|
|
|
11
35
|
### Changed
|
|
@@ -115,8 +115,8 @@ the organization request.
|
|
|
115
115
|
|
|
116
116
|
2. In GitHub, create an environment named `pypi`.
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
The release workflow publishes to PyPI automatically when a release tag is
|
|
119
|
+
pushed; no manual deployment approval is required.
|
|
120
120
|
|
|
121
121
|
## Installer handoff
|
|
122
122
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage:
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 79.92%"><title>coverage: 79.92%</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">79.92%</text><text x="865" y="150" fill-opacity=".3" textLength="430">79.92%</text></g><text x="865" y="140" textLength="430">79.92%</text></g></g></svg>
|
|
@@ -31,10 +31,14 @@ Run shell commands in the project and stream their output to the **Terminal** ta
|
|
|
31
31
|
|
|
32
32
|
Drive a real browser (Playwright) for web tasks:
|
|
33
33
|
|
|
34
|
-
- `
|
|
35
|
-
- `
|
|
36
|
-
- `
|
|
37
|
-
- `
|
|
34
|
+
- `browser_navigate`, `browser_snapshot`, `browser_find`, `browser_close`
|
|
35
|
+
- `browser_click`, `browser_type`, `browser_fill_form`, `browser_select_option`
|
|
36
|
+
- `browser_tabs`, `browser_wait_for`, `browser_handle_dialog`, `browser_file_upload`
|
|
37
|
+
- `browser_console_messages`, `browser_network_requests`, `browser_take_screenshot`
|
|
38
|
+
|
|
39
|
+
The browser agent uses accessibility snapshots with element refs such as `e12`.
|
|
40
|
+
Actions return an updated snapshot, so the agent can interact deterministically
|
|
41
|
+
without inventing CSS selectors or relying on screenshots.
|
|
38
42
|
|
|
39
43
|
Launch visible browser windows (instead of headless) with `--browser-visible` on
|
|
40
44
|
the [TUI](../../cli/overview/) or [`ask`](../../cli/ask/).
|
|
@@ -86,6 +86,12 @@ section.
|
|
|
86
86
|
| `KOLEGA_CODE_<ROLE>_MODEL` | Model for that agent |
|
|
87
87
|
| `KOLEGA_CODE_<ROLE>_EFFORT` | Thinking effort for that agent |
|
|
88
88
|
|
|
89
|
+
The `BROWSER` role requires a vision-capable model. An incompatible explicit or
|
|
90
|
+
inherited model is never replaced automatically; dispatching the browser agent
|
|
91
|
+
fails with a configuration error until `KOLEGA_CODE_BROWSER_PROVIDER` and
|
|
92
|
+
`KOLEGA_CODE_BROWSER_MODEL` (or the equivalent Settings override) select a model
|
|
93
|
+
with vision support.
|
|
94
|
+
|
|
89
95
|
## State & environment
|
|
90
96
|
|
|
91
97
|
| Variable | Purpose |
|
|
@@ -106,6 +112,24 @@ explicitly when you want a cloud provider or a self-hosted SearXNG instance.
|
|
|
106
112
|
| `TAVILY_API_KEY` | Tavily API key |
|
|
107
113
|
| `SEARXNG_BASE_URL` | Base URL for a self-hosted SearXNG instance |
|
|
108
114
|
|
|
115
|
+
## Browser automation
|
|
116
|
+
|
|
117
|
+
Local browser automation needs no credentials. Hosted sandbox deployments can
|
|
118
|
+
connect the same browser agent to Browserless.
|
|
119
|
+
|
|
120
|
+
| Variable | Purpose |
|
|
121
|
+
| --- | --- |
|
|
122
|
+
| `BROWSERLESS_API_KEY` | Browserless cloud API token |
|
|
123
|
+
| `BROWSERLESS_WS_ENDPOINT` | Optional cloud or self-hosted WebSocket endpoint |
|
|
124
|
+
| `BROWSERLESS_REGION` | Cloud region used when no endpoint is supplied: `sfo`, `lon`, or `ams` |
|
|
125
|
+
| `BROWSERLESS_PROTOCOL` | Connection protocol: `cdp` (default) or `playwright` |
|
|
126
|
+
| `BROWSERLESS_TIMEOUT_MS` | Optional maximum Browserless session duration; must fit the account plan |
|
|
127
|
+
| `BROWSER_CONNECT_TIMEOUT_MS` | Browser transport connection timeout (default 30000 ms) |
|
|
128
|
+
|
|
129
|
+
Custom endpoint query parameters are preserved, including Browserless proxy,
|
|
130
|
+
stealth, profile, and recording options. If `BROWSERLESS_TIMEOUT_MS` is unset,
|
|
131
|
+
Browserless applies the account's default session duration.
|
|
132
|
+
|
|
109
133
|
## Telemetry (Langfuse)
|
|
110
134
|
|
|
111
135
|
Optional [Langfuse](https://langfuse.com/) tracing of LLM usage.
|
|
@@ -149,6 +149,12 @@ In the **Settings tab**, the **Agent Models** section (below the main Model sect
|
|
|
149
149
|
has a provider/model/effort group per role. Leave a role on **Default** to inherit;
|
|
150
150
|
pick a provider, model, and thinking effort to override it.
|
|
151
151
|
|
|
152
|
+
The **Browser** role requires a model whose catalog entry supports vision. It does
|
|
153
|
+
not fall back to another model or run in a text-only mode. If **Default** resolves
|
|
154
|
+
to a non-vision model, Settings shows a warning and the browser agent fails with a
|
|
155
|
+
configuration error when dispatched. Select an explicit vision-capable Browser
|
|
156
|
+
model to enable it.
|
|
157
|
+
|
|
152
158
|
Or use environment variables, named `KOLEGA_CODE_<ROLE>_PROVIDER` / `_MODEL` / `_EFFORT`:
|
|
153
159
|
|
|
154
160
|
```bash
|
|
@@ -156,6 +162,10 @@ Or use environment variables, named `KOLEGA_CODE_<ROLE>_PROVIDER` / `_MODEL` / `
|
|
|
156
162
|
export KOLEGA_CODE_INVESTIGATION_PROVIDER=deepseek
|
|
157
163
|
export KOLEGA_CODE_INVESTIGATION_MODEL=deepseek-v4-flash
|
|
158
164
|
export KOLEGA_CODE_INVESTIGATION_EFFORT=high
|
|
165
|
+
|
|
166
|
+
# Browser overrides must name a vision-capable model.
|
|
167
|
+
export KOLEGA_CODE_BROWSER_PROVIDER=anthropic
|
|
168
|
+
export KOLEGA_CODE_BROWSER_MODEL=claude-sonnet-4-6
|
|
159
169
|
```
|
|
160
170
|
|
|
161
171
|
Resolution order for a role (first match wins): **env var → saved Settings → the
|
|
@@ -32,6 +32,10 @@ agents (planning, building, investigation, general, browser) their own provider,
|
|
|
32
32
|
model, and effort. Leave a role on **Default** to inherit the active model. See
|
|
33
33
|
[Per-agent models](../providers-and-models/#per-agent-models).
|
|
34
34
|
|
|
35
|
+
The Browser role only accepts vision-capable model overrides. If it inherits a
|
|
36
|
+
non-vision active model, Settings allows the inheritance but warns that the browser
|
|
37
|
+
agent is unavailable until you choose a compatible Browser model.
|
|
38
|
+
|
|
35
39
|
The **Web Search** section configures the `web_search` tool. DuckDuckGo is the
|
|
36
40
|
default and needs no key. Firecrawl can also run without a key, with an optional
|
|
37
41
|
key for higher rate limits. Tavily requires a key, and SearXNG requires the base
|
|
@@ -5,6 +5,7 @@ from .baseagent import BaseAgent
|
|
|
5
5
|
from kolega_code.config import AgentConfig
|
|
6
6
|
from kolega_code.events import AgentConnectionManager
|
|
7
7
|
from kolega_code.llm.models import Message, TextBlock
|
|
8
|
+
from kolega_code.llm.specs import supports_vision as model_supports_vision
|
|
8
9
|
from .prompt_provider import AgentMode, AgentType, PromptExtension, PromptProvider
|
|
9
10
|
from .tools import ToolCollection
|
|
10
11
|
|
|
@@ -19,6 +20,19 @@ class BrowserAgent(BaseAgent):
|
|
|
19
20
|
|
|
20
21
|
agent_name = "browser-agent"
|
|
21
22
|
|
|
23
|
+
@classmethod
|
|
24
|
+
def validate_model_capabilities(cls, config: AgentConfig) -> None:
|
|
25
|
+
"""Require the resolved browser-agent model to accept image input."""
|
|
26
|
+
model_config = config.model_config_for_agent(cls.agent_name)
|
|
27
|
+
provider = getattr(model_config.provider, "value", model_config.provider)
|
|
28
|
+
if model_supports_vision(provider, model_config.model):
|
|
29
|
+
return
|
|
30
|
+
raise ValueError(
|
|
31
|
+
"BrowserAgent requires a vision-capable model, but "
|
|
32
|
+
f"{provider}/{model_config.model} does not support image input. "
|
|
33
|
+
"Configure a vision-capable model for the Browser agent."
|
|
34
|
+
)
|
|
35
|
+
|
|
22
36
|
def __init__(
|
|
23
37
|
self,
|
|
24
38
|
project_path: str | Path,
|
|
@@ -74,6 +88,7 @@ class BrowserAgent(BaseAgent):
|
|
|
74
88
|
usage_recorder: Optional callback for recording normalized LLM usage
|
|
75
89
|
sub_agent_recorder: Optional callback for persisting sub-agent conversation state
|
|
76
90
|
"""
|
|
91
|
+
self.validate_model_capabilities(config)
|
|
77
92
|
super().__init__(
|
|
78
93
|
project_path,
|
|
79
94
|
workspace_id,
|
|
@@ -45,6 +45,15 @@ If you are asked for links to assets such as images, do not answer from your mem
|
|
|
45
45
|
|
|
46
46
|
1. If a website has a cookie consent popup, avoid it. Try another website if you can.
|
|
47
47
|
2. Your search engine of choice is duckduckgo.com
|
|
48
|
+
3. Navigate with `browser_navigate`; it starts the browser session automatically.
|
|
49
|
+
4. Use `browser_snapshot` to understand the page. Prefer exact element refs such as `e12` from the snapshot
|
|
50
|
+
over manually invented selectors.
|
|
51
|
+
5. Every state-changing action returns an updated snapshot. Use the new refs from that result because refs can
|
|
52
|
+
become stale when the page changes.
|
|
53
|
+
6. On large pages, use `browser_find` to locate relevant snapshot nodes without loading the entire tree again.
|
|
54
|
+
7. Use `browser_take_screenshot` only for visual inspection. Do not choose interaction targets from screenshots.
|
|
55
|
+
8. Use explicit waits for visible or disappearing text when an application updates asynchronously.
|
|
56
|
+
9. If an action reports a dialog or file chooser, handle that modal before attempting another browser action.
|
|
48
57
|
|
|
49
58
|
## **CRITICAL: URL Navigation Guidelines**
|
|
50
59
|
|