kolega-code 0.26.3__tar.gz → 0.26.5__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.26.3 → kolega_code-0.26.5}/CHANGELOG.md +21 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/PKG-INFO +1 -1
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/__init__.py +1 -1
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/__init__.py +1 -1
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/baseagent.py +1 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/context.py +2 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/terminal_tool.py +1 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/think_hard_tool.py +2 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch_tool.py +1 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/client.py +24 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/instrumented_client.py +4 -1
- kolega_code-0.26.5/kolega_code/llm/providers/deepseek_responses.py +66 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/responses_common.py +40 -2
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/deepseek.py +6 -1
- {kolega_code-0.26.3 → kolega_code-0.26.5}/pyproject.toml +1 -1
- {kolega_code-0.26.3 → kolega_code-0.26.5}/.gitignore +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/CONTRIBUTING.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/MIGRATION.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/README.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/RELEASING.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/manifest.json +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/deep-research/references/evidence-and-reporting.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/deep-research/references/gigacode-workflow.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/deep-research/scripts/deep-research.workflow +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/deep-research/scripts/materialize_report.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/humanizer/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/browseragent.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/coder.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/common.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/compression.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/conversation.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/custom_agents.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/edit_protocols.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/errors.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/bridge.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/bundle-requirements.in +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/env.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/js_kernel.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/kernel.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/prelude.js +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/prelude.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/protocol.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/py_kernel.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/runner.js +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/eval/runner.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/generalagent.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/goal.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/investigationagent.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/model_routing.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/accounting.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/budget.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/context.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/errors.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/executor.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/guide.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/journal.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/runtime.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/orchestration/types.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/planningagent.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_dump.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_overrides.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_provider.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/cli/worktree_control.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/context_updates.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/prompts.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/base_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/build_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/tools.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/utils/commands.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/agent/volatile_context.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/auth/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/auth/_jwt.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/auth/chatgpt_oauth.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/auth/constants.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/auth/tokens.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/framing.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/installer.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/manager.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/multiplex.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/native_host.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/protocol.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/registry.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/browser_extension/runtime.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/app.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/browser_backend.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/clipboard_image.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/config.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/connection.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/cron.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/diagnostics.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/file_index.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/goal.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/loop.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/main.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/mentions.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/messages.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/model_catalog.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/model_connection.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/plan_artifacts.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/provider_registry.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/session_event_store.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/session_journal.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/session_store.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/settings.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/skills.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/slash_commands.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/theme.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/agent_runtime.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/app_base.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/changes_screen.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/command_handlers.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/constants.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/custom_model.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/loop_runtime.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/memory_screen.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/onboarding_screen.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/prompt_flows.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/session_diff.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/settings_panel.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/settings_screen.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/state.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/status_dashboard.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/styles.tcss +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/terminal_display.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/transcript.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/tui/widgets.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/cli/updater.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/config.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/events.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/git_env.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/backends.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/config.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/dispatcher.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/events.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/matcher.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/hooks/outcome.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/exceptions.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/models.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/anthropic.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/base.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/google.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/models.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/openai.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/providers/openai_responses.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/ratelimit.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/accessors.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/google.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/openai.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/openrouter.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/together.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/xai.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/catalog/zai.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/openrouter_catalog.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/thinking.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/specs/types.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/timeouts.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/llm/tool_execution_ids.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/local_state.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/config.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/oauth.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/service.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/state.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/tools.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/mcp/transport.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/identity.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/manager.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/manifest.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/markdown.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/models.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/protocol.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/memory/registry.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/models/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/models/sandbox_terminal_state.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/permissions.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/runtime.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/README.md +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/async_filesystem.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/base.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/browser.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/event_loop.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/filesystem.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/local.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/serializer.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/terminal.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/sandbox/utils.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/scratchpad.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/security/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/security/secrets.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/base.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/browser.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/file_system.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/html.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/client.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/config.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/detector.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/diagnostics.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/edits.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/manager.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/registry.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/lsp/registry.yaml +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/snapshots.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/terminal.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/terminal_buffer.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/services/workspace_scan.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/control.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/inmemory.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/projection.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/recording.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/runtime.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/session/store.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/testing/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/testing/store_conformance.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/tools/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/tools/core.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/tools/definitions.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/tools/registry.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/utils/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/utils/images.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/__init__.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/assets/fold.js +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/assets/player.css +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/assets/player.html +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/assets/player.js +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/bundle.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/hosting.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/redaction.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/server.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/singlefile.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/web/theme_css.py +0 -0
- {kolega_code-0.26.3 → kolega_code-0.26.5}/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.26.5 - 2026-08-02
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- DeepSeek `deepseek-v4-flash` on the Responses API no longer crashes mid-task
|
|
14
|
+
with a 400 "No tool output found for tool call ..." when the model returns tool
|
|
15
|
+
calls together with assistant text. The text was serialized between the tool
|
|
16
|
+
calls and their outputs, which DeepSeek rejects; it is now emitted before the
|
|
17
|
+
calls so each call's output stays adjacent. Tool calls are also defensively
|
|
18
|
+
guaranteed a matching output on replay.
|
|
19
|
+
|
|
20
|
+
## 0.26.4 - 2026-08-02
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- `deepseek-v4-flash` now connects over DeepSeek's **Responses API**
|
|
25
|
+
(`https://api.deepseek.com`) for its native tool-calling format and graded
|
|
26
|
+
reasoning effort. Every other DeepSeek model (including `deepseek-v4-pro`)
|
|
27
|
+
continues to use the OpenAI-compatible Chat Completions endpoint. This is a
|
|
28
|
+
per-model routing decision; no configuration change is required.
|
|
29
|
+
|
|
9
30
|
## 0.26.3 - 2026-08-02
|
|
10
31
|
|
|
11
32
|
### Added
|
|
@@ -1399,6 +1399,7 @@ class BaseAgent(LogMixin):
|
|
|
1399
1399
|
client = LLMClient(
|
|
1400
1400
|
provider=model_config.provider.value,
|
|
1401
1401
|
api_key=self.config.get_api_key(model_config.provider) or "",
|
|
1402
|
+
model=model_config.model,
|
|
1402
1403
|
max_retries=model_config.rate_limits.max_retries,
|
|
1403
1404
|
requests_per_minute=model_config.rate_limits.requests_per_minute,
|
|
1404
1405
|
tokens_per_minute=model_config.rate_limits.tokens_per_minute,
|
|
@@ -109,6 +109,7 @@ class AgentContext:
|
|
|
109
109
|
return InstrumentedLLMClient(
|
|
110
110
|
provider=model_config.provider,
|
|
111
111
|
api_key=self.config.get_api_key(model_config.provider) or "",
|
|
112
|
+
model=model_config.model,
|
|
112
113
|
max_retries=model_config.rate_limits.max_retries,
|
|
113
114
|
requests_per_minute=model_config.rate_limits.requests_per_minute,
|
|
114
115
|
tokens_per_minute=model_config.rate_limits.tokens_per_minute,
|
|
@@ -126,6 +127,7 @@ class AgentContext:
|
|
|
126
127
|
return LLMClient(
|
|
127
128
|
provider=model_config.provider,
|
|
128
129
|
api_key=self.config.get_api_key(model_config.provider) or "",
|
|
130
|
+
model=model_config.model,
|
|
129
131
|
max_retries=model_config.rate_limits.max_retries,
|
|
130
132
|
requests_per_minute=model_config.rate_limits.requests_per_minute,
|
|
131
133
|
tokens_per_minute=model_config.rate_limits.tokens_per_minute,
|
|
@@ -76,6 +76,7 @@ class TerminalTool(BaseTool):
|
|
|
76
76
|
client = LLMClient(
|
|
77
77
|
provider=provider.value,
|
|
78
78
|
api_key=api_key or "",
|
|
79
|
+
model=self.config.fast_config.model,
|
|
79
80
|
max_retries=rate_limits.max_retries,
|
|
80
81
|
requests_per_minute=rate_limits.requests_per_minute,
|
|
81
82
|
tokens_per_minute=rate_limits.tokens_per_minute,
|
|
@@ -37,6 +37,7 @@ class ThinkHardTool(StreamingTool):
|
|
|
37
37
|
client = InstrumentedLLMClient(
|
|
38
38
|
provider=provider.value,
|
|
39
39
|
api_key=api_key or "",
|
|
40
|
+
model=self.config.thinking_config.model,
|
|
40
41
|
max_retries=rate_limits.max_retries,
|
|
41
42
|
requests_per_minute=rate_limits.requests_per_minute,
|
|
42
43
|
tokens_per_minute=rate_limits.tokens_per_minute,
|
|
@@ -54,6 +55,7 @@ class ThinkHardTool(StreamingTool):
|
|
|
54
55
|
client = LLMClient(
|
|
55
56
|
provider=provider.value,
|
|
56
57
|
api_key=api_key or "",
|
|
58
|
+
model=self.config.thinking_config.model,
|
|
57
59
|
max_retries=rate_limits.max_retries,
|
|
58
60
|
requests_per_minute=rate_limits.requests_per_minute,
|
|
59
61
|
tokens_per_minute=rate_limits.tokens_per_minute,
|
|
@@ -142,6 +142,7 @@ class WebFetchTool(StreamingTool):
|
|
|
142
142
|
client_kwargs = {
|
|
143
143
|
"provider": provider.value,
|
|
144
144
|
"api_key": self.config.get_api_key(provider),
|
|
145
|
+
"model": self.config.fast_config.model,
|
|
145
146
|
"max_retries": rate_limits.max_retries,
|
|
146
147
|
"requests_per_minute": rate_limits.requests_per_minute,
|
|
147
148
|
"tokens_per_minute": rate_limits.tokens_per_minute,
|
|
@@ -73,11 +73,18 @@ class LLMClient:
|
|
|
73
73
|
requests_per_minute: Optional[int] = None,
|
|
74
74
|
tokens_per_minute: Optional[int] = None,
|
|
75
75
|
token_manager: Optional[Any] = None,
|
|
76
|
+
model: Optional[str] = None,
|
|
76
77
|
):
|
|
77
78
|
self.provider_name = provider.lower()
|
|
78
79
|
self._api_key = api_key # Store API key privately
|
|
79
80
|
# Refreshing OAuth token manager, used only by the ChatGPT-subscription provider.
|
|
80
81
|
self._token_manager = token_manager
|
|
82
|
+
# Routing hint only: nearly every model shares its provider's API surface, so
|
|
83
|
+
# the client is provider-scoped and the model id is passed per call. The one
|
|
84
|
+
# exception is deepseek-v4-flash (Responses API vs the deepseek Chat default),
|
|
85
|
+
# which must be known at construction to pick the right provider class. The
|
|
86
|
+
# per-call `model=` kwarg still governs the request body.
|
|
87
|
+
self._model = model
|
|
81
88
|
self.provider = self._initialize_provider(
|
|
82
89
|
provider,
|
|
83
90
|
max_retries=max_retries,
|
|
@@ -163,6 +170,23 @@ class LLMClient:
|
|
|
163
170
|
provider_name=chatgpt_constants.PROVIDER_KEY,
|
|
164
171
|
)
|
|
165
172
|
|
|
173
|
+
# TEMPORARY single exception: deepseek-v4-flash speaks the Responses API
|
|
174
|
+
# (bare host, no /v1) while the rest of the deepseek catalog stays on Chat
|
|
175
|
+
# Completions. Special-cased here — like the ChatGPT provider above —
|
|
176
|
+
# because it needs a distinct base URL. Delete this branch once DeepSeek
|
|
177
|
+
# moves its catalog to Responses (then route "deepseek" wholesale).
|
|
178
|
+
if provider.lower() == "deepseek" and self._model == "deepseek-v4-flash":
|
|
179
|
+
from .providers.deepseek_responses import DeepSeekResponsesProvider
|
|
180
|
+
|
|
181
|
+
return DeepSeekResponsesProvider(
|
|
182
|
+
api_key=self._api_key,
|
|
183
|
+
max_retries=max_retries,
|
|
184
|
+
requests_per_minute=requests_per_minute,
|
|
185
|
+
tokens_per_minute=tokens_per_minute,
|
|
186
|
+
base_url="https://api.deepseek.com",
|
|
187
|
+
provider_name="deepseek",
|
|
188
|
+
)
|
|
189
|
+
|
|
166
190
|
base_urls: Dict[str, str] = {
|
|
167
191
|
"openai": "https://api.openai.com/v1/",
|
|
168
192
|
"together": "https://api.together.xyz/v1",
|
|
@@ -80,8 +80,11 @@ class InstrumentedLLMClient(LLMClient):
|
|
|
80
80
|
user_email: Optional[str] = None,
|
|
81
81
|
usage_recorder: Optional[Any] = None,
|
|
82
82
|
token_manager: Optional[Any] = None,
|
|
83
|
+
model: Optional[str] = None,
|
|
83
84
|
):
|
|
84
|
-
super().__init__(
|
|
85
|
+
super().__init__(
|
|
86
|
+
provider, api_key, max_retries, requests_per_minute, tokens_per_minute, token_manager, model=model
|
|
87
|
+
)
|
|
85
88
|
self.langfuse = langfuse_client
|
|
86
89
|
self.workspace_id = workspace_id
|
|
87
90
|
self.thread_id = thread_id
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""DeepSeek provider that speaks the **Responses API** (``/responses``).
|
|
2
|
+
|
|
3
|
+
TEMPORARY: ``deepseek-v4-flash`` is the one DeepSeek model on the Responses API
|
|
4
|
+
today; the rest of the deepseek catalog stays on Chat Completions
|
|
5
|
+
(:class:`~kolega_code.llm.providers.openai.OpenAIProvider`). DeepSeek plans to move
|
|
6
|
+
its catalog over (``deepseek-v4-pro`` in early Aug 2026), at which point this class
|
|
7
|
+
and its routing branch in ``client.py`` can be deleted and the whole ``deepseek``
|
|
8
|
+
provider routed to Responses wholesale.
|
|
9
|
+
|
|
10
|
+
Request building, streaming, and token counting are shared with the OpenAI
|
|
11
|
+
Responses providers via
|
|
12
|
+
:class:`~kolega_code.llm.providers.responses_common.ResponsesProviderBase`; only the
|
|
13
|
+
transport differs — a plain api key against ``api.deepseek.com``. DeepSeek's Responses
|
|
14
|
+
API is stateless (no ``previous_response_id`` / ``reasoning.encrypted_content``), so
|
|
15
|
+
there is no cross-turn reasoning continuity, but unsupported params (including the
|
|
16
|
+
``include=["reasoning.encrypted_content"]`` the shared builder sends) are silently
|
|
17
|
+
ignored, so the shared request builder works unmodified. The base URL is the bare
|
|
18
|
+
host — DeepSeek's Responses guide uses ``https://api.deepseek.com`` (no ``/v1``).
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import uuid
|
|
24
|
+
from typing import Optional
|
|
25
|
+
|
|
26
|
+
from openai import AsyncOpenAI
|
|
27
|
+
|
|
28
|
+
from .base import BaseLLMProvider
|
|
29
|
+
from .responses_common import ResponsesProviderBase
|
|
30
|
+
|
|
31
|
+
DEFAULT_BASE_URL = "https://api.deepseek.com"
|
|
32
|
+
DEFAULT_MODEL = "deepseek-v4-flash"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class DeepSeekResponsesProvider(ResponsesProviderBase):
|
|
36
|
+
"""DeepSeek Responses-API provider authenticated with a standard api key."""
|
|
37
|
+
|
|
38
|
+
def __init__(
|
|
39
|
+
self,
|
|
40
|
+
api_key: str,
|
|
41
|
+
max_retries: int = 3,
|
|
42
|
+
requests_per_minute: Optional[int] = None,
|
|
43
|
+
tokens_per_minute: Optional[int] = None,
|
|
44
|
+
base_url: Optional[str] = None,
|
|
45
|
+
provider_name: str = "deepseek",
|
|
46
|
+
) -> None:
|
|
47
|
+
# Skip OpenAIProvider.__init__ (it builds Chat Completions sync+async
|
|
48
|
+
# clients); wire a Responses-only async client instead.
|
|
49
|
+
BaseLLMProvider.__init__(
|
|
50
|
+
self,
|
|
51
|
+
api_key=api_key,
|
|
52
|
+
max_retries=max_retries,
|
|
53
|
+
requests_per_minute=requests_per_minute,
|
|
54
|
+
tokens_per_minute=tokens_per_minute,
|
|
55
|
+
base_url=base_url or DEFAULT_BASE_URL,
|
|
56
|
+
)
|
|
57
|
+
self.provider_name = provider_name
|
|
58
|
+
# A stable per-session prompt_cache_key lets the backend cache the prompt
|
|
59
|
+
# prefix across turns (DeepSeek ignores it if unsupported, which is harmless).
|
|
60
|
+
self._session_id = str(uuid.uuid4())
|
|
61
|
+
self.async_client = AsyncOpenAI(api_key=api_key, base_url=self.base_url, max_retries=max_retries)
|
|
62
|
+
# The Responses path is async-only; the sync client is unused.
|
|
63
|
+
self.sync_client = None
|
|
64
|
+
|
|
65
|
+
def _default_model(self) -> str:
|
|
66
|
+
return DEFAULT_MODEL
|
|
@@ -129,6 +129,7 @@ def to_responses_input(messages: MessageHistory) -> List[Dict[str, Any]]:
|
|
|
129
129
|
continue
|
|
130
130
|
|
|
131
131
|
text_parts: List[tuple] = []
|
|
132
|
+
tool_call_items: List[Dict[str, Any]] = []
|
|
132
133
|
tool_image_messages: List[Dict[str, Any]] = []
|
|
133
134
|
for block in message.content or []:
|
|
134
135
|
if isinstance(block, ResponsesReasoningBlock):
|
|
@@ -140,8 +141,14 @@ def to_responses_input(messages: MessageHistory) -> List[Dict[str, Any]]:
|
|
|
140
141
|
# reasoning block first in the assistant message.
|
|
141
142
|
items.append(block.to_responses_item())
|
|
142
143
|
elif isinstance(block, ToolCall):
|
|
144
|
+
# Collected, not emitted inline: the function_call items must be the
|
|
145
|
+
# LAST items of the assistant turn so the next message's
|
|
146
|
+
# function_call_output items follow them immediately. An assistant
|
|
147
|
+
# text item interposed between the calls and their outputs makes
|
|
148
|
+
# DeepSeek's Responses API 400 ("No tool output found for tool call
|
|
149
|
+
# ..."). See the assistant-text ordering below.
|
|
143
150
|
if block.input_kind == "freeform":
|
|
144
|
-
|
|
151
|
+
tool_call_items.append(
|
|
145
152
|
{
|
|
146
153
|
"type": "custom_tool_call",
|
|
147
154
|
"call_id": block.id,
|
|
@@ -150,7 +157,7 @@ def to_responses_input(messages: MessageHistory) -> List[Dict[str, Any]]:
|
|
|
150
157
|
}
|
|
151
158
|
)
|
|
152
159
|
else:
|
|
153
|
-
|
|
160
|
+
tool_call_items.append(
|
|
154
161
|
{
|
|
155
162
|
"type": "function_call",
|
|
156
163
|
"call_id": block.id,
|
|
@@ -178,11 +185,42 @@ def to_responses_input(messages: MessageHistory) -> List[Dict[str, Any]]:
|
|
|
178
185
|
# Foreign Anthropic thinking/redacted-thinking blocks (from a prior
|
|
179
186
|
# provider) are skipped here; adapt_history_for_provider has already
|
|
180
187
|
# dropped them before this conversion runs.
|
|
188
|
+
# Assistant text goes BEFORE the tool calls; the calls stay last so their
|
|
189
|
+
# outputs (next message) are adjacent — required by DeepSeek's Responses API.
|
|
181
190
|
if text_parts:
|
|
182
191
|
item = _role_message_item(message.role, text_parts)
|
|
183
192
|
if item:
|
|
184
193
|
items.append(item)
|
|
194
|
+
items.extend(tool_call_items)
|
|
185
195
|
items.extend(tool_image_messages)
|
|
196
|
+
|
|
197
|
+
# Every function_call must be answered by a function_call_output or the
|
|
198
|
+
# Responses API 400s ("No tool output found for tool call ..."). A tool call
|
|
199
|
+
# can be left unanswered when a turn made several parallel calls and one
|
|
200
|
+
# result went missing (e.g. a yielded/long-running command). Mirror the Chat
|
|
201
|
+
# path (Message.to_openai) and pad any orphan with a placeholder output so the
|
|
202
|
+
# request stays valid. Keyed by call_id, preserving the freeform vs json shape.
|
|
203
|
+
# Defense-in-depth: every function_call must still be answered by a
|
|
204
|
+
# function_call_output, or the Responses API 400s. Pad any orphan (mirrors the
|
|
205
|
+
# Chat path, Message.to_openai). With the ordering above this should not fire,
|
|
206
|
+
# but a genuinely dropped result must not become a hard request failure.
|
|
207
|
+
answered = {
|
|
208
|
+
it.get("call_id") for it in items if it.get("type") in ("function_call_output", "custom_tool_call_output")
|
|
209
|
+
}
|
|
210
|
+
for it in items:
|
|
211
|
+
if it.get("type") not in ("function_call", "custom_tool_call"):
|
|
212
|
+
continue
|
|
213
|
+
call_id = it.get("call_id")
|
|
214
|
+
if call_id in answered:
|
|
215
|
+
continue
|
|
216
|
+
answered.add(call_id)
|
|
217
|
+
items.append(
|
|
218
|
+
{
|
|
219
|
+
"type": "custom_tool_call_output" if it["type"] == "custom_tool_call" else "function_call_output",
|
|
220
|
+
"call_id": call_id,
|
|
221
|
+
"output": "[no tool output recorded]",
|
|
222
|
+
}
|
|
223
|
+
)
|
|
186
224
|
return items
|
|
187
225
|
|
|
188
226
|
|
|
@@ -14,6 +14,11 @@ DEEPSEEK_SPECS = {
|
|
|
14
14
|
mode="deepseek_effort",
|
|
15
15
|
),
|
|
16
16
|
},
|
|
17
|
+
# deepseek-v4-flash speaks the Responses API (see DeepSeekResponsesProvider), so its
|
|
18
|
+
# reasoning effort must be emitted as the Responses `reasoning` block rather than the
|
|
19
|
+
# Chat-Completions `reasoning_effort` field the shared Responses request builder ignores.
|
|
20
|
+
# DeepSeek's Responses API is stateless (no reasoning.encrypted_content), so this mode
|
|
21
|
+
# also correctly excludes flash from the flat reasoning_content replay path.
|
|
17
22
|
("deepseek", "deepseek-v4-flash"): {
|
|
18
23
|
"context_length": 1000000,
|
|
19
24
|
"max_completion_tokens": 384000,
|
|
@@ -23,7 +28,7 @@ DEEPSEEK_SPECS = {
|
|
|
23
28
|
"thinking_effort": ThinkingEffortSpec(
|
|
24
29
|
options=("none", "high", "max"),
|
|
25
30
|
default="high",
|
|
26
|
-
mode="
|
|
31
|
+
mode="openai_responses_reasoning",
|
|
27
32
|
),
|
|
28
33
|
},
|
|
29
34
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/docx/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/humanizer/LICENSE
RENAMED
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/requirements.txt
RENAMED
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/pptx/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/review/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kolega_code-0.26.3 → kolega_code-0.26.5}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|