kolega-code 0.41.2__tar.gz → 0.41.3__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.41.2 → kolega_code-0.41.3}/CHANGELOG.md +21 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/PKG-INFO +5 -2
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/__init__.py +1 -1
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/app.py +8 -1
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/agent_runtime.py +11 -1
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/loop_runtime.py +2 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/settings_panel.py +94 -48
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/settings_screen.py +182 -13
- kolega_code-0.41.3/kolega_code/cli/tui/settings_widgets.py +24 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/styles.tcss +8 -2
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/widgets.py +9 -3
- {kolega_code-0.41.2 → kolega_code-0.41.3}/pyproject.toml +8 -2
- {kolega_code-0.41.2 → kolega_code-0.41.3}/.gitignore +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/CONTRIBUTING.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/MIGRATION.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/README.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/RELEASING.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/manifest.json +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/deep-research/references/evidence-and-reporting.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/deep-research/references/gigacode-workflow.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/deep-research/scripts/deep-research.workflow +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/deep-research/scripts/materialize_report.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/humanizer/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/agent_factory.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/bridge.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/diffs.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/permissions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/plans.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/questions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/server.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/session.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/acp/usage.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/baseagent.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/custom_agents.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/edit_protocols.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/bridge.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/bundle-requirements.in +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/env.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/js_kernel.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/kernel.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/prelude.js +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/prelude.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/protocol.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/py_kernel.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/runner.js +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/eval/runner.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/goal.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/handoff.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/model_routing.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/accounting.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/context.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_dump.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_overrides.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_exhausted.user.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_nudge.user.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/truncated_turn_nudge.user.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.system.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.user.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/mode_switch_notice.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/cli/worktree_control.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/coder_ask.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/coder_base.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/context_updates.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/system/includes/terminal_tools.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/apply_patch.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/ask_user_choice.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_click.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_close.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_console_messages.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_drag.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_drop.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_evaluate.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_file_upload.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_fill_form.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_find.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_handle_dialog.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_hover.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_navigate.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_navigate_back.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_network_request.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_network_requests.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_press_key.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_resize.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_scroll.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_select_option.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_snapshot.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_tabs.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_take_screenshot.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_type.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/browser_wait_for.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/build_backend.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/build_frontend.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/claude_edit.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/claude_write.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/dispatch_agent.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/edit.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/eval.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/exec_command.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/get_host.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/get_task_list.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/get_task_list_readonly.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/hashline_edit.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/hashline_write.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/kill_command.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/list_agents.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/list_sessions.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/list_subagent_models.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/list_workflow_runs.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/lsp.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/lsp_edit.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/multi_edit.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/read.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/read_image.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/resolve.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/run_workflow.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/send_message.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/set_goal.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/skill.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/snapshot.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/switch_worktree.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/update_task_list.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/web_fetch.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/web_search.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/write.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/write_plan.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/tools/write_stdin.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/session_metadata.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/network_status.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tool_definitions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/tools.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/agent/volatile_context.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/auth/chatgpt_oauth.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/framing.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/installer.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/manager.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/multiplex.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/native_host.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/protocol.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/registry.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/browser_extension/runtime.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/acp.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/ask_output.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/atif_export.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/browser_backend.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/clipboard_image.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/config.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/cron.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/diagnostics.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/gateway.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/goal.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/loop.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/main.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/messages.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/model_catalog.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/model_connection.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/peer_messaging.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/plan_artifacts.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/prompt_history.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/provider_registry.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/session_event_protocol.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/session_event_store.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/session_journal.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/session_store.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/session_usage.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/settings.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/slash_commands.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/app_base.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/boot_splash.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/changes_screen.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/command_handlers.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/custom_model.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/discovery.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/memory_screen.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/metadata.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/onboarding_screen.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/pacing.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/prompt_flows.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/session_diff.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/shortcut_bar.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/startup.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/state.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/status_dashboard.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/task_list.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/terminal_display.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/tool_presentation.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/transcript.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/tui/turn_status.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/config.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/events.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/extensions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/access.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/access_settings.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/adapters/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/adapters/base.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/adapters/echo.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/adapters/telegram/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/adapters/telegram/adapter.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/adapters/telegram/formatting.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/bridge.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/commands.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/config.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/control_relay.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/daemon.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/event_router.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/questions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/redaction.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/router.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/service.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/sessions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/gateway/stt.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/git_env.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/client.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/exceptions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/ledger.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/models.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/_token_encoding.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/anthropic.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/deepseek_responses.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/google.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/openai.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/perplexity_responses.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/responses_common.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/tinker.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/providers/tinker_trace.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/accessors.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/google.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/groq.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/openai.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/openrouter.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/perplexity_agent.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/thinking_machines.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/tinker.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/together.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/xai.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/catalog/zai.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/custom_endpoints.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/ollama_cloud_catalog.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/openrouter_catalog.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/perplexity_catalog.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/thinking.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/tinker_catalog.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/types.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/specs/validation.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/timeouts.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/llm/usage.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/local_state.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/config.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/oauth.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/service.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/state.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/tools.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/mcp/transport.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/identity.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/manager.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/manifest.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/markdown.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/models.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/protocol.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/memory/registry.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/permissions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/runtime.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/scratchpad.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/security/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/security/secrets.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/base.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/html.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/client.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/config.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/detector.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/diagnostics.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/edits.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/manager.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/registry.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/lsp/registry.yaml +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/snapshots.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/services/workspace_scan.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/control.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/inbox.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/inmemory.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/projection.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/recording.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/runtime.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/session/store.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/testing/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/testing/store_conformance.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tool_subjects.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tools/ask_user.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tools/param_aliases.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/utils/images.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/__init__.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/assets/fold.js +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/assets/player.css +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/assets/player.html +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/assets/player.js +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/bundle.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/hosting.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/redaction.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/server.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/singlefile.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/web/theme_css.py +0 -0
- {kolega_code-0.41.2 → kolega_code-0.41.3}/kolega_code/worktrees.py +0 -0
|
@@ -6,6 +6,27 @@ This project uses GitHub Releases for detailed generated release notes. This fil
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.41.3 - 2026-10-05
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- The Settings screen no longer loses unsaved work. Leaving a section or
|
|
14
|
+
closing Settings with pending MCP server edits now offers Save, Discard, or
|
|
15
|
+
Keep Editing, and a failed save or verification keeps the form exactly as
|
|
16
|
+
entered, including values the form does not expose (connection timeouts,
|
|
17
|
+
OAuth fields).
|
|
18
|
+
- Scrolling inside a Settings dropdown no longer scrolls the page beneath it,
|
|
19
|
+
and choosing an option keeps the page position and focus stable.
|
|
20
|
+
- Saving Settings or switching modes while an agent turn is running no longer
|
|
21
|
+
disrupts the active turn; queued turns are deferred and preserved.
|
|
22
|
+
- Tool titles containing a trailing backslash or an unmatched square bracket no
|
|
23
|
+
longer crash the transcript renderer.
|
|
24
|
+
|
|
25
|
+
### Security
|
|
26
|
+
|
|
27
|
+
- Updated PyJWT to 2.15.0, urllib3 to 2.8.0, and virtualenv to 21.7.13 to
|
|
28
|
+
close known CVEs in those dependencies.
|
|
29
|
+
|
|
9
30
|
## 0.41.2 - 2026-09-30
|
|
10
31
|
|
|
11
32
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kolega-code
|
|
3
|
-
Version: 0.41.
|
|
3
|
+
Version: 0.41.3
|
|
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/
|
|
@@ -35,7 +35,7 @@ Requires-Dist: cryptography==48.0.1; sys_platform == 'darwin' and platform_machi
|
|
|
35
35
|
Requires-Dist: cryptography==50.0.0; sys_platform != 'darwin' or platform_machine != 'x86_64'
|
|
36
36
|
Requires-Dist: ddgs==9.14.4
|
|
37
37
|
Requires-Dist: fastapi==0.139.2
|
|
38
|
-
Requires-Dist: filelock==3.
|
|
38
|
+
Requires-Dist: filelock==3.24.2
|
|
39
39
|
Requires-Dist: firecrawl-py==4.28.2
|
|
40
40
|
Requires-Dist: google-genai==2.12.1
|
|
41
41
|
Requires-Dist: httpx==0.28.1
|
|
@@ -57,6 +57,7 @@ Requires-Dist: playwright==1.59.0
|
|
|
57
57
|
Requires-Dist: psutil==7.2.2
|
|
58
58
|
Requires-Dist: pydantic==2.13.4
|
|
59
59
|
Requires-Dist: pygments==2.20.0
|
|
60
|
+
Requires-Dist: pyjwt==2.15.0
|
|
60
61
|
Requires-Dist: pypdfium2==5.11.0
|
|
61
62
|
Requires-Dist: python-dotenv==1.2.2
|
|
62
63
|
Requires-Dist: pyyaml==6.0.3
|
|
@@ -67,6 +68,7 @@ Requires-Dist: tenacity==9.1.4
|
|
|
67
68
|
Requires-Dist: textual==8.2.5
|
|
68
69
|
Requires-Dist: tiktoken==0.12.0
|
|
69
70
|
Requires-Dist: trafilatura==2.0.0
|
|
71
|
+
Requires-Dist: urllib3==2.8.0
|
|
70
72
|
Requires-Dist: uvicorn==0.49.0
|
|
71
73
|
Requires-Dist: websockets==16.0
|
|
72
74
|
Provides-Extra: cli
|
|
@@ -80,6 +82,7 @@ Requires-Dist: pytest-xdist==3.8.0; extra == 'dev'
|
|
|
80
82
|
Requires-Dist: pytest==9.0.3; extra == 'dev'
|
|
81
83
|
Requires-Dist: ruff==0.15.12; extra == 'dev'
|
|
82
84
|
Requires-Dist: twine==6.2.0; extra == 'dev'
|
|
85
|
+
Requires-Dist: virtualenv==21.7.13; extra == 'dev'
|
|
83
86
|
Provides-Extra: tinker
|
|
84
87
|
Requires-Dist: tinker-cookbook==0.5.4; extra == 'tinker'
|
|
85
88
|
Requires-Dist: tinker==0.25.0; extra == 'tinker'
|
|
@@ -1373,7 +1373,11 @@ class KolegaCodeApp(
|
|
|
1373
1373
|
event.composer.load_text("")
|
|
1374
1374
|
self._pending_image_attachments.clear()
|
|
1375
1375
|
self._clear_composer_hint()
|
|
1376
|
-
if
|
|
1376
|
+
if (
|
|
1377
|
+
self._turn_active
|
|
1378
|
+
or self.agent_worker is not None
|
|
1379
|
+
or (self._settings_screen is not None and self._settings_screen.mcp_busy)
|
|
1380
|
+
):
|
|
1377
1381
|
self._queue_user_message(text, attachments)
|
|
1378
1382
|
return
|
|
1379
1383
|
self._add_conversation_entry(tui_state.ConversationEntry(kind="user", content=text))
|
|
@@ -1559,6 +1563,9 @@ class KolegaCodeApp(
|
|
|
1559
1563
|
pass
|
|
1560
1564
|
|
|
1561
1565
|
def _mode_switch_blocked(self) -> bool:
|
|
1566
|
+
if self._settings_screen is not None and self._settings_screen.mcp_busy:
|
|
1567
|
+
self._notify_user("Wait for the MCP operation to finish before switching modes.", severity="warning")
|
|
1568
|
+
return True
|
|
1562
1569
|
if self._pending_approval is not None:
|
|
1563
1570
|
self._set_composer_status(messages.APPROVAL_PLACEHOLDER)
|
|
1564
1571
|
self._notify_user(messages.BLOCK_PENDING_APPROVAL, severity="warning")
|
|
@@ -926,6 +926,9 @@ class AgentRuntimeMixin(tui_app_base.KolegaAppBase):
|
|
|
926
926
|
self._maybe_start_queued_message()
|
|
927
927
|
|
|
928
928
|
def _maybe_start_queued_message(self) -> bool:
|
|
929
|
+
settings_screen = getattr(self, "_settings_screen", None)
|
|
930
|
+
if settings_screen is not None and settings_screen.mcp_busy:
|
|
931
|
+
return False
|
|
929
932
|
if self._startup_pending or not self._queued_messages or self.agent is None:
|
|
930
933
|
return False
|
|
931
934
|
if self._turn_active or self.agent_worker is not None:
|
|
@@ -1238,7 +1241,14 @@ class AgentRuntimeMixin(tui_app_base.KolegaAppBase):
|
|
|
1238
1241
|
self.session.config = config_summary(config)
|
|
1239
1242
|
await self._save_session_async()
|
|
1240
1243
|
try:
|
|
1241
|
-
|
|
1244
|
+
settings_screen = getattr(self, "_settings_screen", None)
|
|
1245
|
+
await self._build_agent(
|
|
1246
|
+
config,
|
|
1247
|
+
rebuild=rebuild,
|
|
1248
|
+
# Peer messages may arrive while an MCP operation awaits OAuth
|
|
1249
|
+
# or a remote server. Resume them against the rebuilt agent.
|
|
1250
|
+
preserve_queued=settings_screen is not None and settings_screen.mcp_busy,
|
|
1251
|
+
)
|
|
1242
1252
|
except KolegaExtensionLoadError as exc:
|
|
1243
1253
|
# The failed generation was already reclaimed by _build_agent; there
|
|
1244
1254
|
# is no live agent, so surface the error instead of crashing the
|
|
@@ -216,8 +216,10 @@ class LoopRuntimeMixin(tui_app_base.KolegaAppBase):
|
|
|
216
216
|
|
|
217
217
|
def _loop_ready_to_fire(self) -> bool:
|
|
218
218
|
"""Whether the app is idle enough to start a scheduled iteration."""
|
|
219
|
+
settings_screen = getattr(self, "_settings_screen", None)
|
|
219
220
|
return (
|
|
220
221
|
self.agent is not None
|
|
222
|
+
and not (settings_screen is not None and settings_screen.mcp_busy)
|
|
221
223
|
and not self._loop_iteration_active
|
|
222
224
|
and not self._turn_active
|
|
223
225
|
and self.agent_worker is None
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import asyncio
|
|
5
6
|
import json
|
|
6
7
|
import os
|
|
7
8
|
import re
|
|
@@ -49,7 +50,7 @@ from kolega_code.mcp.config import (
|
|
|
49
50
|
remove_server_config,
|
|
50
51
|
upsert_server_config,
|
|
51
52
|
)
|
|
52
|
-
from kolega_code.mcp.service import MCPService, mcp_tool_name_adjustment_note
|
|
53
|
+
from kolega_code.mcp.service import MCPService, MCPVerificationResult, mcp_tool_name_adjustment_note
|
|
53
54
|
from kolega_code.mcp.state import MCPStatusStore, MCPOAuthTokenStore
|
|
54
55
|
|
|
55
56
|
from .. import messages, theme
|
|
@@ -416,8 +417,15 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
416
417
|
self._update_endpoint_field_visibility()
|
|
417
418
|
return
|
|
418
419
|
|
|
420
|
+
if select_id and select_id.startswith("mcp_") and event.select.value != event.value:
|
|
421
|
+
return # Ignore queued values superseded by form loading or picker restoration.
|
|
422
|
+
|
|
419
423
|
if select_id == "mcp_server_select":
|
|
420
|
-
self
|
|
424
|
+
screen = getattr(self, "_settings_screen", None)
|
|
425
|
+
if screen is not None:
|
|
426
|
+
screen.request_mcp_selection(str(event.value))
|
|
427
|
+
else:
|
|
428
|
+
self._populate_mcp_server_form(str(event.value))
|
|
421
429
|
return
|
|
422
430
|
|
|
423
431
|
if select_id == "mcp_transport_select":
|
|
@@ -1444,7 +1452,7 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1444
1452
|
self.config.mcp_config = config
|
|
1445
1453
|
return config
|
|
1446
1454
|
|
|
1447
|
-
def _populate_mcp_controls(self) -> None:
|
|
1455
|
+
def _populate_mcp_controls(self, *, preserve_form: bool = False) -> None:
|
|
1448
1456
|
"""Seed the MCP settings controls from global/trusted project config and status."""
|
|
1449
1457
|
try:
|
|
1450
1458
|
config = self._load_mcp_config_for_ui()
|
|
@@ -1462,7 +1470,8 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1462
1470
|
selected = MCP_NEW_SERVER_VALUE
|
|
1463
1471
|
server_select.set_options(options)
|
|
1464
1472
|
server_select.value = selected
|
|
1465
|
-
|
|
1473
|
+
if not preserve_form:
|
|
1474
|
+
self._populate_mcp_server_form(selected)
|
|
1466
1475
|
self._update_mcp_status_text(config)
|
|
1467
1476
|
|
|
1468
1477
|
def _mcp_server_option_label(self, server: MCPServerConfig) -> str:
|
|
@@ -1509,6 +1518,9 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1509
1518
|
set_input("mcp_cwd_input", "")
|
|
1510
1519
|
self._set_mcp_source_hint("Create or update a user MCP server in the global state config.")
|
|
1511
1520
|
self._update_mcp_transport_fields("streamable_http")
|
|
1521
|
+
screen = getattr(self, "_settings_screen", None)
|
|
1522
|
+
if screen is not None:
|
|
1523
|
+
screen.mark_mcp_clean(server_id)
|
|
1512
1524
|
return
|
|
1513
1525
|
|
|
1514
1526
|
set_input("mcp_name_input", server.name or "")
|
|
@@ -1534,6 +1546,9 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1534
1546
|
else:
|
|
1535
1547
|
self._set_mcp_source_hint("This server is stored in your global MCP config.")
|
|
1536
1548
|
self._update_mcp_transport_fields(server.transport)
|
|
1549
|
+
screen = getattr(self, "_settings_screen", None)
|
|
1550
|
+
if screen is not None:
|
|
1551
|
+
screen.mark_mcp_clean(server_id, read_only=server.source == "project")
|
|
1537
1552
|
|
|
1538
1553
|
def _update_mcp_oauth_fields(self, visible: bool) -> None:
|
|
1539
1554
|
for widget_id in (
|
|
@@ -1626,6 +1641,11 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1626
1641
|
except NoMatches:
|
|
1627
1642
|
pass
|
|
1628
1643
|
|
|
1644
|
+
def _set_mcp_feedback(self, message: str) -> None:
|
|
1645
|
+
screen = getattr(self, "_settings_screen", None)
|
|
1646
|
+
if screen is not None:
|
|
1647
|
+
screen.set_mcp_feedback(message)
|
|
1648
|
+
|
|
1629
1649
|
def _slug_mcp_server_id(self, value: str) -> str:
|
|
1630
1650
|
slug = re.sub(r"[^A-Za-z0-9_-]+", "-", value.strip().lower())
|
|
1631
1651
|
slug = re.sub(r"-+", "-", slug).strip("-_")
|
|
@@ -1740,50 +1760,41 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1740
1760
|
except NoMatches:
|
|
1741
1761
|
pass
|
|
1742
1762
|
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1763
|
+
# Overlay only the editor's fields on the saved model. Connection timeouts
|
|
1764
|
+
# and OAuth client metadata have no controls and must survive every save.
|
|
1765
|
+
payload: dict[str, Any] = {}
|
|
1766
|
+
oauth_payload: dict[str, Any] = {}
|
|
1747
1767
|
if selected != MCP_NEW_SERVER_VALUE:
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
redirect_uri=oauth_redirect_uri,
|
|
1765
|
-
scope=oauth_scope,
|
|
1766
|
-
token_endpoint_auth_method=oauth_auth_method,
|
|
1767
|
-
client_name=client_name,
|
|
1768
|
-
client_uri=client_uri,
|
|
1769
|
-
client_metadata_url=client_metadata_url,
|
|
1770
|
-
timeout_seconds=timeout_seconds,
|
|
1771
|
-
)
|
|
1772
|
-
|
|
1773
|
-
return MCPServerConfig(
|
|
1768
|
+
existing = self._load_mcp_config_for_ui().servers.get(selected)
|
|
1769
|
+
if existing is None:
|
|
1770
|
+
raise ValueError("This MCP server no longer exists. Reload before saving.")
|
|
1771
|
+
payload = existing.model_dump()
|
|
1772
|
+
oauth_payload = existing.oauth.model_dump()
|
|
1773
|
+
if http:
|
|
1774
|
+
oauth_payload.update(
|
|
1775
|
+
client_id=oauth_client_id,
|
|
1776
|
+
client_secret=oauth_client_secret,
|
|
1777
|
+
client_secret_env=oauth_client_secret_env,
|
|
1778
|
+
redirect_uri=oauth_redirect_uri,
|
|
1779
|
+
scope=oauth_scope,
|
|
1780
|
+
token_endpoint_auth_method=oauth_auth_method,
|
|
1781
|
+
)
|
|
1782
|
+
oauth_payload["enabled"] = oauth_enabled
|
|
1783
|
+
payload.update(
|
|
1774
1784
|
id=server_id,
|
|
1775
1785
|
name=name,
|
|
1776
1786
|
transport=transport,
|
|
1777
1787
|
enabled=enabled,
|
|
1778
1788
|
url=url,
|
|
1779
1789
|
headers=headers,
|
|
1780
|
-
oauth=
|
|
1790
|
+
oauth=MCPOAuthConfig.model_validate(oauth_payload),
|
|
1781
1791
|
command=command,
|
|
1782
1792
|
args=args,
|
|
1783
1793
|
env=env,
|
|
1784
1794
|
cwd=cwd,
|
|
1785
1795
|
source="global",
|
|
1786
1796
|
)
|
|
1797
|
+
return MCPServerConfig.model_validate(payload)
|
|
1787
1798
|
|
|
1788
1799
|
def _parse_mcp_json_object(self, value: str, label: str) -> dict[str, str]:
|
|
1789
1800
|
if not value:
|
|
@@ -1813,6 +1824,10 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1813
1824
|
if button_id == "mcp_save_server":
|
|
1814
1825
|
await self._save_mcp_server_from_ui()
|
|
1815
1826
|
return True
|
|
1827
|
+
if button_id == "mcp_save_verify_server":
|
|
1828
|
+
if await self._save_mcp_server_from_ui(rebuild=False):
|
|
1829
|
+
await self._verify_mcp_server_from_ui(just_saved=True)
|
|
1830
|
+
return True
|
|
1816
1831
|
if button_id == "mcp_delete_server":
|
|
1817
1832
|
await self._delete_mcp_server_from_ui()
|
|
1818
1833
|
return True
|
|
@@ -1825,13 +1840,19 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1825
1840
|
return False
|
|
1826
1841
|
|
|
1827
1842
|
def _selected_mcp_server_id(self) -> str:
|
|
1843
|
+
screen = getattr(self, "_settings_screen", None)
|
|
1844
|
+
if screen is not None:
|
|
1845
|
+
return screen.mcp_server_id
|
|
1828
1846
|
try:
|
|
1829
1847
|
value = self._settings_query_one("#mcp_server_select", Select).value
|
|
1830
1848
|
except NoMatches:
|
|
1831
1849
|
return MCP_NEW_SERVER_VALUE
|
|
1832
1850
|
return MCP_NEW_SERVER_VALUE if value is Select.NULL else str(value)
|
|
1833
1851
|
|
|
1834
|
-
async def _save_mcp_server_from_ui(self) ->
|
|
1852
|
+
async def _save_mcp_server_from_ui(self, *, rebuild: bool = True) -> bool:
|
|
1853
|
+
if self._turn_active or self.agent_worker is not None:
|
|
1854
|
+
self._set_mcp_status("Stop the active turn before changing MCP servers.", "warning")
|
|
1855
|
+
return False
|
|
1835
1856
|
selected = self._selected_mcp_server_id()
|
|
1836
1857
|
try:
|
|
1837
1858
|
server = self._collect_mcp_server_from_ui()
|
|
@@ -1844,18 +1865,27 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1844
1865
|
self._set_mcp_status(
|
|
1845
1866
|
"Project MCP servers are read-only in the TUI; edit .kolega/mcp_servers.json.", "warning"
|
|
1846
1867
|
)
|
|
1847
|
-
return
|
|
1868
|
+
return False
|
|
1848
1869
|
path = global_mcp_config_path(self.settings_store.root)
|
|
1849
1870
|
if selected != MCP_NEW_SERVER_VALUE and selected != server.id:
|
|
1850
1871
|
remove_server_config(path, selected, source="global")
|
|
1851
1872
|
upsert_server_config(path, server, source="global")
|
|
1852
1873
|
except (MCPConfigError, ValueError) as exc:
|
|
1853
1874
|
self._set_mcp_status(str(exc), "error")
|
|
1854
|
-
return
|
|
1875
|
+
return False
|
|
1876
|
+
except OSError:
|
|
1877
|
+
self._set_mcp_status("Could not save MCP configuration. Check file permissions and try again.", "error")
|
|
1878
|
+
return False
|
|
1855
1879
|
self._mcp_selected_server_id = server.id
|
|
1856
|
-
self
|
|
1857
|
-
|
|
1880
|
+
screen = getattr(self, "_settings_screen", None)
|
|
1881
|
+
if screen is not None:
|
|
1882
|
+
screen.mark_mcp_clean(server.id, message="Saved. Verification has not been run by this action.")
|
|
1883
|
+
self._populate_mcp_controls(preserve_form=True)
|
|
1884
|
+
self._set_mcp_source_hint("This server is stored in your global MCP config.")
|
|
1885
|
+
if rebuild:
|
|
1886
|
+
await self._ensure_agent_from_settings(rebuild=True)
|
|
1858
1887
|
self._notify_user(f"Saved MCP server '{server.id}'.")
|
|
1888
|
+
return True
|
|
1859
1889
|
|
|
1860
1890
|
async def _delete_mcp_server_from_ui(self) -> None:
|
|
1861
1891
|
selected = self._selected_mcp_server_id()
|
|
@@ -1884,7 +1914,13 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1884
1914
|
await self._ensure_agent_from_settings(rebuild=True)
|
|
1885
1915
|
self._notify_user(f"Deleted MCP server '{selected}'.")
|
|
1886
1916
|
|
|
1887
|
-
async def _verify_mcp_server_from_ui(self) -> None:
|
|
1917
|
+
async def _verify_mcp_server_from_ui(self, *, just_saved: bool = False) -> None:
|
|
1918
|
+
screen = getattr(self, "_settings_screen", None)
|
|
1919
|
+
if screen is not None and screen.mcp_dirty:
|
|
1920
|
+
self._set_mcp_status(
|
|
1921
|
+
"Unsaved server changes. Use Save & Verify to test the displayed configuration.", "warning"
|
|
1922
|
+
)
|
|
1923
|
+
return
|
|
1888
1924
|
selected = self._selected_mcp_server_id()
|
|
1889
1925
|
if selected == MCP_NEW_SERVER_VALUE:
|
|
1890
1926
|
self._set_mcp_status("Select a configured MCP server to verify.", "warning")
|
|
@@ -1892,16 +1928,25 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1892
1928
|
self._set_mcp_status(
|
|
1893
1929
|
f"Verifying MCP server '{selected}'... stdio servers execute their configured command.", "warning"
|
|
1894
1930
|
)
|
|
1931
|
+
self._set_mcp_feedback("Saved. Verifying…" if just_saved else "Verifying saved configuration…")
|
|
1895
1932
|
config = self._load_mcp_config_for_ui()
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1933
|
+
try:
|
|
1934
|
+
result = await MCPService(config, self.settings_store.root, self.project_path).verify_server(
|
|
1935
|
+
selected,
|
|
1936
|
+
interactive_oauth=True,
|
|
1937
|
+
open_browser=True,
|
|
1938
|
+
output=self.console,
|
|
1939
|
+
)
|
|
1940
|
+
except asyncio.CancelledError:
|
|
1941
|
+
self._set_mcp_feedback("Configuration remains saved. Verification was cancelled.")
|
|
1942
|
+
raise
|
|
1943
|
+
except Exception:
|
|
1944
|
+
# Do not echo arbitrary transport exceptions: they may contain credentials.
|
|
1945
|
+
result = MCPVerificationResult(selected, False, "Verification could not complete. Try again.")
|
|
1946
|
+
self._update_mcp_status_text()
|
|
1903
1947
|
await self._ensure_agent_from_settings(rebuild=True)
|
|
1904
1948
|
if result.ok:
|
|
1949
|
+
self._set_mcp_feedback("Saved and verified." if just_saved else "Saved configuration verified.")
|
|
1905
1950
|
message = f"Verified MCP server '{selected}' ({result.tool_count} tool(s))."
|
|
1906
1951
|
if result.status is not None:
|
|
1907
1952
|
note = mcp_tool_name_adjustment_note(selected, result.status.tools)
|
|
@@ -1909,6 +1954,7 @@ class SettingsPanelMixin(tui_app_base.KolegaAppBase):
|
|
|
1909
1954
|
message = f"{message} {note}"
|
|
1910
1955
|
self._notify_user(message)
|
|
1911
1956
|
else:
|
|
1957
|
+
self._set_mcp_feedback(f"Saved, but verification failed. {result.message}")
|
|
1912
1958
|
self._notify_user(f"MCP verification failed for '{selected}': {result.message}", severity="warning")
|
|
1913
1959
|
|
|
1914
1960
|
def _clear_mcp_tokens_from_ui(self) -> None:
|