kolega-code 0.8.4__tar.gz → 0.10.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 (433) hide show
  1. kolega_code-0.10.0/.env.example +31 -0
  2. kolega_code-0.10.0/.github/workflows/ci.yml +204 -0
  3. {kolega_code-0.8.4 → kolega_code-0.10.0}/.gitignore +1 -1
  4. {kolega_code-0.8.4 → kolega_code-0.10.0}/CHANGELOG.md +32 -0
  5. {kolega_code-0.8.4 → kolega_code-0.10.0}/CONTRIBUTING.md +25 -0
  6. {kolega_code-0.8.4 → kolega_code-0.10.0}/PKG-INFO +8 -1
  7. {kolega_code-0.8.4 → kolega_code-0.10.0}/README.md +7 -0
  8. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/assets/coverage.svg +1 -1
  9. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/configuration/environment-variables.md +32 -37
  10. kolega_code-0.10.0/docs/src/content/docs/configuration/prompt-overrides.md +145 -0
  11. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/configuration/providers-and-models.mdx +12 -0
  12. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/__init__.py +1 -1
  13. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/__init__.py +1 -1
  14. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/baseagent.py +104 -1
  15. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/browseragent.py +2 -9
  16. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/coder.py +2 -9
  17. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/compression.py +3 -1
  18. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/conversation.py +13 -2
  19. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/generalagent.py +2 -8
  20. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/investigationagent.py +2 -9
  21. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/planningagent.py +2 -29
  22. kolega_code-0.10.0/kolega_code/agent/prompt_dump.py +407 -0
  23. kolega_code-0.10.0/kolega_code/agent/prompt_overrides.py +197 -0
  24. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_provider.py +89 -8
  25. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/app.py +157 -7
  26. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/config.py +136 -19
  27. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/main.py +73 -6
  28. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/messages.py +9 -0
  29. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/provider_registry.py +34 -1
  30. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/slash_commands.py +1 -0
  31. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/agent_runtime.py +21 -6
  32. kolega_code-0.10.0/kolega_code/cli/tui/changes_screen.py +346 -0
  33. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/command_handlers.py +90 -0
  34. kolega_code-0.10.0/kolega_code/cli/tui/session_diff.py +264 -0
  35. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/settings_panel.py +27 -10
  36. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/state.py +17 -0
  37. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/status_dashboard.py +7 -2
  38. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/styles.tcss +86 -1
  39. kolega_code-0.10.0/kolega_code/cli/tui/terminal_display.py +137 -0
  40. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/transcript.py +75 -4
  41. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/widgets.py +2 -0
  42. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/config.py +3 -0
  43. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/client.py +2 -0
  44. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/exceptions.py +1 -0
  45. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/models.py +7 -4
  46. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/openai.py +3 -1
  47. kolega_code-0.10.0/kolega_code/llm/specs/__init__.py +27 -0
  48. kolega_code-0.10.0/kolega_code/llm/specs/accessors.py +56 -0
  49. kolega_code-0.10.0/kolega_code/llm/specs/catalog/__init__.py +41 -0
  50. kolega_code-0.10.0/kolega_code/llm/specs/catalog/anthropic.py +69 -0
  51. kolega_code-0.10.0/kolega_code/llm/specs/catalog/dashscope.py +15 -0
  52. kolega_code-0.10.0/kolega_code/llm/specs/catalog/deepseek.py +27 -0
  53. kolega_code-0.10.0/kolega_code/llm/specs/catalog/fireworks.py +84 -0
  54. kolega_code-0.10.0/kolega_code/llm/specs/catalog/google.py +27 -0
  55. kolega_code-0.10.0/kolega_code/llm/specs/catalog/kimi_coding.py +17 -0
  56. kolega_code-0.10.0/kolega_code/llm/specs/catalog/moonshot.py +38 -0
  57. kolega_code-0.10.0/kolega_code/llm/specs/catalog/ollama_cloud.py +325 -0
  58. kolega_code-0.10.0/kolega_code/llm/specs/catalog/openai.py +47 -0
  59. kolega_code-0.10.0/kolega_code/llm/specs/catalog/openai_chatgpt.py +55 -0
  60. kolega_code-0.10.0/kolega_code/llm/specs/catalog/together.py +15 -0
  61. kolega_code-0.10.0/kolega_code/llm/specs/catalog/xai.py +22 -0
  62. kolega_code-0.10.0/kolega_code/llm/specs/catalog/zai.py +29 -0
  63. kolega_code-0.10.0/kolega_code/llm/specs/thinking.py +100 -0
  64. kolega_code-0.10.0/kolega_code/llm/specs/types.py +11 -0
  65. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/services/terminal.py +51 -12
  66. {kolega_code-0.8.4 → kolega_code-0.10.0}/pyproject.toml +1 -1
  67. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_live_providers.py +22 -17
  68. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_openai_message_conversion.py +129 -0
  69. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_provider_usage_mapping.py +9 -0
  70. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_terminal.py +43 -1
  71. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_compression.py +57 -2
  72. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_empty_message_handling.py +12 -0
  73. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_history_adapter_thinking.py +60 -0
  74. kolega_code-0.10.0/tests/agent/test_prompt_dump.py +163 -0
  75. kolega_code-0.10.0/tests/agent/test_prompt_overrides.py +280 -0
  76. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_bootstrap_settings.py +186 -6
  77. kolega_code-0.10.0/tests/cli/test_app_changes_inspector.py +256 -0
  78. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_misc_commands.py +102 -1
  79. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_streaming.py +44 -0
  80. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_terminal_logs.py +92 -0
  81. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_cli_config.py +135 -1
  82. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_main.py +113 -0
  83. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_provider_registry.py +9 -0
  84. kolega_code-0.10.0/tests/cli/test_session_diff.py +131 -0
  85. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_settings.py +19 -0
  86. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_slash_commands.py +2 -0
  87. kolega_code-0.10.0/tests/cli/test_terminal_display.py +42 -0
  88. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_tui_stylesheet.py +38 -0
  89. {kolega_code-0.8.4 → kolega_code-0.10.0}/uv.lock +2 -2
  90. kolega_code-0.8.4/.env.example +0 -22
  91. kolega_code-0.8.4/.github/workflows/ci.yml +0 -131
  92. kolega_code-0.8.4/kolega_code/llm/specs.py +0 -571
  93. {kolega_code-0.8.4 → kolega_code-0.10.0}/.githooks/pre-commit +0 -0
  94. {kolega_code-0.8.4 → kolega_code-0.10.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  95. {kolega_code-0.8.4 → kolega_code-0.10.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  96. {kolega_code-0.8.4 → kolega_code-0.10.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  97. {kolega_code-0.8.4 → kolega_code-0.10.0}/.github/workflows/docs.yml +0 -0
  98. {kolega_code-0.8.4 → kolega_code-0.10.0}/.github/workflows/release.yml +0 -0
  99. {kolega_code-0.8.4 → kolega_code-0.10.0}/.pre-commit-config.yaml +0 -0
  100. {kolega_code-0.8.4 → kolega_code-0.10.0}/LICENSE +0 -0
  101. {kolega_code-0.8.4 → kolega_code-0.10.0}/RELEASING.md +0 -0
  102. {kolega_code-0.8.4 → kolega_code-0.10.0}/SECURITY.md +0 -0
  103. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/.gitignore +0 -0
  104. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/README.md +0 -0
  105. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/astro.config.mjs +0 -0
  106. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/package-lock.json +0 -0
  107. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/package.json +0 -0
  108. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/public/favicon.svg +0 -0
  109. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/assets/demo.gif +0 -0
  110. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/assets/kolega-dark.svg +0 -0
  111. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/assets/kolega-light.svg +0 -0
  112. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/cli/ask.md +0 -0
  113. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/cli/doctor.md +0 -0
  114. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/cli/overview.md +0 -0
  115. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/cli/sessions.md +0 -0
  116. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/concepts/agents.md +0 -0
  117. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/concepts/how-it-works.md +0 -0
  118. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/concepts/tools.md +0 -0
  119. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +0 -0
  120. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
  121. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
  122. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
  123. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/gigacode.mdx +0 -0
  124. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/hooks.md +0 -0
  125. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/index.mdx +0 -0
  126. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/skills.mdx +0 -0
  127. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/tui/composer.md +0 -0
  128. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/tui/interface.md +0 -0
  129. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/tui/modes.md +0 -0
  130. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
  131. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content/docs/tui/slash-commands.md +0 -0
  132. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/content.config.ts +0 -0
  133. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/src/styles/brand.css +0 -0
  134. {kolega_code-0.8.4 → kolega_code-0.10.0}/docs/tsconfig.json +0 -0
  135. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/common.py +0 -0
  136. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/context.py +0 -0
  137. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/errors.py +0 -0
  138. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/__init__.py +0 -0
  139. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/budget.py +0 -0
  140. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/errors.py +0 -0
  141. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/executor.py +0 -0
  142. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/guide.py +0 -0
  143. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/journal.py +0 -0
  144. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/runtime.py +0 -0
  145. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/orchestration/types.py +0 -0
  146. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  147. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  148. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  149. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  150. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
  151. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  152. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  153. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  154. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
  155. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
  156. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
  157. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
  158. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  159. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  160. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  161. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  162. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  163. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  164. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  165. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  166. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  167. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  168. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/prompts.py +0 -0
  169. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
  170. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  171. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  172. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  173. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/create_file_tool.py +0 -0
  174. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
  175. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  176. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
  177. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
  178. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  179. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
  180. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -0
  181. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +0 -0
  182. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +0 -0
  183. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
  184. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
  185. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
  186. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
  187. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
  188. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
  189. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
  190. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
  191. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  192. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  193. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  194. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
  195. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  196. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
  197. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
  198. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/tools.py +0 -0
  199. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/agent/utils/commands.py +0 -0
  200. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/auth/__init__.py +0 -0
  201. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/auth/_jwt.py +0 -0
  202. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
  203. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/auth/constants.py +0 -0
  204. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/auth/tokens.py +0 -0
  205. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/__init__.py +0 -0
  206. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/clipboard_image.py +0 -0
  207. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/connection.py +0 -0
  208. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/file_index.py +0 -0
  209. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/mentions.py +0 -0
  210. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/session_store.py +0 -0
  211. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/settings.py +0 -0
  212. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/skills.py +0 -0
  213. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/theme.py +0 -0
  214. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/__init__.py +0 -0
  215. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/constants.py +0 -0
  216. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/prompt_flows.py +0 -0
  217. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
  218. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/cli/updater.py +0 -0
  219. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/events.py +0 -0
  220. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/__init__.py +0 -0
  221. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/backends.py +0 -0
  222. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/config.py +0 -0
  223. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/dispatcher.py +0 -0
  224. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/events.py +0 -0
  225. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/matcher.py +0 -0
  226. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/hooks/outcome.py +0 -0
  227. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/instrumented_client.py +0 -0
  228. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/__init__.py +0 -0
  229. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/anthropic.py +0 -0
  230. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/base.py +0 -0
  231. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
  232. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/google.py +0 -0
  233. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/models.py +0 -0
  234. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/openai_responses.py +0 -0
  235. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/providers/responses_common.py +0 -0
  236. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/ratelimit.py +0 -0
  237. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/llm/tool_execution_ids.py +0 -0
  238. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/local_state.py +0 -0
  239. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/models/__init__.py +0 -0
  240. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
  241. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/permissions.py +0 -0
  242. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/runtime.py +0 -0
  243. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/README.md +0 -0
  244. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/__init__.py +0 -0
  245. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/async_filesystem.py +0 -0
  246. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/base.py +0 -0
  247. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/browser.py +0 -0
  248. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/event_loop.py +0 -0
  249. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/filesystem.py +0 -0
  250. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/local.py +0 -0
  251. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/serializer.py +0 -0
  252. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/terminal.py +0 -0
  253. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/sandbox/utils.py +0 -0
  254. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/services/base.py +0 -0
  255. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/services/browser.py +0 -0
  256. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/services/file_system.py +0 -0
  257. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/services/html.py +0 -0
  258. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/services/terminal_buffer.py +0 -0
  259. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/tools/__init__.py +0 -0
  260. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/tools/core.py +0 -0
  261. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/tools/definitions.py +0 -0
  262. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/tools/registry.py +0 -0
  263. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/utils/__init__.py +0 -0
  264. {kolega_code-0.8.4 → kolega_code-0.10.0}/kolega_code/utils/images.py +0 -0
  265. {kolega_code-0.8.4 → kolega_code-0.10.0}/run_tests.sh +0 -0
  266. {kolega_code-0.8.4 → kolega_code-0.10.0}/scripts/check-dev-hooks.sh +0 -0
  267. {kolega_code-0.8.4 → kolega_code-0.10.0}/scripts/install-kolega-code.sh +0 -0
  268. {kolega_code-0.8.4 → kolega_code-0.10.0}/scripts/setup-dev.sh +0 -0
  269. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/__init__.py +0 -0
  270. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/__init__.py +0 -0
  271. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/compaction_helpers.py +0 -0
  272. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/conftest.py +0 -0
  273. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/__init__.py +0 -0
  274. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/_token_counting_utils.py +0 -0
  275. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_anthropic_token_counting.py +0 -0
  276. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_billing_openai_cache.py +0 -0
  277. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_chatgpt_live.py +0 -0
  278. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_chatgpt_oauth_auth_config.py +0 -0
  279. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_chatgpt_oauth_conversion.py +0 -0
  280. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -0
  281. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +0 -0
  282. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_chatgpt_oauth_streaming.py +0 -0
  283. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_client.py +0 -0
  284. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_client_live.py +0 -0
  285. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_client_runtime.py +0 -0
  286. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_dashscope_mapping.py +0 -0
  287. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_error_boundary.py +0 -0
  288. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_exceptions.py +0 -0
  289. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_google_thought_signature.py +0 -0
  290. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_google_tool_signature_live.py +0 -0
  291. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_instrumented_client.py +0 -0
  292. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_instrumented_client_integration.py +0 -0
  293. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_instrumented_client_stream.py +0 -0
  294. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_langfuse_normalization.py +0 -0
  295. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_message_conversion.py +0 -0
  296. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_model_specs.py +0 -0
  297. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_openai_cached_tokens.py +0 -0
  298. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_openai_cached_tokens_stream.py +0 -0
  299. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_openai_responses_provider.py +0 -0
  300. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_openai_token_counting.py +0 -0
  301. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_supports_vision.py +0 -0
  302. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_thinking_effort.py +0 -0
  303. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/llm/test_tool_execution_ids.py +0 -0
  304. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/orchestration/__init__.py +0 -0
  305. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/orchestration/test_orchestration.py +0 -0
  306. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/__init__.py +0 -0
  307. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_browser.py +0 -0
  308. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_browser_console_logs.py +0 -0
  309. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_browser_content.py +0 -0
  310. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_browser_integration.py +0 -0
  311. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_browser_parity.py +0 -0
  312. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_file_system.py +0 -0
  313. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_file_system_integration.py +0 -0
  314. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_file_system_path.py +0 -0
  315. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_local_file_system.py +0 -0
  316. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_sandbox_terminal_input.py +0 -0
  317. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_terminal_buffer.py +0 -0
  318. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/services/test_terminal_state_serializer.py +0 -0
  319. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_agent_tools_inventory.py +0 -0
  320. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent.py +0 -0
  321. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_anthropic_history_validation.py +0 -0
  322. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_compaction.py +0 -0
  323. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_effective_history.py +0 -0
  324. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_history_serialization.py +0 -0
  325. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_prompt_context.py +0 -0
  326. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_role_overrides.py +0 -0
  327. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_runtime.py +0 -0
  328. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_tool_call_repair.py +0 -0
  329. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_tool_call_repair_integration.py +0 -0
  330. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_base_agent_tool_execution.py +0 -0
  331. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_coder_attachments.py +0 -0
  332. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_coder_prompt_extensions.py +0 -0
  333. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_commands.py +0 -0
  334. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_compaction_integration.py +0 -0
  335. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_compaction_persistence.py +0 -0
  336. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_compaction_subagent.py +0 -0
  337. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_compaction_tui_events.py +0 -0
  338. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_compress_command.py +0 -0
  339. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_conversation_compaction.py +0 -0
  340. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_duplicate_tool_results.py +0 -0
  341. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_event_emitter.py +0 -0
  342. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_general_agent.py +0 -0
  343. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_gigacode_gating.py +0 -0
  344. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_history_image_blocks.py +0 -0
  345. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_hooks_integration.py +0 -0
  346. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_html.py +0 -0
  347. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_image_compat.py +0 -0
  348. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_parallel_tool_calls.py +0 -0
  349. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_permissions.py +0 -0
  350. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_planning_agent.py +0 -0
  351. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_prompt_provider.py +0 -0
  352. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_prompts.py +0 -0
  353. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_read_image_tool.py +0 -0
  354. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tool_collection_builtin_dispatch.py +0 -0
  355. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tool_collection_config.py +0 -0
  356. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tool_collection_extensions.py +0 -0
  357. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tool_collection_initialization.py +0 -0
  358. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tool_collection_memory.py +0 -0
  359. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tool_registry.py +0 -0
  360. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/test_tools.py +0 -0
  361. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/__init__.py +0 -0
  362. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_agent_tool.py +0 -0
  363. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_base_tool.py +0 -0
  364. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_browser_tool.py +0 -0
  365. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_build_tool.py +0 -0
  366. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_create_file_tool.py +0 -0
  367. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_edit_preview.py +0 -0
  368. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_glob_tool.py +0 -0
  369. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
  370. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
  371. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_read_file_tool.py +0 -0
  372. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_replace_entire_file_tool.py +0 -0
  373. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_replace_lines_tool.py +0 -0
  374. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_search_and_replace_tool.py +0 -0
  375. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_search_codebase_tool.py +0 -0
  376. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_terminal_tool.py +0 -0
  377. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
  378. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_think_hard_streaming.py +0 -0
  379. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_think_hard_streaming_content.py +0 -0
  380. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_think_hard_streaming_errors.py +0 -0
  381. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_think_hard_streaming_updates.py +0 -0
  382. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_web_fetch_tool.py +0 -0
  383. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
  384. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/agent/tool_backend/test_workflow_tool.py +0 -0
  385. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/auth/__init__.py +0 -0
  386. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/auth/test_chatgpt_oauth.py +0 -0
  387. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/auth/test_tokens.py +0 -0
  388. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/__init__.py +0 -0
  389. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/_app_test_utils.py +0 -0
  390. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app.py +0 -0
  391. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_agent_wiring.py +0 -0
  392. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_compaction_restore.py +0 -0
  393. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_composer_commands.py +0 -0
  394. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_composer_input.py +0 -0
  395. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_conversation_rendering.py +0 -0
  396. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_focus_behavior.py +0 -0
  397. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_image_vision_warning.py +0 -0
  398. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_mention_dropdown.py +0 -0
  399. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_model_effort_commands.py +0 -0
  400. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_model_switch_vision.py +0 -0
  401. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_modes_planning.py +0 -0
  402. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_navigation_commands.py +0 -0
  403. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_permission_prompts.py +0 -0
  404. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_persistence_history.py +0 -0
  405. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_plan_lifecycle.py +0 -0
  406. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_planning_questions.py +0 -0
  407. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_planning_restore.py +0 -0
  408. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_entries.py +0 -0
  409. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_errors.py +0 -0
  410. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_scroll.py +0 -0
  411. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_selection.py +0 -0
  412. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_status.py +0 -0
  413. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_rendering_tools.py +0 -0
  414. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_skill_commands.py +0 -0
  415. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_slash_dropdown.py +0 -0
  416. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_status_modes.py +0 -0
  417. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_app_sub_agents_workflows.py +0 -0
  418. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_clipboard_image.py +0 -0
  419. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_connection.py +0 -0
  420. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_file_index.py +0 -0
  421. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_mentions.py +0 -0
  422. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_session_store.py +0 -0
  423. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_skills.py +0 -0
  424. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_themes.py +0 -0
  425. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/cli/test_updater.py +0 -0
  426. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/conftest.py +0 -0
  427. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/hooks/__init__.py +0 -0
  428. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/hooks/test_hooks.py +0 -0
  429. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/tools/__init__.py +0 -0
  430. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/tools/test_definitions.py +0 -0
  431. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/utils/__init__.py +0 -0
  432. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/utils/test_images.py +0 -0
  433. {kolega_code-0.8.4 → kolega_code-0.10.0}/tests/utils/test_images_ascii.py +0 -0
@@ -0,0 +1,31 @@
1
+ # Developer/test credentials for this repository.
2
+ #
3
+ # Installed Kolega Code does NOT automatically load a target project's `.env`
4
+ # for its own provider/model configuration. For normal CLI use, save keys in the
5
+ # Settings tab or export environment variables in the shell that launches
6
+ # `kolega-code`.
7
+ #
8
+ # This sample exists for repository-local development and live integration tests.
9
+ # Copy it to `.env` only in this repo, fill only the keys you need, and never
10
+ # commit real secrets.
11
+
12
+ ANTHROPIC_API_KEY=
13
+ OPENAI_API_KEY=
14
+ # Prefer a ChatGPT subscription over an OpenAI API key? Run `/login` in the TUI
15
+ # (no key needed). Optional override of the OAuth client id, for testing only:
16
+ # KOLEGA_CODE_CHATGPT_CLIENT_ID=
17
+ GOOGLE_API_KEY=
18
+ FIREWORKS_API_KEY=
19
+ MOONSHOT_API_KEY=
20
+ DEEPSEEK_API_KEY=
21
+ ZAI_API_KEY=
22
+ KIMI_CODING_API_KEY=
23
+ OLLAMA_API_KEY=
24
+
25
+ KOLEGA_CODE_THINKING_EFFORT=
26
+
27
+ BROWSERLESS_API_KEY=
28
+
29
+ LANGFUSE_HOST=https://us.cloud.langfuse.com
30
+ LANGFUSE_PUBLIC_KEY=
31
+ LANGFUSE_SECRET_KEY=
@@ -0,0 +1,204 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main]
6
+ types: [opened, synchronize, reopened, ready_for_review]
7
+ push:
8
+ branches: [main]
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ concurrency:
15
+ group: ci-${{ github.workflow }}-${{ github.ref }}
16
+ cancel-in-progress: true
17
+
18
+ jobs:
19
+ changes:
20
+ name: Detect changed files
21
+ runs-on: ubuntu-latest
22
+ permissions:
23
+ contents: read
24
+ pull-requests: read
25
+ outputs:
26
+ coverage-badge-only: ${{ steps.detect.outputs.coverage-badge-only }}
27
+ steps:
28
+ - name: Detect coverage-badge-only change
29
+ id: detect
30
+ env:
31
+ GH_TOKEN: ${{ github.token }}
32
+ run: |
33
+ if [ "${{ github.event_name }}" = "pull_request" ]; then
34
+ files=$(gh api "repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files" --paginate --jq '.[].filename')
35
+ elif [ "${{ github.event_name }}" = "push" ]; then
36
+ files=$(gh api "repos/${{ github.repository }}/compare/${{ github.event.before }}...${{ github.sha }}" --jq '.files[].filename')
37
+ else
38
+ echo "coverage-badge-only=false" >> "$GITHUB_OUTPUT"
39
+ exit 0
40
+ fi
41
+
42
+ echo "Changed files:"
43
+ echo "$files"
44
+
45
+ file_count=$(printf '%s\n' "$files" | sed '/^$/d' | wc -l | tr -d ' ')
46
+ if [ "$file_count" = "1" ] && [ "$files" = "docs/src/assets/coverage.svg" ]; then
47
+ echo "coverage-badge-only=true" >> "$GITHUB_OUTPUT"
48
+ else
49
+ echo "coverage-badge-only=false" >> "$GITHUB_OUTPUT"
50
+ fi
51
+
52
+ tests:
53
+ name: Python ${{ matrix.python-version }}
54
+ needs: changes
55
+ runs-on: ubuntu-latest
56
+ strategy:
57
+ fail-fast: false
58
+ matrix:
59
+ python-version: ["3.11", "3.12"]
60
+
61
+ steps:
62
+ - name: Skip coverage-badge-only change
63
+ if: needs.changes.outputs.coverage-badge-only == 'true'
64
+ run: echo "Skipping Python checks for coverage badge-only change."
65
+
66
+ - name: Checkout
67
+ if: needs.changes.outputs.coverage-badge-only != 'true'
68
+ uses: actions/checkout@v5
69
+
70
+ - name: Setup Python
71
+ if: needs.changes.outputs.coverage-badge-only != 'true'
72
+ uses: actions/setup-python@v6
73
+ with:
74
+ python-version: ${{ matrix.python-version }}
75
+
76
+ - name: Setup uv
77
+ if: needs.changes.outputs.coverage-badge-only != 'true'
78
+ uses: astral-sh/setup-uv@v7
79
+ with:
80
+ enable-cache: true
81
+ cache-dependency-glob: uv.lock
82
+
83
+ - name: Install dependencies
84
+ if: needs.changes.outputs.coverage-badge-only != 'true'
85
+ run: uv sync --extra dev --frozen
86
+
87
+ - name: Run pre-commit hooks
88
+ if: needs.changes.outputs.coverage-badge-only != 'true'
89
+ run: uv run pre-commit run --all-files --show-diff-on-failure
90
+
91
+ - name: Run fast tests with coverage
92
+ if: needs.changes.outputs.coverage-badge-only != 'true'
93
+ run: ./run_tests.sh --coverage
94
+
95
+ - name: Upload coverage report
96
+ if: needs.changes.outputs.coverage-badge-only != 'true'
97
+ uses: actions/upload-artifact@v6
98
+ with:
99
+ name: coverage-xml-python-${{ matrix.python-version }}
100
+ path: coverage.xml
101
+ if-no-files-found: error
102
+
103
+ coverage-badge:
104
+ name: Update coverage badge
105
+ needs: [changes, tests]
106
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.changes.outputs.coverage-badge-only != 'true'
107
+ runs-on: ubuntu-latest
108
+ permissions:
109
+ contents: write
110
+ pull-requests: write
111
+ steps:
112
+ - name: Checkout
113
+ uses: actions/checkout@v5
114
+
115
+ - name: Setup Python
116
+ uses: actions/setup-python@v6
117
+ with:
118
+ python-version: "3.11"
119
+
120
+ - name: Setup uv
121
+ uses: astral-sh/setup-uv@v7
122
+ with:
123
+ enable-cache: true
124
+ cache-dependency-glob: uv.lock
125
+
126
+ - name: Install dependencies
127
+ run: uv sync --extra dev --frozen
128
+
129
+ - name: Download Python 3.11 coverage report
130
+ uses: actions/download-artifact@v8
131
+ with:
132
+ name: coverage-xml-python-3.11
133
+ path: coverage-artifact
134
+
135
+ - name: Generate coverage badge
136
+ run: |
137
+ uv run genbadge coverage -i coverage-artifact/coverage.xml -o docs/src/assets/coverage.svg
138
+ python - <<'PY'
139
+ from pathlib import Path
140
+
141
+ badge = Path("docs/src/assets/coverage.svg")
142
+ badge.write_text(badge.read_text().rstrip("\n") + "\n")
143
+ PY
144
+
145
+ - name: Verify coverage badge PR token
146
+ env:
147
+ COVERAGE_BADGE_PR_TOKEN: ${{ secrets.COVERAGE_BADGE_PR_TOKEN }}
148
+ run: |
149
+ if [ -z "$COVERAGE_BADGE_PR_TOKEN" ]; then
150
+ echo "::error::Set the COVERAGE_BADGE_PR_TOKEN repository secret to a trusted bot/user token."
151
+ exit 1
152
+ fi
153
+
154
+ - name: Create coverage badge pull request
155
+ id: cpr
156
+ uses: peter-evans/create-pull-request@v8
157
+ with:
158
+ token: ${{ secrets.COVERAGE_BADGE_PR_TOKEN }}
159
+ add-paths: docs/src/assets/coverage.svg
160
+ commit-message: "chore: update coverage badge"
161
+ committer: "${{ vars.COVERAGE_BADGE_COMMITTER || 'github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>' }}"
162
+ author: "${{ vars.COVERAGE_BADGE_AUTHOR || 'github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>' }}"
163
+ branch: chore/update-coverage-badge
164
+ delete-branch: true
165
+ title: "chore: update coverage badge"
166
+ body: |
167
+ Automated coverage badge update from CI after tests passed on `main`.
168
+
169
+ - name: Enable auto-merge for coverage badge PR
170
+ if: steps.cpr.outputs.pull-request-number != '' && steps.cpr.outputs.pull-request-operation != 'none'
171
+ env:
172
+ GH_TOKEN: ${{ secrets.COVERAGE_BADGE_PR_TOKEN }}
173
+ run: |
174
+ gh pr merge "${{ steps.cpr.outputs.pull-request-number }}" --auto --squash --delete-branch
175
+
176
+ dependency-audit:
177
+ name: Dependency audit
178
+ needs: changes
179
+ runs-on: ubuntu-latest
180
+ steps:
181
+ - name: Skip coverage-badge-only change
182
+ if: needs.changes.outputs.coverage-badge-only == 'true'
183
+ run: echo "Skipping dependency audit for coverage badge-only change."
184
+
185
+ - name: Checkout
186
+ if: needs.changes.outputs.coverage-badge-only != 'true'
187
+ uses: actions/checkout@v5
188
+
189
+ - name: Setup Python
190
+ if: needs.changes.outputs.coverage-badge-only != 'true'
191
+ uses: actions/setup-python@v6
192
+ with:
193
+ python-version: "3.11"
194
+
195
+ - name: Setup uv
196
+ if: needs.changes.outputs.coverage-badge-only != 'true'
197
+ uses: astral-sh/setup-uv@v7
198
+ with:
199
+ enable-cache: true
200
+ cache-dependency-glob: uv.lock
201
+
202
+ - name: Audit locked dependencies
203
+ if: needs.changes.outputs.coverage-badge-only != 'true'
204
+ run: uv audit --locked
@@ -7,7 +7,7 @@ __pycache__/
7
7
  .env
8
8
  .env.*
9
9
  !.env.example
10
- .kolega/permissions.json
10
+ .kolega/
11
11
  dist/
12
12
  build/
13
13
  *.egg-info/
@@ -6,6 +6,38 @@ This project uses GitHub Releases for detailed generated release notes. This fil
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.10.0 - 2026-06-25
10
+
11
+ ### Added
12
+
13
+ - Added a session changes inspector to the TUI that shows git diffs for the
14
+ current session, renders added files as diffs, presents an empty state, and
15
+ hides captured edit events.
16
+ - Added project prompt overrides, including variable rendering, override status
17
+ shown at startup, validation, and selective dump support.
18
+
19
+ ### Fixed
20
+
21
+ - Preserved Ollama Cloud reasoning provider metadata.
22
+ - Ignored project `.dotenv` files when loading model config.
23
+ - Stabilized terminal rendering artifacts in the TUI.
24
+ - Restored the generated root CLI help.
25
+ - Surfaced prompt override render errors.
26
+
27
+ ### Changed
28
+
29
+ - Split the LLM specs module into a package for maintainability.
30
+
31
+ ## 0.9.0 - 2026-06-24
32
+
33
+ ### Added
34
+
35
+ - Added Ollama Cloud as a supported provider, including its model catalog and reasoning-field capture.
36
+
37
+ ### Fixed
38
+
39
+ - Clarified the disconnected state shown on first run when no provider is configured.
40
+
9
41
  ## 0.8.4 - 2026-06-24
10
42
 
11
43
  ### Added
@@ -101,6 +101,31 @@ npm run build
101
101
 
102
102
  Use `npm run dev` from `docs/` for local documentation development.
103
103
 
104
+ ## Maintainer automation
105
+
106
+ The CI workflow updates `docs/src/assets/coverage.svg` by opening an automated pull
107
+ request. Configure the repository secret `COVERAGE_BADGE_PR_TOKEN` with a trusted
108
+ bot or maintainer token instead of `GITHUB_TOKEN`; GitHub requires manual approval
109
+ before workflows run on pull requests opened by `github-actions[bot]`.
110
+
111
+ Use a fine-grained personal access token or GitHub App token scoped to this
112
+ repository with:
113
+
114
+ - Contents: read and write
115
+ - Pull requests: read and write
116
+ - Metadata: read-only, included automatically
117
+
118
+ The token owner should be a trusted repository member or bot account. Do not use
119
+ a first-time external contributor account, and never commit the token value.
120
+
121
+ Optional repository variables can customize the Git commit identity used for the
122
+ badge update commit:
123
+
124
+ - `COVERAGE_BADGE_AUTHOR`
125
+ - `COVERAGE_BADGE_COMMITTER`
126
+
127
+ Use values like `Name <email@example.com>`.
128
+
104
129
  ## Pull Requests
105
130
 
106
131
  - Keep changes focused and avoid unrelated refactors.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.8.4
3
+ Version: 0.10.0
4
4
  Summary: Local-first AI coding agent for 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/
@@ -216,6 +216,13 @@ The `web_search` tool uses DuckDuckGo by default without a key. To choose anothe
216
216
  set it in **Settings** or export `KOLEGA_CODE_WEB_SEARCH_BACKEND` as `firecrawl`, `tavily`,
217
217
  or `searxng`; use `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, or `SEARXNG_BASE_URL` as needed.
218
218
 
219
+ Projects can also override Kolega Code's base prompts with uppercase Markdown templates in
220
+ `.kolega/prompts/`. Generate editable starters with Jinja replacement tags using `/prompts dump`
221
+ in the TUI or `kolega-code prompts dump --project .` in a terminal. To dump only selected
222
+ starters, pass prompt names such as `coder`, `planning`, or `compaction` (filename aliases
223
+ like `CODER.md` work too). Validate existing overrides with `/prompts validate` or
224
+ `kolega-code prompts validate --project .`.
225
+
219
226
  ## Requirements
220
227
 
221
228
  - **Python 3.11+**
@@ -134,6 +134,13 @@ The `web_search` tool uses DuckDuckGo by default without a key. To choose anothe
134
134
  set it in **Settings** or export `KOLEGA_CODE_WEB_SEARCH_BACKEND` as `firecrawl`, `tavily`,
135
135
  or `searxng`; use `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, or `SEARXNG_BASE_URL` as needed.
136
136
 
137
+ Projects can also override Kolega Code's base prompts with uppercase Markdown templates in
138
+ `.kolega/prompts/`. Generate editable starters with Jinja replacement tags using `/prompts dump`
139
+ in the TUI or `kolega-code prompts dump --project .` in a terminal. To dump only selected
140
+ starters, pass prompt names such as `coder`, `planning`, or `compaction` (filename aliases
141
+ like `CODER.md` work too). Validate existing overrides with `/prompts validate` or
142
+ `kolega-code prompts validate --project .`.
143
+
137
144
  ## Requirements
138
145
 
139
146
  - **Python 3.11+**
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 80.07%"><title>coverage: 80.07%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">80.07%</text><text x="865" y="150" fill-opacity=".3" textLength="430">80.07%</text></g><text x="865" y="140" textLength="430">80.07%</text></g></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 80.49%"><title>coverage: 80.49%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">80.49%</text><text x="865" y="150" fill-opacity=".3" textLength="430">80.49%</text></g><text x="865" y="140" textLength="430">80.49%</text></g></g></svg>
@@ -3,25 +3,29 @@ title: Environment Variables
3
3
  description: Every environment variable Kolega Code reads, and how precedence works.
4
4
  ---
5
5
 
6
- Kolega Code reads configuration from environment variables and from a project-local
7
- `.env` file. This page lists everything it understands.
6
+ Kolega Code reads configuration from CLI flags, exported environment variables,
7
+ and saved Settings. It does **not** automatically load the target project's
8
+ `.env` file for its own provider/model/API-key configuration. This page lists the
9
+ environment variables it understands when they are explicitly present in the
10
+ Kolega Code process environment.
8
11
 
9
12
  ## Precedence
10
13
 
11
14
  For any given setting, the first available source wins:
12
15
 
13
16
  1. **CLI flags** (e.g. `--provider`, `--model`)
14
- 2. **Shell environment variables**
15
- 3. **Project `.env` file** (in the project directory)
16
- 4. **Saved Settings** (`settings.json`)
17
+ 2. **Exported process environment variables**
18
+ 3. **Saved Settings** (`settings.json`)
17
19
 
18
- Kolega Code requires an explicit provider/model selection from flags,
19
- environment variables, a project `.env` file, or saved settings. API key
20
- variables alone are not a model selection source.
20
+ Kolega Code requires an explicit provider/model selection from flags, exported
21
+ environment variables, or saved settings. API key variables alone are not a model
22
+ selection source.
21
23
 
22
24
  :::note
23
- Within the env layer, your **shell environment takes priority over the `.env`
24
- file** values exported in your shell override the same key in `.env`.
25
+ A project `.env` file is treated as part of the project being edited. Kolega Code
26
+ will not read it for its own LLM configuration. For persistent credentials, use
27
+ Settings. For automation, export environment variables in the shell or CI process
28
+ that launches Kolega Code.
25
29
  :::
26
30
 
27
31
  ## API keys
@@ -46,12 +50,14 @@ provider or model.
46
50
  | `DEEPSEEK_API_KEY` | DeepSeek |
47
51
  | `ZAI_API_KEY` | Z.AI (GLM Coding Plan) |
48
52
  | `KIMI_CODING_API_KEY` | Kimi Coding Plan |
53
+ | `OLLAMA_API_KEY` | Ollama Cloud |
49
54
 
50
55
  The local `llama` provider needs no key. The `zai` key authenticates against Z.AI's
51
56
  Anthropic-compatible endpoint (it is the key Z.AI also documents as `ANTHROPIC_AUTH_TOKEN`).
52
57
  The `kimi_coding` key authenticates against the Kimi Coding Plan's separate
53
58
  Anthropic-compatible endpoint (`https://api.kimi.com/coding/`), which is distinct from the
54
59
  standard Moonshot API used by the `moonshot` provider.
60
+ The `OLLAMA_API_KEY` key authenticates against Ollama Cloud's direct API (`https://ollama.com/v1` for OpenAI-compatible requests).
55
61
 
56
62
  ## Model selection
57
63
 
@@ -109,37 +115,26 @@ Optional [Langfuse](https://langfuse.com/) tracing of LLM usage.
109
115
  | `LANGFUSE_PUBLIC_KEY` | Langfuse public key |
110
116
  | `LANGFUSE_SECRET_KEY` | Langfuse secret key |
111
117
 
112
- ## Using a `.env` file
118
+ ## About project `.env` files
113
119
 
114
- Kolega Code automatically loads a `.env` file from the project directory. A good
115
- starting point:
120
+ Kolega Code does not automatically load a `.env` file from the project directory.
121
+ That file commonly belongs to the app being edited, so consuming it as Kolega
122
+ Code configuration can accidentally pick up unrelated application secrets such as
123
+ `OPENAI_API_KEY`.
116
124
 
117
- ```bash title=".env"
118
- # Pick one provider's key (or several)
119
- MOONSHOT_API_KEY=
120
- DEEPSEEK_API_KEY=
121
- FIREWORKS_API_KEY=
122
- ANTHROPIC_API_KEY=
125
+ Use one of these instead:
123
126
 
124
- # Optional: choose models per role
125
- KOLEGA_CODE_PROVIDER=moonshot
126
- KOLEGA_CODE_MODEL=kimi-k2.7-code
127
- KOLEGA_CODE_THINKING_EFFORT=auto
128
-
129
- # Fireworks example:
130
- # KOLEGA_CODE_PROVIDER=fireworks
131
- # KOLEGA_CODE_MODEL=accounts/fireworks/models/glm-5p2
132
-
133
- # Optional: web search
134
- KOLEGA_CODE_WEB_SEARCH_BACKEND=duckduckgo
135
-
136
- # Optional: Langfuse tracing
137
- LANGFUSE_HOST=https://us.cloud.langfuse.com
138
- LANGFUSE_PUBLIC_KEY=
139
- LANGFUSE_SECRET_KEY=
127
+ ```bash title="one-off shell configuration"
128
+ export MOONSHOT_API_KEY=...
129
+ export KOLEGA_CODE_PROVIDER=moonshot
130
+ export KOLEGA_CODE_MODEL=kimi-k2.7-code
131
+ kolega-code
140
132
  ```
141
133
 
134
+ Or save the provider, model, and API key in the TUI Settings tab. Settings are
135
+ the recommended persistent configuration path for interactive use.
136
+
142
137
  :::caution
143
- Keep `.env` out of version control — it holds secrets. Add it to your
144
- `.gitignore`.
138
+ Keep project `.env` files out of version control — they often hold application
139
+ secrets. Add them to your `.gitignore`.
145
140
  :::
@@ -0,0 +1,145 @@
1
+ ---
2
+ title: Prompt overrides
3
+ ---
4
+
5
+ Kolega Code can load repository-local Markdown templates that replace its base system prompts. This is useful when a project needs a different operating style, stricter rules, or specialized instructions for sub-agents.
6
+
7
+ ## File layout
8
+
9
+ Create uppercase Markdown files under `.kolega/prompts/`:
10
+
11
+ ```text
12
+ .kolega/prompts/
13
+ CODER.md # CoderAgent, all coder modes
14
+ PLANNING.md # PlanningAgent
15
+ GENERAL.md # GeneralAgent sub-agent
16
+ INVESTIGATION.md # InvestigationAgent sub-agent
17
+ BROWSER.md # BrowserAgent sub-agent
18
+ COMPACTION.md # conversation compaction summarizer
19
+ ```
20
+
21
+ Only these uppercase filenames are recognized. Lowercase aliases such as `coder.md` are ignored. Every file is optional: you can override only `CODER.md`, only `COMPACTION.md`, or any subset. Missing files fall back to Kolega Code's bundled or host-provided defaults.
22
+
23
+ `CODER.md` is the only coder override. It applies to the coder agent in every coder mode, even though Kolega Code internally has separate hosted prompt template slots for `cli`, `code`, `vibe`, and `fix`.
24
+
25
+ ## Generate starter files
26
+
27
+ In the TUI, run:
28
+
29
+ ```text
30
+ /prompts dump
31
+ ```
32
+
33
+ From a terminal, run:
34
+
35
+ ```bash
36
+ kolega-code prompts dump --project .
37
+ ```
38
+
39
+ Both commands create any missing files in `.kolega/prompts/` from Kolega Code's current bundled/base prompts. Existing files are skipped by default so local edits are not overwritten.
40
+
41
+ To dump only specific starter files, pass one or more prompt selectors:
42
+
43
+ ```text
44
+ /prompts dump coder compaction
45
+ ```
46
+
47
+ ```bash
48
+ kolega-code prompts dump coder compaction --project .
49
+ ```
50
+
51
+ Supported selectors are `coder`, `planning`, `general`, `investigation`, `browser`, `compaction`, and `all`. Filename aliases are also accepted case-insensitively, so `CODER.md`, `coder.md`, and `CODER` all select the coder prompt.
52
+
53
+ To overwrite existing files:
54
+
55
+ ```text
56
+ /prompts dump --force
57
+ ```
58
+
59
+ ```bash
60
+ kolega-code prompts dump --project . --force
61
+ ```
62
+
63
+ `--force` also works with selective dumps:
64
+
65
+ ```bash
66
+ kolega-code prompts dump compaction --project . --force
67
+ ```
68
+
69
+ To see which overrides exist:
70
+
71
+ ```text
72
+ /prompts list
73
+ ```
74
+
75
+ ```bash
76
+ kolega-code prompts list --project .
77
+ ```
78
+
79
+ To validate existing overrides before restarting or sharing a repository:
80
+
81
+ ```text
82
+ /prompts validate
83
+ ```
84
+
85
+ ```bash
86
+ kolega-code prompts validate --project .
87
+ ```
88
+
89
+ Validation uses the same strict Jinja rendering check that runs during startup. Missing optional files are not errors. The terminal command exits `0` when all existing supported overrides are valid (or no overrides exist), and exits `1` when any override cannot render.
90
+
91
+ Dumped files are editable Markdown templates. Environment values are written as Jinja tags, not frozen current values. For example:
92
+
93
+ ```md
94
+ - Working directory: {{ context.project_path }}
95
+ - Is directory a git repo: {{ context.is_git_repo }}
96
+ - Platform: {{ context.platform }}
97
+ - Today's date: {{ context.date_today }}
98
+ - Model: {{ context.model_name }}
99
+ ```
100
+
101
+ ## Template variables
102
+
103
+ Override files are rendered with a limited Jinja variable context. These variables are available:
104
+
105
+ - `context.system_name`
106
+ - `context.project_path`
107
+ - `context.is_git_repo`
108
+ - `context.platform`
109
+ - `context.date_today`
110
+ - `context.model_name`
111
+ - `context.available_ports`
112
+ - `context.workspace_id`
113
+ - `context.workspace_environment_variables`
114
+ - `mode`
115
+ - `project_template_slug`
116
+
117
+ Common fields are also available as top-level aliases:
118
+
119
+ - `system_name`
120
+ - `project_path`
121
+ - `is_git_repo`
122
+ - `platform`
123
+ - `date_today`
124
+ - `model_name`
125
+ - `available_ports`
126
+ - `workspace_id`
127
+
128
+ Project override templates can use variables, conditionals, and loops over the exposed values. Project-local `{% include %}` and `{% import %}` are not supported.
129
+
130
+ ## How overrides are applied
131
+
132
+ Agent prompt overrides replace the bundled base system prompt for that agent type. Kolega Code still appends dynamic runtime/project sections after your override, including:
133
+
134
+ - matching prompt extensions, such as skills or gigacode guidance
135
+ - workspace memories
136
+ - `AGENTS.md` or legacy `KOLEGA.md` project guidance
137
+ - `AGENT_MEMORY.md`
138
+
139
+ `COMPACTION.md` is different: it fully replaces only the system prompt used by the conversation compaction summarizer. The user prompt containing the conversation history is still generated by Kolega Code.
140
+
141
+ Each override file is capped at 128 KiB. If a file is unreadable, too large, or cannot be rendered, Kolega Code logs a warning and falls back to the normal bundled/host prompt.
142
+
143
+ ## Security note
144
+
145
+ Prompt overrides let a repository influence agent behavior. Review `.kolega/prompts/` in untrusted projects just as you would review `AGENTS.md`, scripts, hooks, or other project-local automation.
@@ -27,6 +27,7 @@ The agent runtime recognizes these providers:
27
27
  | DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` |
28
28
  | Z.AI (GLM Coding Plan) | `zai` | `ZAI_API_KEY` |
29
29
  | Kimi Coding Plan | `kimi_coding` | `KIMI_CODING_API_KEY` |
30
+ | Ollama Cloud | `ollama_cloud` | `OLLAMA_API_KEY` |
30
31
  | Llama (local) | `llama` | _none — local model_ |
31
32
 
32
33
  <Aside type="tip">
@@ -45,6 +46,15 @@ with thinking effort `auto` (enabled) requests route to **K2.7 Code**, and with
45
46
  (disabled) they route to **K2.6**. Set `KIMI_CODING_API_KEY` to your Kimi Coding Plan key.
46
47
  </Aside>
47
48
 
49
+ <Aside type="tip">
50
+ **Ollama Cloud.** The `ollama_cloud` provider uses Ollama Cloud's direct
51
+ OpenAI-compatible API at `https://ollama.com/v1` with `OLLAMA_API_KEY`. Kolega
52
+ Code uses the direct API model IDs returned by Ollama, such as **`glm-5.2`** and
53
+ **`gpt-oss:120b`**, rather than local Ollama aliases such as `:cloud` or
54
+ `-cloud`. Ollama may deprecate or retire older cloud models, so the supported
55
+ model catalog should be refreshed periodically from Ollama's model library/API.
56
+ </Aside>
57
+
48
58
  <Aside type="tip">
49
59
  **Fireworks.ai.** The `fireworks` provider targets Fireworks' OpenAI-compatible
50
60
  serverless endpoint (`https://api.fireworks.ai/inference/v1`) with `FIREWORKS_API_KEY`.
@@ -164,6 +174,8 @@ models in the TUI.
164
174
  | Z.AI `glm-5.2` | `high`, `max` | `max` |
165
175
  | Z.AI `glm-5.1` | `auto`, `none` | `auto` |
166
176
  | Fireworks serverless reasoning models | `none`, `low`, `medium`, `high`, `max` | `medium` |
177
+ | Ollama Cloud thinking models | `none`, `low`, `medium`, `high`, `max` | `medium` |
178
+ | Ollama Cloud `gpt-oss:*` | `low`, `medium`, `high` | `medium` |
167
179
  | Google `gemini-2.5-pro` | `auto`, `low`, `medium`, `high` | `medium` |
168
180
  | OpenAI reasoning models | `low`, `medium`, `high` | `medium` |
169
181
 
@@ -151,4 +151,4 @@ __all__ = [
151
151
  "parse_git_status_output",
152
152
  ]
153
153
 
154
- __version__ = "0.8.4"
154
+ __version__ = "0.10.0"
@@ -44,4 +44,4 @@ __all__ = [
44
44
  "ToolExtension",
45
45
  ]
46
46
 
47
- __version__ = "0.8.4"
47
+ __version__ = "0.10.0"