kolega-code 0.41.4__tar.gz → 0.43.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.
Files changed (500) hide show
  1. {kolega_code-0.41.4 → kolega_code-0.43.0}/CHANGELOG.md +38 -0
  2. {kolega_code-0.41.4 → kolega_code-0.43.0}/PKG-INFO +25 -1
  3. {kolega_code-0.41.4 → kolega_code-0.43.0}/README.md +24 -0
  4. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/__init__.py +1 -1
  5. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/__init__.py +1 -1
  6. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/config.py +2 -0
  7. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/provider_registry.py +21 -0
  8. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/config.py +3 -0
  9. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/client.py +7 -1
  10. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/instrumented_client.py +2 -2
  11. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/models.py +53 -5
  12. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/deepseek_responses.py +5 -4
  13. kolega_code-0.43.0/kolega_code/llm/providers/mistral.py +821 -0
  14. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/responses_common.py +9 -8
  15. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/__init__.py +2 -0
  16. kolega_code-0.43.0/kolega_code/llm/specs/catalog/mistral.py +140 -0
  17. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/ollama_cloud.py +14 -26
  18. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/openrouter.py +1450 -1105
  19. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/perplexity_agent.py +80 -10
  20. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/tinker.py +1 -1
  21. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/thinking.py +6 -0
  22. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/usage.py +1 -0
  23. {kolega_code-0.41.4 → kolega_code-0.43.0}/pyproject.toml +2 -1
  24. {kolega_code-0.41.4 → kolega_code-0.43.0}/.gitignore +0 -0
  25. {kolega_code-0.41.4 → kolega_code-0.43.0}/CONTRIBUTING.md +0 -0
  26. {kolega_code-0.41.4 → kolega_code-0.43.0}/LICENSE +0 -0
  27. {kolega_code-0.41.4 → kolega_code-0.43.0}/MIGRATION.md +0 -0
  28. {kolega_code-0.41.4 → kolega_code-0.43.0}/RELEASING.md +0 -0
  29. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/LICENSE +0 -0
  30. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/manifest.json +0 -0
  31. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md +0 -0
  32. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/deep-research/references/evidence-and-reporting.md +0 -0
  33. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/deep-research/references/gigacode-workflow.md +0 -0
  34. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/deep-research/scripts/deep-research.workflow +0 -0
  35. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/deep-research/scripts/materialize_report.py +0 -0
  36. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
  37. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
  38. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
  39. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
  40. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
  41. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
  42. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
  43. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
  44. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
  45. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/humanizer/LICENSE +0 -0
  46. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md +0 -0
  47. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
  48. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
  49. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
  50. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
  51. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
  52. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
  53. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
  54. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
  55. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
  56. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
  57. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
  58. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
  59. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
  60. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
  61. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
  62. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
  63. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
  64. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
  65. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
  66. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
  67. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
  68. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
  69. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
  70. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
  71. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
  72. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
  73. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
  74. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
  75. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
  76. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
  77. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
  78. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
  79. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
  80. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
  81. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/__init__.py +0 -0
  82. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/agent_factory.py +0 -0
  83. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/bridge.py +0 -0
  84. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/diffs.py +0 -0
  85. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/permissions.py +0 -0
  86. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/plans.py +0 -0
  87. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/questions.py +0 -0
  88. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/server.py +0 -0
  89. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/session.py +0 -0
  90. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/acp/usage.py +0 -0
  91. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/baseagent.py +0 -0
  92. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/browseragent.py +0 -0
  93. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/coder.py +0 -0
  94. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/common.py +0 -0
  95. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/compression.py +0 -0
  96. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/context.py +0 -0
  97. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/conversation.py +0 -0
  98. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/custom_agents.py +0 -0
  99. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/edit_protocols.py +0 -0
  100. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/errors.py +0 -0
  101. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/__init__.py +0 -0
  102. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/bridge.py +0 -0
  103. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/bundle-requirements.in +0 -0
  104. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
  105. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/env.py +0 -0
  106. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/js_kernel.py +0 -0
  107. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/kernel.py +0 -0
  108. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/prelude.js +0 -0
  109. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/prelude.py +0 -0
  110. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/protocol.py +0 -0
  111. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/py_kernel.py +0 -0
  112. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/runner.js +0 -0
  113. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/eval/runner.py +0 -0
  114. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/generalagent.py +0 -0
  115. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/goal.py +0 -0
  116. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/handoff.py +0 -0
  117. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/investigationagent.py +0 -0
  118. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/model_routing.py +0 -0
  119. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/__init__.py +0 -0
  120. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/accounting.py +0 -0
  121. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/budget.py +0 -0
  122. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/context.py +0 -0
  123. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/errors.py +0 -0
  124. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/executor.py +0 -0
  125. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/guide.py +0 -0
  126. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/journal.py +0 -0
  127. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/runtime.py +0 -0
  128. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/orchestration/types.py +0 -0
  129. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/planningagent.py +0 -0
  130. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_dump.py +0 -0
  131. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_overrides.py +0 -0
  132. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_provider.py +0 -0
  133. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_exhausted.user.md +0 -0
  134. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/silent_turn_nudge.user.md.j2 +0 -0
  135. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/agent_loop/truncated_turn_nudge.user.md.j2 +0 -0
  136. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  137. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  138. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.system.md +0 -0
  139. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/handoff/document.user.md.j2 +0 -0
  140. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  141. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  142. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
  143. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
  144. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/mode_switch_notice.md.j2 +0 -0
  145. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  146. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
  147. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  148. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
  149. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/cli/worktree_control.md.j2 +0 -0
  150. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  151. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
  152. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/coder_ask.md.j2 +0 -0
  153. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/coder_base.md.j2 +0 -0
  154. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
  155. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
  156. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
  157. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  158. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  159. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/context_updates.md +0 -0
  160. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  161. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  162. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  163. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  164. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  165. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  166. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/system/includes/terminal_tools.md +0 -0
  167. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/apply_patch.md +0 -0
  168. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/ask_user_choice.md +0 -0
  169. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_click.md +0 -0
  170. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_close.md +0 -0
  171. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_console_messages.md +0 -0
  172. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_drag.md +0 -0
  173. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_drop.md +0 -0
  174. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_evaluate.md +0 -0
  175. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_file_upload.md +0 -0
  176. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_fill_form.md +0 -0
  177. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_find.md +0 -0
  178. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_handle_dialog.md +0 -0
  179. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_hover.md +0 -0
  180. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_navigate.md +0 -0
  181. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_navigate_back.md +0 -0
  182. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_network_request.md +0 -0
  183. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_network_requests.md +0 -0
  184. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_press_key.md +0 -0
  185. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_resize.md +0 -0
  186. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_scroll.md +0 -0
  187. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_select_option.md +0 -0
  188. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_snapshot.md +0 -0
  189. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_tabs.md +0 -0
  190. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_take_screenshot.md +0 -0
  191. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_type.md +0 -0
  192. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/browser_wait_for.md +0 -0
  193. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/build_backend.md +0 -0
  194. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/build_frontend.md +0 -0
  195. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/claude_edit.md +0 -0
  196. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/claude_write.md +0 -0
  197. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/dispatch_agent.md +0 -0
  198. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/edit.md +0 -0
  199. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/eval.md +0 -0
  200. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/exec_command.md +0 -0
  201. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/get_host.md +0 -0
  202. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/get_task_list.md +0 -0
  203. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/get_task_list_readonly.md +0 -0
  204. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/hashline_edit.md +0 -0
  205. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/hashline_write.md +0 -0
  206. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/kill_command.md +0 -0
  207. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/list_agents.md +0 -0
  208. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/list_sessions.md +0 -0
  209. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/list_subagent_models.md +0 -0
  210. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/list_workflow_runs.md +0 -0
  211. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/lsp.md +0 -0
  212. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/lsp_edit.md +0 -0
  213. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/multi_edit.md +0 -0
  214. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/read.md +0 -0
  215. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/read_image.md +0 -0
  216. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/resolve.md +0 -0
  217. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/run_workflow.md +0 -0
  218. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/send_message.md +0 -0
  219. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/set_goal.md +0 -0
  220. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/skill.md +0 -0
  221. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/snapshot.md +0 -0
  222. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/switch_worktree.md +0 -0
  223. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/update_task_list.md +0 -0
  224. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/web_fetch.md +0 -0
  225. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/web_search.md +0 -0
  226. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/write.md +0 -0
  227. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/write_plan.md +0 -0
  228. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/tools/write_stdin.md +0 -0
  229. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  230. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  231. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/prompts.py +0 -0
  232. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/session_metadata.py +0 -0
  233. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
  234. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  235. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  236. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  237. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
  238. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
  239. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
  240. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
  241. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
  242. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
  243. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
  244. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/network_status.py +0 -0
  245. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  246. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
  247. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
  248. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
  249. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
  250. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
  251. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
  252. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
  253. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
  254. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
  255. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
  256. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  257. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  258. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
  259. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
  260. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
  261. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
  262. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
  263. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
  264. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  265. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
  266. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
  267. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tool_definitions.py +0 -0
  268. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/tools.py +0 -0
  269. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/utils/commands.py +0 -0
  270. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/agent/volatile_context.py +0 -0
  271. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/auth/__init__.py +0 -0
  272. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/auth/_jwt.py +0 -0
  273. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
  274. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/auth/constants.py +0 -0
  275. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/auth/tokens.py +0 -0
  276. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/__init__.py +0 -0
  277. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/framing.py +0 -0
  278. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/installer.py +0 -0
  279. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/manager.py +0 -0
  280. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/multiplex.py +0 -0
  281. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/native_host.py +0 -0
  282. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/protocol.py +0 -0
  283. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/registry.py +0 -0
  284. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/browser_extension/runtime.py +0 -0
  285. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/__init__.py +0 -0
  286. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/acp.py +0 -0
  287. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/app.py +0 -0
  288. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/ask_output.py +0 -0
  289. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/atif_export.py +0 -0
  290. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/browser_backend.py +0 -0
  291. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/clipboard_image.py +0 -0
  292. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/connection.py +0 -0
  293. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/cron.py +0 -0
  294. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/diagnostics.py +0 -0
  295. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/file_index.py +0 -0
  296. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/gateway.py +0 -0
  297. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/goal.py +0 -0
  298. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/loop.py +0 -0
  299. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/main.py +0 -0
  300. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/mentions.py +0 -0
  301. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/messages.py +0 -0
  302. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/model_catalog.py +0 -0
  303. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/model_connection.py +0 -0
  304. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/peer_messaging.py +0 -0
  305. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/plan_artifacts.py +0 -0
  306. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/prompt_history.py +0 -0
  307. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/session_event_protocol.py +0 -0
  308. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/session_event_store.py +0 -0
  309. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/session_journal.py +0 -0
  310. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/session_store.py +0 -0
  311. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/session_usage.py +0 -0
  312. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/settings.py +0 -0
  313. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/skills.py +0 -0
  314. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/slash_commands.py +0 -0
  315. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/theme.py +0 -0
  316. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/__init__.py +0 -0
  317. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/agent_runtime.py +0 -0
  318. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/app_base.py +0 -0
  319. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/boot_splash.py +0 -0
  320. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/changes_screen.py +0 -0
  321. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/command_handlers.py +0 -0
  322. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/constants.py +0 -0
  323. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/custom_model.py +0 -0
  324. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/discovery.py +0 -0
  325. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/loop_runtime.py +0 -0
  326. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/memory_screen.py +0 -0
  327. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/metadata.py +0 -0
  328. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/onboarding_screen.py +0 -0
  329. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/pacing.py +0 -0
  330. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/prompt_flows.py +0 -0
  331. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/session_diff.py +0 -0
  332. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/settings_panel.py +0 -0
  333. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/settings_screen.py +0 -0
  334. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/settings_widgets.py +0 -0
  335. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/shortcut_bar.py +0 -0
  336. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/startup.py +0 -0
  337. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/state.py +0 -0
  338. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/status_dashboard.py +0 -0
  339. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/styles.tcss +0 -0
  340. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
  341. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/task_list.py +0 -0
  342. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/terminal_display.py +0 -0
  343. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/tool_presentation.py +0 -0
  344. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/transcript.py +0 -0
  345. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/turn_status.py +0 -0
  346. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/tui/widgets.py +0 -0
  347. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/cli/updater.py +0 -0
  348. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/events.py +0 -0
  349. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/extensions.py +0 -0
  350. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/__init__.py +0 -0
  351. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/access.py +0 -0
  352. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/access_settings.py +0 -0
  353. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/adapters/__init__.py +0 -0
  354. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/adapters/base.py +0 -0
  355. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/adapters/echo.py +0 -0
  356. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/adapters/telegram/__init__.py +0 -0
  357. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/adapters/telegram/adapter.py +0 -0
  358. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/adapters/telegram/formatting.py +0 -0
  359. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/bridge.py +0 -0
  360. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/commands.py +0 -0
  361. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/config.py +0 -0
  362. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/control_relay.py +0 -0
  363. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/daemon.py +0 -0
  364. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/event_router.py +0 -0
  365. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/questions.py +0 -0
  366. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/redaction.py +0 -0
  367. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/router.py +0 -0
  368. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/service.py +0 -0
  369. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/sessions.py +0 -0
  370. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/gateway/stt.py +0 -0
  371. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/git_env.py +0 -0
  372. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/__init__.py +0 -0
  373. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/backends.py +0 -0
  374. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/config.py +0 -0
  375. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/dispatcher.py +0 -0
  376. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/events.py +0 -0
  377. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/matcher.py +0 -0
  378. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/hooks/outcome.py +0 -0
  379. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/exceptions.py +0 -0
  380. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/ledger.py +0 -0
  381. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/__init__.py +0 -0
  382. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/_token_encoding.py +0 -0
  383. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/anthropic.py +0 -0
  384. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/base.py +0 -0
  385. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
  386. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/google.py +0 -0
  387. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/models.py +0 -0
  388. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/openai.py +0 -0
  389. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/openai_responses.py +0 -0
  390. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/perplexity_responses.py +0 -0
  391. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/tinker.py +0 -0
  392. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/providers/tinker_trace.py +0 -0
  393. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/ratelimit.py +0 -0
  394. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/__init__.py +0 -0
  395. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/accessors.py +0 -0
  396. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
  397. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
  398. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
  399. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
  400. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/google.py +0 -0
  401. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/groq.py +0 -0
  402. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
  403. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
  404. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/openai.py +0 -0
  405. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
  406. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/thinking_machines.py +0 -0
  407. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/together.py +0 -0
  408. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/xai.py +0 -0
  409. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/catalog/zai.py +0 -0
  410. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/custom_endpoints.py +0 -0
  411. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/ollama_cloud_catalog.py +0 -0
  412. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/openrouter_catalog.py +0 -0
  413. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/perplexity_catalog.py +0 -0
  414. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/tinker_catalog.py +0 -0
  415. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/types.py +0 -0
  416. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/specs/validation.py +0 -0
  417. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/timeouts.py +0 -0
  418. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/llm/tool_execution_ids.py +0 -0
  419. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/local_state.py +0 -0
  420. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/__init__.py +0 -0
  421. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/config.py +0 -0
  422. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/oauth.py +0 -0
  423. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/service.py +0 -0
  424. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/state.py +0 -0
  425. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/tools.py +0 -0
  426. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/mcp/transport.py +0 -0
  427. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/__init__.py +0 -0
  428. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/identity.py +0 -0
  429. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/manager.py +0 -0
  430. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/manifest.py +0 -0
  431. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/markdown.py +0 -0
  432. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/models.py +0 -0
  433. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/protocol.py +0 -0
  434. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/memory/registry.py +0 -0
  435. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/models/__init__.py +0 -0
  436. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
  437. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/permissions.py +0 -0
  438. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/runtime.py +0 -0
  439. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/README.md +0 -0
  440. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/__init__.py +0 -0
  441. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/async_filesystem.py +0 -0
  442. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/base.py +0 -0
  443. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/browser.py +0 -0
  444. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/event_loop.py +0 -0
  445. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/filesystem.py +0 -0
  446. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/local.py +0 -0
  447. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/serializer.py +0 -0
  448. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/terminal.py +0 -0
  449. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/sandbox/utils.py +0 -0
  450. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/scratchpad.py +0 -0
  451. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/security/__init__.py +0 -0
  452. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/security/secrets.py +0 -0
  453. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/base.py +0 -0
  454. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/browser.py +0 -0
  455. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/file_system.py +0 -0
  456. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/html.py +0 -0
  457. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/__init__.py +0 -0
  458. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/client.py +0 -0
  459. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/config.py +0 -0
  460. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/detector.py +0 -0
  461. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/diagnostics.py +0 -0
  462. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/edits.py +0 -0
  463. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/manager.py +0 -0
  464. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/registry.py +0 -0
  465. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/lsp/registry.yaml +0 -0
  466. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/snapshots.py +0 -0
  467. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/terminal.py +0 -0
  468. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/terminal_buffer.py +0 -0
  469. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/services/workspace_scan.py +0 -0
  470. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/__init__.py +0 -0
  471. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/control.py +0 -0
  472. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/inbox.py +0 -0
  473. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/inmemory.py +0 -0
  474. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/projection.py +0 -0
  475. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/recording.py +0 -0
  476. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/runtime.py +0 -0
  477. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/session/store.py +0 -0
  478. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/testing/__init__.py +0 -0
  479. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/testing/store_conformance.py +0 -0
  480. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tool_subjects.py +0 -0
  481. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tools/__init__.py +0 -0
  482. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tools/ask_user.py +0 -0
  483. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tools/core.py +0 -0
  484. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tools/definitions.py +0 -0
  485. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tools/param_aliases.py +0 -0
  486. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/tools/registry.py +0 -0
  487. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/utils/__init__.py +0 -0
  488. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/utils/images.py +0 -0
  489. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/__init__.py +0 -0
  490. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/assets/fold.js +0 -0
  491. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/assets/player.css +0 -0
  492. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/assets/player.html +0 -0
  493. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/assets/player.js +0 -0
  494. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/bundle.py +0 -0
  495. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/hosting.py +0 -0
  496. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/redaction.py +0 -0
  497. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/server.py +0 -0
  498. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/singlefile.py +0 -0
  499. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/web/theme_css.py +0 -0
  500. {kolega_code-0.41.4 → kolega_code-0.43.0}/kolega_code/worktrees.py +0 -0
@@ -6,6 +6,44 @@ This project uses GitHub Releases for detailed generated release notes. This fil
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.43.0 - 2026-10-13
10
+
11
+ ### Added
12
+
13
+ - **Strict tool schemas.** Code that drives Kolega's LLM client directly can
14
+ mark a tool definition `strict=True`. The Responses providers then ask the
15
+ provider to hold the tool call to the schema exactly — every required field
16
+ present and nothing extra. Tools that are not marked strict behave as before.
17
+
18
+ ### Changed
19
+
20
+ - DeepSeek requests now use `https://api.deepseek.com/beta`. DeepSeek enforces
21
+ strict tool schemas only on that endpoint and silently ignores the flag on the
22
+ bare host, so models that required a field could previously return a tool call
23
+ without it.
24
+
25
+ ### Fixed
26
+
27
+ - A tool call whose arguments contain a raw control character — an unescaped tab
28
+ or newline copied into a JSON string — is now kept instead of degrading to an
29
+ empty call. Observed live with `deepseek-flash`.
30
+
31
+ ## 0.42.0 - 2026-10-07
32
+
33
+ ### Added
34
+
35
+ - **Native Mistral AI support.** Use Mistral's own API with `MISTRAL_API_KEY`
36
+ or a key saved in Settings. The model picker defaults to Mistral Medium 3.5
37
+ and also includes Mistral Small 4, Mistral Large 4 **preview**, Ministral,
38
+ and Codestral, with streaming, tool calls, usage reporting, and vision and
39
+ reasoning where supported.
40
+
41
+ ### Changed
42
+
43
+ - Refreshed the OpenRouter, Ollama Cloud, and Perplexity Agent model catalogs
44
+ with newly available models, removal of retired entries, updated model
45
+ limits and capabilities, and a refreshed OpenRouter featured ordering.
46
+
9
47
  ## 0.41.4 - 2026-10-06
10
48
 
11
49
  ### Security
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.41.4
3
+ Version: 0.43.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/
@@ -263,6 +263,7 @@ Supported model providers:
263
263
  - OpenAI API
264
264
  - OpenAI via ChatGPT subscription sign-in
265
265
  - Google
266
+ - Mistral AI (native API)
266
267
  - Groq
267
268
  - Together.ai
268
269
  - Fireworks.ai
@@ -304,6 +305,29 @@ directory unless `KOLEGA_CODE_STATE_DIR` is set. See the
304
305
  [Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
305
306
  for the full story.
306
307
 
308
+ For Mistral's own API, save a key under **Mistral AI** in Settings or export
309
+ `MISTRAL_API_KEY`, then select a model explicitly:
310
+
311
+ ```bash
312
+ export MISTRAL_API_KEY=your-mistral-api-key
313
+ kolega-code . --provider mistral --model mistral-medium-3-5
314
+ ```
315
+
316
+ The picker defaults to Mistral Medium 3.5 and includes Mistral Small 4
317
+ (`mistral-small-2603`), Mistral Large 4 **preview** (`mistral-large-4`),
318
+ Ministral 3 (3B/8B/14B), Codestral, and eligible native aliases. Large 4 access
319
+ depends on the account/subscription; a catalog entry does not guarantee access.
320
+ Aliases, especially `latest`, can change their target and capabilities.
321
+
322
+ Medium 3.5, Small 4, Large 4, and Ministral 3 support image input; Codestral is
323
+ text-only. Medium/Small/Large expose `none` (default) or `high` thinking, with
324
+ same-provider reasoning replayed in Mistral's native format. Token counting is
325
+ a conservative local estimate with a safety margin, not an exact Mistral
326
+ tokenizer. The catalog's 32,768-token output reservation is Kolega's budgeting
327
+ policy, not a verified native maximum-output ceiling. Kolega Code runs the local
328
+ function-tool loop; Mistral-hosted server tools are not enabled. Native Mistral
329
+ keys and model IDs are separate from gateway credentials and routes.
330
+
307
331
  ## Requirements
308
332
 
309
333
  - **Python 3.11+**
@@ -172,6 +172,7 @@ Supported model providers:
172
172
  - OpenAI API
173
173
  - OpenAI via ChatGPT subscription sign-in
174
174
  - Google
175
+ - Mistral AI (native API)
175
176
  - Groq
176
177
  - Together.ai
177
178
  - Fireworks.ai
@@ -213,6 +214,29 @@ directory unless `KOLEGA_CODE_STATE_DIR` is set. See the
213
214
  [Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
214
215
  for the full story.
215
216
 
217
+ For Mistral's own API, save a key under **Mistral AI** in Settings or export
218
+ `MISTRAL_API_KEY`, then select a model explicitly:
219
+
220
+ ```bash
221
+ export MISTRAL_API_KEY=your-mistral-api-key
222
+ kolega-code . --provider mistral --model mistral-medium-3-5
223
+ ```
224
+
225
+ The picker defaults to Mistral Medium 3.5 and includes Mistral Small 4
226
+ (`mistral-small-2603`), Mistral Large 4 **preview** (`mistral-large-4`),
227
+ Ministral 3 (3B/8B/14B), Codestral, and eligible native aliases. Large 4 access
228
+ depends on the account/subscription; a catalog entry does not guarantee access.
229
+ Aliases, especially `latest`, can change their target and capabilities.
230
+
231
+ Medium 3.5, Small 4, Large 4, and Ministral 3 support image input; Codestral is
232
+ text-only. Medium/Small/Large expose `none` (default) or `high` thinking, with
233
+ same-provider reasoning replayed in Mistral's native format. Token counting is
234
+ a conservative local estimate with a safety margin, not an exact Mistral
235
+ tokenizer. The catalog's 32,768-token output reservation is Kolega's budgeting
236
+ policy, not a verified native maximum-output ceiling. Kolega Code runs the local
237
+ function-tool loop; Mistral-hosted server tools are not enabled. Native Mistral
238
+ keys and model IDs are separate from gateway credentials and routes.
239
+
216
240
  ## Requirements
217
241
 
218
242
  - **Python 3.11+**
@@ -174,4 +174,4 @@ __all__ = [
174
174
  "parse_git_status_output",
175
175
  ]
176
176
 
177
- __version__ = "0.41.4"
177
+ __version__ = "0.43.0"
@@ -51,4 +51,4 @@ __all__ = [
51
51
  "ToolExtension",
52
52
  ]
53
53
 
54
- __version__ = "0.41.4"
54
+ __version__ = "0.43.0"
@@ -60,6 +60,7 @@ API_KEY_ENV = {
60
60
  ModelProvider.ANTHROPIC: "ANTHROPIC_API_KEY",
61
61
  ModelProvider.OPENAI: "OPENAI_API_KEY",
62
62
  ModelProvider.GOOGLE: "GOOGLE_API_KEY",
63
+ ModelProvider.MISTRAL: "MISTRAL_API_KEY",
63
64
  ModelProvider.GROQ: "GROQ_API_KEY",
64
65
  ModelProvider.TOGETHER: "TOGETHER_API_KEY",
65
66
  ModelProvider.FIREWORKS: "FIREWORKS_API_KEY",
@@ -967,6 +968,7 @@ def build_agent_config(
967
968
  anthropic_api_key=_api_key_for_provider(ModelProvider.ANTHROPIC, loaded_env, settings),
968
969
  openai_api_key=_api_key_for_provider(ModelProvider.OPENAI, loaded_env, settings),
969
970
  google_api_key=_api_key_for_provider(ModelProvider.GOOGLE, loaded_env, settings),
971
+ mistral_api_key=_api_key_for_provider(ModelProvider.MISTRAL, loaded_env, settings),
970
972
  groq_api_key=_api_key_for_provider(ModelProvider.GROQ, loaded_env, settings),
971
973
  together_api_key=_api_key_for_provider(ModelProvider.TOGETHER, loaded_env, settings),
972
974
  fireworks_api_key=_api_key_for_provider(ModelProvider.FIREWORKS, loaded_env, settings),
@@ -37,6 +37,7 @@ PROVIDER_LABELS: dict[ModelProvider, str] = {
37
37
  ModelProvider.OPENAI: "OpenAI",
38
38
  ModelProvider.OPENAI_CHATGPT: "OpenAI (ChatGPT subscription)",
39
39
  ModelProvider.GOOGLE: "Google",
40
+ ModelProvider.MISTRAL: "Mistral AI",
40
41
  ModelProvider.XAI: "xAI",
41
42
  ModelProvider.GROQ: "Groq",
42
43
  ModelProvider.FIREWORKS: "Fireworks",
@@ -110,6 +111,25 @@ MODEL_LABELS: dict[str, str] = {
110
111
  "gemini-3.5-flash-lite": "Gemini 3.5 Flash-Lite",
111
112
  "gemini-3.1-pro-preview": "Gemini 3.1 Pro",
112
113
  "gemini-3.5-flash": "Gemini 3.5 Flash",
114
+ # Mistral (native API)
115
+ "mistral-medium-3-5": "Mistral Medium 3.5",
116
+ "mistral-medium-latest": "Mistral Medium (latest alias)",
117
+ "mistral-medium": "Mistral Medium (alias)",
118
+ "mistral-medium-3.5": "Mistral Medium 3.5 (alias)",
119
+ "mistral-medium-3": "Mistral Medium 3 (alias)",
120
+ "mistral-medium-2604": "Mistral Medium (2604 alias)",
121
+ "mistral-small-2603": "Mistral Small 4",
122
+ "mistral-small-latest": "Mistral Small (latest alias)",
123
+ "mistral-large-4": "Mistral Large 4 (Preview)",
124
+ "mistral-large-4-0": "Mistral Large 4 (Preview, alias)",
125
+ "ministral-3b-2512": "Ministral 3 3B",
126
+ "ministral-3b-latest": "Ministral 3 3B (latest alias)",
127
+ "ministral-8b-2512": "Ministral 3 8B",
128
+ "ministral-8b-latest": "Ministral 3 8B (latest alias)",
129
+ "ministral-14b-2512": "Ministral 3 14B",
130
+ "ministral-14b-latest": "Ministral 3 14B (latest alias)",
131
+ "codestral-2508": "Codestral (2508)",
132
+ "codestral-latest": "Codestral (latest alias)",
113
133
  # xAI
114
134
  "grok-4.6": "Grok 4.6",
115
135
  "grok-4.5": "Grok 4.5",
@@ -176,6 +196,7 @@ PROVIDER_DEFAULT_MODEL: dict[ModelProvider, str] = {
176
196
  ModelProvider.OPENAI: "gpt-5.6-sol",
177
197
  ModelProvider.OPENAI_CHATGPT: "gpt-5.6-sol",
178
198
  ModelProvider.GOOGLE: "gemini-3.8-flash",
199
+ ModelProvider.MISTRAL: "mistral-medium-3-5",
179
200
  ModelProvider.XAI: "grok-4.5",
180
201
  ModelProvider.FIREWORKS: "accounts/fireworks/models/glm-5p2",
181
202
  ModelProvider.TOGETHER: "moonshotai/Kimi-K2.7-Code",
@@ -24,6 +24,7 @@ class ModelProvider(str, Enum):
24
24
  OPENAI = "openai"
25
25
  OPENAI_CHATGPT = "openai_chatgpt" # OpenAI via ChatGPT-subscription OAuth (Responses API)
26
26
  GOOGLE = "google"
27
+ MISTRAL = "mistral"
27
28
  GROQ = "groq"
28
29
  TOGETHER = "together"
29
30
  FIREWORKS = "fireworks"
@@ -205,6 +206,7 @@ class AgentConfig(BaseModel):
205
206
  anthropic_api_key: Optional[str] = Field(default=None, description="API key for Anthropic")
206
207
  openai_api_key: Optional[str] = Field(default=None, description="API key for OpenAI")
207
208
  google_api_key: Optional[str] = Field(default=None, description="API key for Google")
209
+ mistral_api_key: Optional[str] = Field(default=None, description="API key for Mistral AI")
208
210
  groq_api_key: Optional[str] = Field(default=None, description="API key for Groq")
209
211
  together_api_key: Optional[str] = Field(default=None, description="API key for Together.ai")
210
212
  fireworks_api_key: Optional[str] = Field(default=None, description="API key for Fireworks.ai")
@@ -416,6 +418,7 @@ class AgentConfig(BaseModel):
416
418
  self.openai_chatgpt_tokens.access_token if self.openai_chatgpt_tokens else None
417
419
  ),
418
420
  ModelProvider.GOOGLE: self.google_api_key,
421
+ ModelProvider.MISTRAL: self.mistral_api_key,
419
422
  ModelProvider.GROQ: self.groq_api_key,
420
423
  ModelProvider.TOGETHER: self.together_api_key,
421
424
  ModelProvider.FIREWORKS: self.fireworks_api_key,
@@ -48,6 +48,7 @@ if TYPE_CHECKING:
48
48
  # module imports its own SDK at module load).
49
49
  from .providers.anthropic import AnthropicProvider
50
50
  from .providers.google import GoogleProvider
51
+ from .providers.mistral import MistralProvider
51
52
  from .providers.openai import OpenAIProvider
52
53
  from .providers.tinker import TinkerProvider
53
54
 
@@ -158,6 +159,10 @@ class LLMClient:
158
159
  from .providers.google import GoogleProvider
159
160
 
160
161
  return GoogleProvider
162
+ if p == "mistral":
163
+ from .providers.mistral import MistralProvider
164
+
165
+ return MistralProvider
161
166
  if p == "tinker":
162
167
  from .providers.tinker import TinkerProvider
163
168
 
@@ -172,7 +177,7 @@ class LLMClient:
172
177
  tokens_per_minute: Optional[int] = None,
173
178
  base_url: Optional[str] = None,
174
179
  api_style: Optional[str] = None,
175
- ) -> "Union[AnthropicProvider, OpenAIProvider, GoogleProvider, TinkerProvider]":
180
+ ) -> "Union[AnthropicProvider, OpenAIProvider, GoogleProvider, MistralProvider, TinkerProvider]":
176
181
  """Initialize the appropriate LLM provider based on the provider name.
177
182
 
178
183
  Args:
@@ -235,6 +240,7 @@ class LLMClient:
235
240
  "fireworks": "https://api.fireworks.ai/inference/v1",
236
241
  "llama": "http://localhost:8000/v1",
237
242
  "google": "https://generativelanguage.googleapis.com",
243
+ "mistral": "https://api.mistral.ai/v1/",
238
244
  "xai": "https://api.x.ai/v1",
239
245
  "dashscope": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
240
246
  "moonshot": "https://api.moonshot.ai/anthropic",
@@ -303,7 +303,7 @@ class InstrumentedLLMClient(LLMClient):
303
303
  "cache_read_input_tokens": usage_details.get("cache_read_input_tokens", 0),
304
304
  "cache_creation_input_tokens": usage_details.get("cache_write_input_tokens", 0),
305
305
  }
306
- elif provider in ["openai", "openai_chatgpt", "fireworks", "deepseek"]:
306
+ elif provider in ["openai", "openai_chatgpt", "fireworks", "deepseek", "mistral"]:
307
307
  normalized_usage = {
308
308
  "input": usage_details.get("prompt_tokens", 0),
309
309
  "output": usage_details.get("completion_tokens", 0),
@@ -576,7 +576,7 @@ class MinimalLangfuseStreamWrapper:
576
576
  "cache_read_input_tokens": usage_metadata.get("cache_read_input_tokens", 0),
577
577
  "cache_creation_input_tokens": usage_metadata.get("cache_write_input_tokens", 0),
578
578
  }
579
- elif provider in ["openai", "openai_chatgpt", "fireworks", "deepseek"]:
579
+ elif provider in ["openai", "openai_chatgpt", "fireworks", "deepseek", "mistral"]:
580
580
  return {
581
581
  "input": usage_metadata.get("prompt_tokens", 0),
582
582
  "output": usage_metadata.get("completion_tokens", 0),
@@ -100,6 +100,7 @@ def safe_parse_tool_arguments(raw: str) -> Dict[str, Any]:
100
100
  """Parse OpenAI tool function.arguments into a dict safely.
101
101
 
102
102
  - Tries strict json.loads first
103
+ - Accepts raw control characters inside strings (a literal tab or newline)
103
104
  - Applies minimal, conservative repairs (trim, remove trailing commas, balance one missing brace)
104
105
  - Returns a fallback dict with _raw_arguments and _parse_error on failure
105
106
  """
@@ -108,11 +109,16 @@ def safe_parse_tool_arguments(raw: str) -> Dict[str, Any]:
108
109
  return {}
109
110
  return json.loads(raw)
110
111
  except Exception as first_err:
112
+ # Models sometimes leave a raw tab or newline inside a string.
113
+ try:
114
+ return json.loads(raw, strict=False)
115
+ except Exception:
116
+ pass
111
117
  repaired = raw.strip()
112
118
  repaired = _remove_trailing_commas(repaired)
113
119
  repaired = _balance_brackets(repaired)
114
120
  try:
115
- return json.loads(repaired)
121
+ return json.loads(repaired, strict=False)
116
122
  except Exception as second_err:
117
123
  # Last resort: do not crash; surface raw args for downstream handling
118
124
  snippet = raw if len(raw) <= 200 else raw[:200] + "..."
@@ -359,18 +365,29 @@ class ThinkingBlock(ContentBlock):
359
365
 
360
366
  TYPE_NAME = "thinking"
361
367
 
362
- def __init__(self, thinking: str, cache_checkpoint: bool = False, signature: Optional[str] = None):
368
+ def __init__(
369
+ self,
370
+ thinking: str,
371
+ cache_checkpoint: bool = False,
372
+ signature: Optional[str] = None,
373
+ provider_metadata: Optional[Dict[str, Any]] = None,
374
+ ):
363
375
  super().__init__(type=self.TYPE_NAME, cache_checkpoint=cache_checkpoint)
364
376
  self.thinking = thinking
365
377
  self.signature = signature
378
+ # Preserve replay-critical native structure without changing how other
379
+ # providers serialize this block (e.g. Mistral nested chunks/closed).
380
+ self.provider_metadata = provider_metadata or {}
366
381
 
367
382
  def to_dict(self) -> Dict[str, Any]:
368
- result = {
383
+ result: Dict[str, Any] = {
369
384
  "type": self.type,
370
385
  "thinking": self.thinking,
371
386
  }
372
- if self.signature:
387
+ if self.signature or "signature" in self.provider_metadata:
373
388
  result["signature"] = self.signature
389
+ if self.provider_metadata:
390
+ result["provider_metadata"] = self.provider_metadata
374
391
  return result
375
392
 
376
393
  @classmethod
@@ -378,6 +395,7 @@ class ThinkingBlock(ContentBlock):
378
395
  return cls(
379
396
  thinking=data["thinking"],
380
397
  signature=data.get("signature"),
398
+ provider_metadata=data.get("provider_metadata"),
381
399
  )
382
400
 
383
401
  def to_anthropic(self) -> Dict[str, Any]:
@@ -764,6 +782,7 @@ class ToolDefinition(ContentBlock):
764
782
  input_kind: ToolInputKind = "json",
765
783
  freeform_format: Optional[Dict[str, str]] = None,
766
784
  cache_ttl: Optional[str] = None,
785
+ strict: bool = False,
767
786
  ):
768
787
  super().__init__(type="tool_definition", cache_checkpoint=cache_checkpoint, cache_ttl=cache_ttl)
769
788
  self.name = name
@@ -778,6 +797,8 @@ class ToolDefinition(ContentBlock):
778
797
  # Provider-native constraint for a freeform tool. OpenAI Responses accepts
779
798
  # {type: "grammar", syntax: "lark"|"regex", definition: "..."}.
780
799
  self.freeform_format = freeform_format
800
+ # Sent by the Responses providers; the schema must meet the provider's strict rules.
801
+ self.strict = strict
781
802
 
782
803
  def _object_schema(self) -> Dict[str, Any]:
783
804
  """The JSON-schema object describing this tool's input."""
@@ -818,6 +839,8 @@ class ToolDefinition(ContentBlock):
818
839
  public["input_kind"] = self.input_kind
819
840
  if self.freeform_format:
820
841
  public["freeform_format"] = dict(self.freeform_format)
842
+ if self.strict:
843
+ public["strict"] = True
821
844
  return public
822
845
 
823
846
  @classmethod
@@ -1544,7 +1567,32 @@ class Message:
1544
1567
  if thinking_blocks and (rest_blocks or has_tool_calls):
1545
1568
  reasoning_text = "\n\n".join(b.thinking for b in thinking_blocks)
1546
1569
  non_tool_blocks = rest_blocks
1547
- content = [item.to_openai() for item in non_tool_blocks]
1570
+ if provider and _provider_value(provider) == "mistral":
1571
+ content = []
1572
+ for item in non_tool_blocks:
1573
+ if isinstance(item, ThinkingBlock):
1574
+ if (
1575
+ self.role != "assistant"
1576
+ or source_provider is None
1577
+ or _provider_value(source_provider) != "mistral"
1578
+ ):
1579
+ continue
1580
+ native = item.provider_metadata
1581
+ thinking_chunk: Dict[str, Any] = {
1582
+ "type": "thinking",
1583
+ "thinking": native.get("thinking", [{"type": "text", "text": item.thinking}]),
1584
+ }
1585
+ if "closed" in native:
1586
+ thinking_chunk["closed"] = native["closed"]
1587
+ if "signature" in native:
1588
+ thinking_chunk["signature"] = native["signature"]
1589
+ if item.signature is not None:
1590
+ thinking_chunk["signature"] = item.signature
1591
+ content.append(thinking_chunk)
1592
+ elif not isinstance(item, RedactedThinkingBlock):
1593
+ content.append(item.to_openai())
1594
+ else:
1595
+ content = [item.to_openai() for item in non_tool_blocks]
1548
1596
  # Strict OpenAI-compatible servers (e.g. DeepSeek) prefer an empty
1549
1597
  # string over an empty list when an assistant message carries only
1550
1598
  # tool_calls and/or native reasoning.
@@ -9,7 +9,7 @@ other providers (Fireworks/OpenRouter/Ollama-Cloud) still use Chat Completions v
9
9
  Request building, streaming, and token counting are shared with the OpenAI
10
10
  Responses providers via
11
11
  :class:`~kolega_code.llm.providers.responses_common.ResponsesProviderBase`; only the
12
- transport differs — a plain api key against ``api.deepseek.com``.
12
+ transport differs — a plain api key against ``api.deepseek.com/beta``.
13
13
 
14
14
  Reasoning continuity: DeepSeek returns no ``reasoning.encrypted_content`` (the
15
15
  ``include`` param the shared builder sends is silently ignored) but exposes the raw
@@ -31,8 +31,9 @@ back to the API" (findings/flash-output-token-efficiency-levers.md), while a
31
31
  minimal single-round history with a foreign call_id — fabricated or a genuine
32
32
  flash id from another conversation — is simply tolerated (probed 2026-08-04).
33
33
 
34
- The base URL is the bare host — DeepSeek's Responses guide uses
35
- ``https://api.deepseek.com`` (no ``/v1``).
34
+ The base URL is DeepSeek's beta endpoint, ``https://api.deepseek.com/beta`` (no
35
+ ``/v1``): strict tool schemas are enforced only there, and the bare host silently
36
+ ignores ``strict: true`` (probed live 2026-10-12).
36
37
  """
37
38
 
38
39
  from __future__ import annotations
@@ -48,7 +49,7 @@ from .base import BaseLLMProvider
48
49
  from .models import GenerationParams
49
50
  from .responses_common import ResponsesProviderBase
50
51
 
51
- DEFAULT_BASE_URL = "https://api.deepseek.com"
52
+ DEFAULT_BASE_URL = "https://api.deepseek.com/beta"
52
53
  DEFAULT_MODEL = "deepseek-flash"
53
54
 
54
55