kolega-code 0.38.0__tar.gz → 0.40.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.38.0 → kolega_code-0.40.0}/CHANGELOG.md +60 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/PKG-INFO +2 -1
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/__init__.py +1 -1
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/baseagent.py +85 -2
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/app.py +458 -84
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/gateway.py +76 -15
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/main.py +182 -95
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/messages.py +5 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/session_store.py +70 -19
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/settings.py +22 -13
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/theme.py +3 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/agent_runtime.py +11 -1
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/app_base.py +12 -2
- kolega_code-0.40.0/kolega_code/cli/tui/boot_splash.py +390 -0
- kolega_code-0.40.0/kolega_code/cli/tui/discovery.py +153 -0
- kolega_code-0.40.0/kolega_code/cli/tui/metadata.py +201 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/settings_panel.py +20 -10
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/settings_screen.py +32 -4
- kolega_code-0.40.0/kolega_code/cli/tui/shortcut_bar.py +271 -0
- kolega_code-0.40.0/kolega_code/cli/tui/startup.py +368 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/state.py +7 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/status_dashboard.py +52 -19
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/styles.tcss +79 -2
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/sub_agent_screen.py +2 -0
- kolega_code-0.40.0/kolega_code/cli/tui/task_list.py +95 -0
- kolega_code-0.40.0/kolega_code/cli/tui/tool_presentation.py +186 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/transcript.py +140 -72
- kolega_code-0.40.0/kolega_code/cli/tui/turn_status.py +92 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/widgets.py +149 -10
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/events.py +17 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/access.py +65 -10
- kolega_code-0.40.0/kolega_code/gateway/access_settings.py +67 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/adapters/base.py +10 -1
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/adapters/telegram/adapter.py +45 -24
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/config.py +16 -18
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/daemon.py +34 -7
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/projection.py +49 -0
- kolega_code-0.40.0/kolega_code/tool_subjects.py +686 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/assets/fold.js +15 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/assets/player.css +23 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/assets/player.js +11 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/pyproject.toml +3 -1
- {kolega_code-0.38.0 → kolega_code-0.40.0}/.gitignore +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/CONTRIBUTING.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/MIGRATION.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/README.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/RELEASING.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/manifest.json +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/deep-research/references/evidence-and-reporting.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/deep-research/references/gigacode-workflow.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/deep-research/scripts/deep-research.workflow +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/deep-research/scripts/materialize_report.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/humanizer/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/agent_factory.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/bridge.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/diffs.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/permissions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/plans.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/questions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/server.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/session.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/acp/usage.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/context.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/custom_agents.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/edit_protocols.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/bridge.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/bundle-requirements.in +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/env.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/js_kernel.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/kernel.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/prelude.js +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/prelude.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/protocol.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/py_kernel.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/runner.js +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/eval/runner.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/goal.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/handoff.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/model_routing.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/accounting.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/context.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_dump.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_overrides.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_exhausted.user.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_nudge.user.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/truncated_turn_nudge.user.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.system.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.user.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/mode_switch_notice.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/cli/worktree_control.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/coder_ask.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/coder_base.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/context_updates.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/system/includes/terminal_tools.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/apply_patch.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/ask_user_choice.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_click.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_close.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_console_messages.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_drag.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_drop.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_evaluate.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_file_upload.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_fill_form.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_find.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_handle_dialog.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_hover.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_navigate.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_navigate_back.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_network_request.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_network_requests.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_press_key.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_resize.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_scroll.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_select_option.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_snapshot.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_tabs.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_take_screenshot.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_type.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/browser_wait_for.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/build_backend.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/build_frontend.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/claude_edit.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/claude_write.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/dispatch_agent.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/edit.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/eval.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/exec_command.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/get_host.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/get_task_list.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/get_task_list_readonly.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/hashline_edit.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/hashline_write.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/kill_command.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/list_agents.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/list_sessions.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/list_subagent_models.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/list_workflow_runs.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/lsp.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/lsp_edit.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/multi_edit.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/read.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/read_image.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/resolve.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/run_workflow.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/send_message.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/set_goal.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/skill.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/snapshot.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/switch_worktree.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/update_task_list.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/web_fetch.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/web_search.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/write.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/write_plan.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/tools/write_stdin.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/session_metadata.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/network_status.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tool_definitions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/tools.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/agent/volatile_context.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/framing.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/installer.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/manager.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/multiplex.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/native_host.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/protocol.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/registry.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/browser_extension/runtime.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/acp.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/ask_output.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/atif_export.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/browser_backend.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/clipboard_image.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/config.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/cron.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/diagnostics.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/goal.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/loop.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/model_catalog.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/model_connection.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/peer_messaging.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/plan_artifacts.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/prompt_history.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/provider_registry.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/session_event_protocol.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/session_event_store.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/session_journal.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/session_usage.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/slash_commands.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/changes_screen.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/command_handlers.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/custom_model.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/loop_runtime.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/memory_screen.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/onboarding_screen.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/pacing.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/prompt_flows.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/session_diff.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/tui/terminal_display.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/config.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/extensions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/adapters/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/adapters/echo.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/adapters/telegram/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/adapters/telegram/formatting.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/bridge.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/commands.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/control_relay.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/event_router.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/questions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/redaction.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/router.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/service.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/sessions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/gateway/stt.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/git_env.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/client.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/exceptions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/instrumented_client.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/ledger.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/models.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/_token_encoding.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/anthropic.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/deepseek_responses.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/google.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/openai.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/perplexity_responses.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/responses_common.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/tinker.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/providers/tinker_trace.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/accessors.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/google.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/groq.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/openai.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/openrouter.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/perplexity_agent.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/thinking_machines.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/tinker.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/together.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/xai.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/catalog/zai.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/custom_endpoints.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/ollama_cloud_catalog.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/openrouter_catalog.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/perplexity_catalog.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/thinking.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/tinker_catalog.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/types.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/specs/validation.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/timeouts.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/llm/usage.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/local_state.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/config.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/oauth.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/service.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/state.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/tools.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/mcp/transport.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/identity.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/manager.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/manifest.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/markdown.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/models.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/protocol.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/memory/registry.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/permissions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/runtime.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/scratchpad.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/security/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/security/secrets.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/base.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/html.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/client.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/config.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/detector.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/diagnostics.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/edits.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/manager.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/registry.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/lsp/registry.yaml +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/snapshots.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/services/workspace_scan.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/control.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/inbox.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/inmemory.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/recording.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/runtime.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/session/store.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/testing/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/testing/store_conformance.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/tools/ask_user.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/tools/param_aliases.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/utils/images.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/__init__.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/assets/player.html +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/bundle.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/hosting.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/redaction.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/server.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/singlefile.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/web/theme_css.py +0 -0
- {kolega_code-0.38.0 → kolega_code-0.40.0}/kolega_code/worktrees.py +0 -0
|
@@ -6,6 +6,66 @@ This project uses GitHub Releases for detailed generated release notes. This fil
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.40.0 - 2026-09-18
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Faster, clearer startup.** A themed splash paints immediately while the
|
|
14
|
+
application loads, followed by a compact startup card with expandable details
|
|
15
|
+
that folds away when the conversation begins.
|
|
16
|
+
- **Resume recent sessions from the startup card.** Browse recent conversations
|
|
17
|
+
and resume them directly, with ownership checks to avoid opening a session
|
|
18
|
+
already in use.
|
|
19
|
+
- **Context-sensitive keyboard help.** A shortcut bar follows the focused widget,
|
|
20
|
+
and `F1` opens local help for the current context.
|
|
21
|
+
- **Optional discovery tips.** Fresh sessions can show dismissible tips covering
|
|
22
|
+
commands, settings, and workflows; enable them in Settings.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **More informative tool calls.** Tool headings include concise, sanitized
|
|
27
|
+
subjects such as file paths, commands, and search queries. Recorded sessions
|
|
28
|
+
and the web player retain those subjects too.
|
|
29
|
+
- **A more compact, readable TUI.** Session metadata, empty sidebar sections,
|
|
30
|
+
task lists, transcript paths, and command previews take less space. Build and
|
|
31
|
+
plan indicators have distinct colors, and working-state labels use a subtle
|
|
32
|
+
shimmer.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Startup-card disclosure preferences persist reliably across rapid toggles and
|
|
37
|
+
terminal resizes.
|
|
38
|
+
|
|
39
|
+
### Security
|
|
40
|
+
|
|
41
|
+
- Updated Soup Sieve to 2.9.2 to fix CVE-2026-86000 and CVE-2026-85999.
|
|
42
|
+
|
|
43
|
+
## 0.39.0 - 2026-09-15
|
|
44
|
+
|
|
45
|
+
### Security
|
|
46
|
+
|
|
47
|
+
- **Telegram gateway now fails closed.** Empty configured and persisted
|
|
48
|
+
allowlists no longer admit everyone: access is locked, or pairing-only when
|
|
49
|
+
explicitly enabled. Unknown senders cannot start sessions, run commands,
|
|
50
|
+
download attachments, or consume permission buttons. First-user pairing
|
|
51
|
+
requires local review of the numeric sender ID and approval of the code.
|
|
52
|
+
- **Strict access settings and running-policy diagnostics.** Malformed
|
|
53
|
+
restrictions produce actionable field-specific errors rather than permissive
|
|
54
|
+
defaults. Token-only setup warns when no operators are authorized; omitting
|
|
55
|
+
`--allow` preserves configured IDs, while `--allow ''` clears only that list.
|
|
56
|
+
Startup/status report the enforced access policy from the daemon heartbeat;
|
|
57
|
+
old snapshots without policy fields are explicitly unknown.
|
|
58
|
+
- **Migration required for formerly open gateways.** Restart old daemons after
|
|
59
|
+
upgrading; updating files alone does not change a running process. Configured
|
|
60
|
+
IDs and `gateway_allowlist.json` approvals remain a union, with no automatic
|
|
61
|
+
deletion of approvals or sessions. For exclusive-owner access, stop the
|
|
62
|
+
gateway, inspect both authorization sources, remove unwanted approvals,
|
|
63
|
+
configure the owner, and restart without deleting settings or credentials.
|
|
64
|
+
All admitted users remain trusted operators: `ask` prompts their chat, allows
|
|
65
|
+
them to approve their own tools, and does not prevent switching to `auto`;
|
|
66
|
+
admitted group participants share the chat's control surface. Local echo
|
|
67
|
+
smoke testing remains available without opening remote access.
|
|
68
|
+
|
|
9
69
|
## 0.38.0 - 2026-09-11
|
|
10
70
|
|
|
11
71
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kolega-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.40.0
|
|
4
4
|
Summary: Multi-agent coding in the terminal
|
|
5
5
|
Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
|
|
6
6
|
Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
|
|
@@ -61,6 +61,7 @@ Requires-Dist: pypdfium2==5.11.0
|
|
|
61
61
|
Requires-Dist: python-dotenv==1.2.2
|
|
62
62
|
Requires-Dist: pyyaml==6.0.3
|
|
63
63
|
Requires-Dist: readability-lxml==0.8.4.1
|
|
64
|
+
Requires-Dist: soupsieve==2.9.2
|
|
64
65
|
Requires-Dist: tavily-python==0.7.26
|
|
65
66
|
Requires-Dist: tenacity==9.1.4
|
|
66
67
|
Requires-Dist: textual==8.2.5
|
|
@@ -75,6 +75,7 @@ from kolega_code.services.base import TerminalManager, BrowserManager
|
|
|
75
75
|
from kolega_code.services.file_system import FileSystem, LocalFileSystem
|
|
76
76
|
from .tools import ToolCollection, ToolExtension # noqa: F401 - ToolCollection kept for downstream monkeypatching
|
|
77
77
|
from kolega_code.tools import ToolError
|
|
78
|
+
from kolega_code.tool_subjects import build_tool_display, build_tool_subject, configured_tool_subject_secrets
|
|
78
79
|
from .utils.commands import CommandProcessor
|
|
79
80
|
|
|
80
81
|
if TYPE_CHECKING:
|
|
@@ -829,12 +830,14 @@ class BaseAgent(LogMixin):
|
|
|
829
830
|
payload=delta.get("payload"),
|
|
830
831
|
)
|
|
831
832
|
tool_call_id = block.item_id or str(uuid.uuid4())
|
|
833
|
+
tool_subject = self._build_tool_subject(block.tool_label, block.action)
|
|
832
834
|
await self.send_chat_message(
|
|
833
835
|
message_type="tool_call",
|
|
834
836
|
content=f"Calling {block.tool_label}: {block.label()}",
|
|
835
837
|
is_streaming=False,
|
|
836
838
|
tool_description=block.tool_label,
|
|
837
839
|
tool_call_id=tool_call_id,
|
|
840
|
+
tool_subject=tool_subject,
|
|
838
841
|
)
|
|
839
842
|
await self.send_chat_message(
|
|
840
843
|
message_type="tool_result",
|
|
@@ -842,6 +845,7 @@ class BaseAgent(LogMixin):
|
|
|
842
845
|
is_streaming=False,
|
|
843
846
|
tool_description=block.tool_label,
|
|
844
847
|
tool_call_id=tool_call_id,
|
|
848
|
+
tool_subject=tool_subject,
|
|
845
849
|
)
|
|
846
850
|
|
|
847
851
|
def apply_goal(self, condition: Optional[str], prompt_extension: Optional["PromptExtension"] = None) -> None:
|
|
@@ -1396,9 +1400,37 @@ class BaseAgent(LogMixin):
|
|
|
1396
1400
|
def current_provider_tool_call_id(self, value):
|
|
1397
1401
|
self._current_provider_tool_call_id_var.set(value)
|
|
1398
1402
|
|
|
1403
|
+
def _build_tool_subject(self, tool_name: str, tool_input: object) -> str:
|
|
1404
|
+
"""Best-effort display metadata, using only this agent's available credentials."""
|
|
1405
|
+
try:
|
|
1406
|
+
return build_tool_subject(
|
|
1407
|
+
tool_name,
|
|
1408
|
+
tool_input,
|
|
1409
|
+
project_path=self.project_path,
|
|
1410
|
+
secret_values=configured_tool_subject_secrets(self.config),
|
|
1411
|
+
)
|
|
1412
|
+
except Exception:
|
|
1413
|
+
# No input/config/formatter failure should change tool execution.
|
|
1414
|
+
# Deliberately do not log the exception: it could contain credentials.
|
|
1415
|
+
return ""
|
|
1416
|
+
|
|
1417
|
+
def _build_tool_display(self, tool_name: str, tool_input: object) -> dict[str, list[str] | str]:
|
|
1418
|
+
"""Structured display metadata parallel to ``tool_subject``."""
|
|
1419
|
+
try:
|
|
1420
|
+
return build_tool_display(
|
|
1421
|
+
tool_name,
|
|
1422
|
+
tool_input,
|
|
1423
|
+
project_path=self.project_path,
|
|
1424
|
+
secret_values=configured_tool_subject_secrets(self.config),
|
|
1425
|
+
)
|
|
1426
|
+
except Exception:
|
|
1427
|
+
return {}
|
|
1428
|
+
|
|
1399
1429
|
async def execute_single_tool(self, tool_use_block: ToolCall) -> ToolResult:
|
|
1400
1430
|
"""Execute a single tool and return its result with metadata"""
|
|
1401
1431
|
tool_name = tool_use_block.name
|
|
1432
|
+
tool_subject = self._build_tool_subject(tool_name, tool_use_block.input)
|
|
1433
|
+
tool_display = self._build_tool_display(tool_name, tool_use_block.input)
|
|
1402
1434
|
inputs = (
|
|
1403
1435
|
{"input": tool_use_block.input}
|
|
1404
1436
|
if tool_use_block.input_kind == "freeform" and isinstance(tool_use_block.input, str)
|
|
@@ -1429,6 +1461,8 @@ class BaseAgent(LogMixin):
|
|
|
1429
1461
|
is_streaming=False,
|
|
1430
1462
|
tool_description=tool_name,
|
|
1431
1463
|
tool_call_id=tool_execution_id,
|
|
1464
|
+
tool_subject=tool_subject,
|
|
1465
|
+
tool_display=tool_display,
|
|
1432
1466
|
)
|
|
1433
1467
|
return ToolResult(
|
|
1434
1468
|
tool_use_id=provider_tool_call_id,
|
|
@@ -1465,6 +1499,8 @@ class BaseAgent(LogMixin):
|
|
|
1465
1499
|
is_streaming=False,
|
|
1466
1500
|
tool_description=tool_name,
|
|
1467
1501
|
tool_call_id=tool_execution_id,
|
|
1502
|
+
tool_subject=tool_subject,
|
|
1503
|
+
tool_display=tool_display,
|
|
1468
1504
|
)
|
|
1469
1505
|
return ToolResult(
|
|
1470
1506
|
tool_use_id=provider_tool_call_id,
|
|
@@ -1484,6 +1520,8 @@ class BaseAgent(LogMixin):
|
|
|
1484
1520
|
is_streaming=False,
|
|
1485
1521
|
tool_description=tool_name,
|
|
1486
1522
|
tool_call_id=tool_execution_id,
|
|
1523
|
+
tool_subject=tool_subject,
|
|
1524
|
+
tool_display=tool_display,
|
|
1487
1525
|
)
|
|
1488
1526
|
return ToolResult(
|
|
1489
1527
|
tool_use_id=provider_tool_call_id,
|
|
@@ -1501,9 +1539,18 @@ class BaseAgent(LogMixin):
|
|
|
1501
1539
|
target=tool_name,
|
|
1502
1540
|
)
|
|
1503
1541
|
if pre.blocked:
|
|
1504
|
-
return await self._blocked_tool_result(
|
|
1542
|
+
return await self._blocked_tool_result(
|
|
1543
|
+
tool_name,
|
|
1544
|
+
provider_tool_call_id,
|
|
1545
|
+
tool_execution_id,
|
|
1546
|
+
pre.reason,
|
|
1547
|
+
tool_subject=tool_subject,
|
|
1548
|
+
tool_display=tool_display,
|
|
1549
|
+
)
|
|
1505
1550
|
if pre.updated_input is not None:
|
|
1506
1551
|
inputs = pre.updated_input
|
|
1552
|
+
tool_subject = self._build_tool_subject(tool_name, inputs)
|
|
1553
|
+
tool_display = self._build_tool_display(tool_name, inputs)
|
|
1507
1554
|
|
|
1508
1555
|
# Send tool_call message to indicate we're starting execution
|
|
1509
1556
|
if not all(
|
|
@@ -1518,6 +1565,8 @@ class BaseAgent(LogMixin):
|
|
|
1518
1565
|
is_streaming=False,
|
|
1519
1566
|
tool_description=tool_name,
|
|
1520
1567
|
tool_call_id=tool_execution_id,
|
|
1568
|
+
tool_subject=tool_subject,
|
|
1569
|
+
tool_display=tool_display,
|
|
1521
1570
|
)
|
|
1522
1571
|
|
|
1523
1572
|
output = await registry.call(tool_name, **inputs)
|
|
@@ -1550,6 +1599,8 @@ class BaseAgent(LogMixin):
|
|
|
1550
1599
|
tool_description=tool_name,
|
|
1551
1600
|
tool_call_id=tool_execution_id,
|
|
1552
1601
|
images=images,
|
|
1602
|
+
tool_subject=tool_subject,
|
|
1603
|
+
tool_display=tool_display,
|
|
1553
1604
|
)
|
|
1554
1605
|
|
|
1555
1606
|
return ToolResult(
|
|
@@ -1572,6 +1623,8 @@ class BaseAgent(LogMixin):
|
|
|
1572
1623
|
is_streaming=False,
|
|
1573
1624
|
tool_description=tool_name,
|
|
1574
1625
|
tool_call_id=tool_execution_id,
|
|
1626
|
+
tool_subject=tool_subject,
|
|
1627
|
+
tool_display=tool_display,
|
|
1575
1628
|
)
|
|
1576
1629
|
|
|
1577
1630
|
return ToolResult(
|
|
@@ -1593,6 +1646,8 @@ class BaseAgent(LogMixin):
|
|
|
1593
1646
|
is_streaming=False,
|
|
1594
1647
|
tool_description=tool_name,
|
|
1595
1648
|
tool_call_id=tool_execution_id,
|
|
1649
|
+
tool_subject=tool_subject,
|
|
1650
|
+
tool_display=tool_display,
|
|
1596
1651
|
)
|
|
1597
1652
|
|
|
1598
1653
|
return ToolResult(
|
|
@@ -1641,6 +1696,8 @@ class BaseAgent(LogMixin):
|
|
|
1641
1696
|
is_streaming=False,
|
|
1642
1697
|
tool_description=block.name,
|
|
1643
1698
|
tool_call_id=execution_id,
|
|
1699
|
+
tool_subject=self._build_tool_subject(block.name, block.input),
|
|
1700
|
+
tool_display=self._build_tool_display(block.name, block.input),
|
|
1644
1701
|
)
|
|
1645
1702
|
results.append(
|
|
1646
1703
|
ToolResult(
|
|
@@ -1862,7 +1919,14 @@ class BaseAgent(LogMixin):
|
|
|
1862
1919
|
return output if isinstance(output, str) else str(output)
|
|
1863
1920
|
|
|
1864
1921
|
async def _blocked_tool_result(
|
|
1865
|
-
self,
|
|
1922
|
+
self,
|
|
1923
|
+
tool_name: str,
|
|
1924
|
+
provider_tool_call_id: str,
|
|
1925
|
+
tool_execution_id: str,
|
|
1926
|
+
reason: str,
|
|
1927
|
+
*,
|
|
1928
|
+
tool_subject: Optional[str] = None,
|
|
1929
|
+
tool_display: Optional[dict[str, list[str] | str]] = None,
|
|
1866
1930
|
) -> ToolResult:
|
|
1867
1931
|
"""Build the is_error ToolResult a blocked tool produces — identical to the
|
|
1868
1932
|
permission-deny path so the model and UI handle a hook block the same way."""
|
|
@@ -1876,6 +1940,8 @@ class BaseAgent(LogMixin):
|
|
|
1876
1940
|
is_streaming=False,
|
|
1877
1941
|
tool_description=tool_name,
|
|
1878
1942
|
tool_call_id=tool_execution_id,
|
|
1943
|
+
tool_subject=tool_subject,
|
|
1944
|
+
tool_display=tool_display,
|
|
1879
1945
|
)
|
|
1880
1946
|
return ToolResult(
|
|
1881
1947
|
tool_use_id=provider_tool_call_id,
|
|
@@ -1935,6 +2001,9 @@ class BaseAgent(LogMixin):
|
|
|
1935
2001
|
tool_description=None,
|
|
1936
2002
|
tool_call_id=None,
|
|
1937
2003
|
images: Optional[Sequence[Tuple[str, str]]] = None,
|
|
2004
|
+
*,
|
|
2005
|
+
tool_subject: Optional[str] = None,
|
|
2006
|
+
tool_display: Optional[dict[str, list[str] | str]] = None,
|
|
1938
2007
|
) -> None:
|
|
1939
2008
|
"""
|
|
1940
2009
|
Send a message to the chat interface.
|
|
@@ -1945,6 +2014,18 @@ class BaseAgent(LogMixin):
|
|
|
1945
2014
|
images: ``(media_type, base64_data)`` pairs a tool produced, so a
|
|
1946
2015
|
frontend can show the picture rather than a description of one
|
|
1947
2016
|
"""
|
|
2017
|
+
if tool_subject or tool_display:
|
|
2018
|
+
await self.emitter.chat(
|
|
2019
|
+
message_type,
|
|
2020
|
+
content,
|
|
2021
|
+
is_streaming=is_streaming,
|
|
2022
|
+
tool_description=tool_description,
|
|
2023
|
+
tool_call_id=tool_call_id,
|
|
2024
|
+
images=images,
|
|
2025
|
+
tool_subject=tool_subject,
|
|
2026
|
+
tool_display=tool_display,
|
|
2027
|
+
)
|
|
2028
|
+
return
|
|
1948
2029
|
await self.emitter.chat(
|
|
1949
2030
|
message_type,
|
|
1950
2031
|
content,
|
|
@@ -2109,6 +2190,8 @@ class BaseAgent(LogMixin):
|
|
|
2109
2190
|
is_streaming=False,
|
|
2110
2191
|
tool_description=tool_name,
|
|
2111
2192
|
tool_call_id=tool_execution_id,
|
|
2193
|
+
tool_subject=self._build_tool_subject(tool_name, tool_call_delta.get("input")),
|
|
2194
|
+
tool_display=self._build_tool_display(tool_name, tool_call_delta.get("input")),
|
|
2112
2195
|
)
|
|
2113
2196
|
|
|
2114
2197
|
def should_stop_after_tools(self) -> bool:
|