kolega-code 0.9.0__tar.gz → 0.11.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 (436) hide show
  1. {kolega_code-0.9.0 → kolega_code-0.11.0}/.env.example +10 -2
  2. kolega_code-0.11.0/.github/workflows/ci.yml +204 -0
  3. {kolega_code-0.9.0 → kolega_code-0.11.0}/.gitignore +1 -1
  4. {kolega_code-0.9.0 → kolega_code-0.11.0}/CHANGELOG.md +35 -0
  5. {kolega_code-0.9.0 → kolega_code-0.11.0}/CONTRIBUTING.md +25 -0
  6. {kolega_code-0.9.0 → kolega_code-0.11.0}/PKG-INFO +127 -59
  7. kolega_code-0.11.0/README.md +237 -0
  8. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/astro.config.mjs +2 -2
  9. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/assets/coverage.svg +1 -1
  10. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/concepts/how-it-works.md +29 -5
  11. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/configuration/environment-variables.md +30 -42
  12. kolega_code-0.11.0/docs/src/content/docs/configuration/prompt-overrides.md +145 -0
  13. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/configuration/providers-and-models.mdx +6 -2
  14. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/getting-started/quick-start.mdx +20 -4
  15. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/gigacode.mdx +32 -11
  16. kolega_code-0.11.0/docs/src/content/docs/index.mdx +118 -0
  17. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/skills.mdx +2 -2
  18. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/tui/composer.md +21 -0
  19. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/tui/interface.md +6 -1
  20. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/tui/slash-commands.md +5 -0
  21. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/__init__.py +1 -1
  22. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/__init__.py +1 -1
  23. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/baseagent.py +104 -1
  24. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/browseragent.py +2 -9
  25. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/coder.py +2 -9
  26. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/compression.py +3 -1
  27. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/conversation.py +13 -2
  28. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/generalagent.py +2 -8
  29. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/investigationagent.py +2 -9
  30. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/planningagent.py +2 -29
  31. kolega_code-0.11.0/kolega_code/agent/prompt_dump.py +407 -0
  32. kolega_code-0.11.0/kolega_code/agent/prompt_overrides.py +197 -0
  33. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_provider.py +89 -8
  34. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/app.py +189 -18
  35. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/config.py +134 -19
  36. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/main.py +73 -6
  37. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/messages.py +8 -0
  38. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/provider_registry.py +1 -1
  39. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/slash_commands.py +2 -0
  40. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/agent_runtime.py +167 -26
  41. kolega_code-0.11.0/kolega_code/cli/tui/changes_screen.py +346 -0
  42. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/command_handlers.py +97 -0
  43. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/prompt_flows.py +14 -4
  44. kolega_code-0.11.0/kolega_code/cli/tui/session_diff.py +264 -0
  45. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/settings_panel.py +27 -10
  46. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/state.py +27 -0
  47. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/styles.tcss +253 -26
  48. kolega_code-0.11.0/kolega_code/cli/tui/terminal_display.py +137 -0
  49. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/transcript.py +80 -5
  50. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/widgets.py +2 -0
  51. kolega_code-0.11.0/kolega_code/llm/specs/__init__.py +27 -0
  52. kolega_code-0.11.0/kolega_code/llm/specs/accessors.py +56 -0
  53. kolega_code-0.11.0/kolega_code/llm/specs/catalog/__init__.py +41 -0
  54. kolega_code-0.11.0/kolega_code/llm/specs/catalog/anthropic.py +69 -0
  55. kolega_code-0.11.0/kolega_code/llm/specs/catalog/dashscope.py +15 -0
  56. kolega_code-0.11.0/kolega_code/llm/specs/catalog/deepseek.py +27 -0
  57. kolega_code-0.11.0/kolega_code/llm/specs/catalog/fireworks.py +84 -0
  58. kolega_code-0.11.0/kolega_code/llm/specs/catalog/google.py +27 -0
  59. kolega_code-0.11.0/kolega_code/llm/specs/catalog/kimi_coding.py +17 -0
  60. kolega_code-0.11.0/kolega_code/llm/specs/catalog/moonshot.py +38 -0
  61. kolega_code-0.11.0/kolega_code/llm/specs/catalog/ollama_cloud.py +325 -0
  62. kolega_code-0.11.0/kolega_code/llm/specs/catalog/openai.py +47 -0
  63. kolega_code-0.11.0/kolega_code/llm/specs/catalog/openai_chatgpt.py +55 -0
  64. kolega_code-0.11.0/kolega_code/llm/specs/catalog/together.py +15 -0
  65. kolega_code-0.11.0/kolega_code/llm/specs/catalog/xai.py +22 -0
  66. kolega_code-0.11.0/kolega_code/llm/specs/catalog/zai.py +29 -0
  67. kolega_code-0.11.0/kolega_code/llm/specs/thinking.py +100 -0
  68. kolega_code-0.11.0/kolega_code/llm/specs/types.py +11 -0
  69. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/services/terminal.py +51 -12
  70. {kolega_code-0.9.0 → kolega_code-0.11.0}/pyproject.toml +2 -2
  71. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_live_providers.py +22 -86
  72. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_openai_message_conversion.py +38 -1
  73. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_terminal.py +43 -1
  74. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_compression.py +57 -2
  75. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_empty_message_handling.py +12 -0
  76. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_history_adapter_thinking.py +60 -0
  77. kolega_code-0.11.0/tests/agent/test_prompt_dump.py +163 -0
  78. kolega_code-0.11.0/tests/agent/test_prompt_overrides.py +280 -0
  79. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_agent_wiring.py +1 -1
  80. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_bootstrap_settings.py +172 -6
  81. kolega_code-0.11.0/tests/cli/test_app_changes_inspector.py +256 -0
  82. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_composer_input.py +258 -0
  83. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_misc_commands.py +102 -1
  84. kolega_code-0.11.0/tests/cli/test_app_permission_prompts.py +675 -0
  85. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_persistence_history.py +1 -1
  86. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_planning_questions.py +3 -3
  87. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_errors.py +3 -2
  88. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_status.py +11 -5
  89. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_streaming.py +44 -0
  90. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_terminal_logs.py +92 -0
  91. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_tools.py +2 -2
  92. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_cli_config.py +101 -1
  93. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_main.py +113 -0
  94. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_provider_registry.py +9 -0
  95. kolega_code-0.11.0/tests/cli/test_session_diff.py +131 -0
  96. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_slash_commands.py +6 -0
  97. kolega_code-0.11.0/tests/cli/test_terminal_display.py +42 -0
  98. kolega_code-0.11.0/tests/cli/test_tui_stylesheet.py +430 -0
  99. {kolega_code-0.9.0 → kolega_code-0.11.0}/uv.lock +2 -2
  100. kolega_code-0.9.0/.github/workflows/ci.yml +0 -131
  101. kolega_code-0.9.0/README.md +0 -169
  102. kolega_code-0.9.0/docs/src/content/docs/index.mdx +0 -87
  103. kolega_code-0.9.0/kolega_code/llm/specs.py +0 -892
  104. kolega_code-0.9.0/tests/cli/test_app_permission_prompts.py +0 -262
  105. kolega_code-0.9.0/tests/cli/test_tui_stylesheet.py +0 -81
  106. {kolega_code-0.9.0 → kolega_code-0.11.0}/.githooks/pre-commit +0 -0
  107. {kolega_code-0.9.0 → kolega_code-0.11.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  108. {kolega_code-0.9.0 → kolega_code-0.11.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  109. {kolega_code-0.9.0 → kolega_code-0.11.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  110. {kolega_code-0.9.0 → kolega_code-0.11.0}/.github/workflows/docs.yml +0 -0
  111. {kolega_code-0.9.0 → kolega_code-0.11.0}/.github/workflows/release.yml +0 -0
  112. {kolega_code-0.9.0 → kolega_code-0.11.0}/.pre-commit-config.yaml +0 -0
  113. {kolega_code-0.9.0 → kolega_code-0.11.0}/LICENSE +0 -0
  114. {kolega_code-0.9.0 → kolega_code-0.11.0}/RELEASING.md +0 -0
  115. {kolega_code-0.9.0 → kolega_code-0.11.0}/SECURITY.md +0 -0
  116. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/.gitignore +0 -0
  117. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/README.md +0 -0
  118. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/package-lock.json +0 -0
  119. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/package.json +0 -0
  120. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/public/favicon.svg +0 -0
  121. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/assets/demo.gif +0 -0
  122. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/assets/kolega-dark.svg +0 -0
  123. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/assets/kolega-light.svg +0 -0
  124. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/cli/ask.md +0 -0
  125. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/cli/doctor.md +0 -0
  126. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/cli/overview.md +0 -0
  127. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/cli/sessions.md +0 -0
  128. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/concepts/agents.md +0 -0
  129. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/concepts/tools.md +0 -0
  130. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +0 -0
  131. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
  132. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
  133. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/hooks.md +0 -0
  134. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/tui/modes.md +0 -0
  135. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
  136. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/content.config.ts +0 -0
  137. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/src/styles/brand.css +0 -0
  138. {kolega_code-0.9.0 → kolega_code-0.11.0}/docs/tsconfig.json +0 -0
  139. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/common.py +0 -0
  140. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/context.py +0 -0
  141. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/errors.py +0 -0
  142. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/__init__.py +0 -0
  143. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/budget.py +0 -0
  144. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/errors.py +0 -0
  145. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/executor.py +0 -0
  146. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/guide.py +0 -0
  147. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/journal.py +0 -0
  148. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/runtime.py +0 -0
  149. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/orchestration/types.py +0 -0
  150. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  151. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  152. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  153. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  154. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
  155. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  156. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  157. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  158. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
  159. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
  160. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
  161. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
  162. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  163. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  164. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  165. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  166. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  167. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  168. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  169. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  170. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  171. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  172. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/prompts.py +0 -0
  173. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
  174. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  175. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  176. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  177. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/create_file_tool.py +0 -0
  178. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
  179. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  180. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
  181. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
  182. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  183. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
  184. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -0
  185. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +0 -0
  186. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +0 -0
  187. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
  188. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
  189. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
  190. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
  191. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
  192. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
  193. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
  194. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
  195. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  196. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  197. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  198. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
  199. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  200. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
  201. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
  202. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/tools.py +0 -0
  203. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/agent/utils/commands.py +0 -0
  204. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/auth/__init__.py +0 -0
  205. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/auth/_jwt.py +0 -0
  206. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
  207. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/auth/constants.py +0 -0
  208. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/auth/tokens.py +0 -0
  209. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/__init__.py +0 -0
  210. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/clipboard_image.py +0 -0
  211. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/connection.py +0 -0
  212. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/file_index.py +0 -0
  213. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/mentions.py +0 -0
  214. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/session_store.py +0 -0
  215. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/settings.py +0 -0
  216. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/skills.py +0 -0
  217. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/theme.py +0 -0
  218. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/__init__.py +0 -0
  219. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/constants.py +0 -0
  220. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/status_dashboard.py +0 -0
  221. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
  222. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/cli/updater.py +0 -0
  223. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/config.py +0 -0
  224. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/events.py +0 -0
  225. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/__init__.py +0 -0
  226. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/backends.py +0 -0
  227. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/config.py +0 -0
  228. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/dispatcher.py +0 -0
  229. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/events.py +0 -0
  230. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/matcher.py +0 -0
  231. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/hooks/outcome.py +0 -0
  232. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/client.py +0 -0
  233. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/exceptions.py +0 -0
  234. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/instrumented_client.py +0 -0
  235. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/models.py +0 -0
  236. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/__init__.py +0 -0
  237. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/anthropic.py +0 -0
  238. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/base.py +0 -0
  239. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
  240. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/google.py +0 -0
  241. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/models.py +0 -0
  242. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/openai.py +0 -0
  243. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/openai_responses.py +0 -0
  244. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/providers/responses_common.py +0 -0
  245. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/ratelimit.py +0 -0
  246. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/llm/tool_execution_ids.py +0 -0
  247. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/local_state.py +0 -0
  248. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/models/__init__.py +0 -0
  249. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
  250. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/permissions.py +0 -0
  251. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/runtime.py +0 -0
  252. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/README.md +0 -0
  253. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/__init__.py +0 -0
  254. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/async_filesystem.py +0 -0
  255. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/base.py +0 -0
  256. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/browser.py +0 -0
  257. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/event_loop.py +0 -0
  258. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/filesystem.py +0 -0
  259. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/local.py +0 -0
  260. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/serializer.py +0 -0
  261. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/terminal.py +0 -0
  262. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/sandbox/utils.py +0 -0
  263. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/services/base.py +0 -0
  264. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/services/browser.py +0 -0
  265. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/services/file_system.py +0 -0
  266. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/services/html.py +0 -0
  267. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/services/terminal_buffer.py +0 -0
  268. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/tools/__init__.py +0 -0
  269. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/tools/core.py +0 -0
  270. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/tools/definitions.py +0 -0
  271. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/tools/registry.py +0 -0
  272. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/utils/__init__.py +0 -0
  273. {kolega_code-0.9.0 → kolega_code-0.11.0}/kolega_code/utils/images.py +0 -0
  274. {kolega_code-0.9.0 → kolega_code-0.11.0}/run_tests.sh +0 -0
  275. {kolega_code-0.9.0 → kolega_code-0.11.0}/scripts/check-dev-hooks.sh +0 -0
  276. {kolega_code-0.9.0 → kolega_code-0.11.0}/scripts/install-kolega-code.sh +0 -0
  277. {kolega_code-0.9.0 → kolega_code-0.11.0}/scripts/setup-dev.sh +0 -0
  278. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/__init__.py +0 -0
  279. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/__init__.py +0 -0
  280. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/compaction_helpers.py +0 -0
  281. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/conftest.py +0 -0
  282. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/__init__.py +0 -0
  283. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/_token_counting_utils.py +0 -0
  284. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_anthropic_token_counting.py +0 -0
  285. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_billing_openai_cache.py +0 -0
  286. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_chatgpt_live.py +0 -0
  287. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_chatgpt_oauth_auth_config.py +0 -0
  288. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_chatgpt_oauth_conversion.py +0 -0
  289. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -0
  290. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +0 -0
  291. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_chatgpt_oauth_streaming.py +0 -0
  292. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_client.py +0 -0
  293. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_client_live.py +0 -0
  294. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_client_runtime.py +0 -0
  295. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_dashscope_mapping.py +0 -0
  296. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_error_boundary.py +0 -0
  297. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_exceptions.py +0 -0
  298. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_google_thought_signature.py +0 -0
  299. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_google_tool_signature_live.py +0 -0
  300. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_instrumented_client.py +0 -0
  301. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_instrumented_client_integration.py +0 -0
  302. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_instrumented_client_stream.py +0 -0
  303. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_langfuse_normalization.py +0 -0
  304. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_message_conversion.py +0 -0
  305. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_model_specs.py +0 -0
  306. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_openai_cached_tokens.py +0 -0
  307. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_openai_cached_tokens_stream.py +0 -0
  308. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_openai_responses_provider.py +0 -0
  309. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_openai_token_counting.py +0 -0
  310. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_provider_usage_mapping.py +0 -0
  311. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_supports_vision.py +0 -0
  312. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_thinking_effort.py +0 -0
  313. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/llm/test_tool_execution_ids.py +0 -0
  314. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/orchestration/__init__.py +0 -0
  315. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/orchestration/test_orchestration.py +0 -0
  316. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/__init__.py +0 -0
  317. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_browser.py +0 -0
  318. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_browser_console_logs.py +0 -0
  319. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_browser_content.py +0 -0
  320. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_browser_integration.py +0 -0
  321. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_browser_parity.py +0 -0
  322. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_file_system.py +0 -0
  323. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_file_system_integration.py +0 -0
  324. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_file_system_path.py +0 -0
  325. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_local_file_system.py +0 -0
  326. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_sandbox_terminal_input.py +0 -0
  327. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_terminal_buffer.py +0 -0
  328. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/services/test_terminal_state_serializer.py +0 -0
  329. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_agent_tools_inventory.py +0 -0
  330. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent.py +0 -0
  331. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_anthropic_history_validation.py +0 -0
  332. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_compaction.py +0 -0
  333. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_effective_history.py +0 -0
  334. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_history_serialization.py +0 -0
  335. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_prompt_context.py +0 -0
  336. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_role_overrides.py +0 -0
  337. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_runtime.py +0 -0
  338. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_tool_call_repair.py +0 -0
  339. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_tool_call_repair_integration.py +0 -0
  340. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_base_agent_tool_execution.py +0 -0
  341. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_coder_attachments.py +0 -0
  342. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_coder_prompt_extensions.py +0 -0
  343. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_commands.py +0 -0
  344. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_compaction_integration.py +0 -0
  345. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_compaction_persistence.py +0 -0
  346. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_compaction_subagent.py +0 -0
  347. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_compaction_tui_events.py +0 -0
  348. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_compress_command.py +0 -0
  349. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_conversation_compaction.py +0 -0
  350. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_duplicate_tool_results.py +0 -0
  351. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_event_emitter.py +0 -0
  352. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_general_agent.py +0 -0
  353. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_gigacode_gating.py +0 -0
  354. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_history_image_blocks.py +0 -0
  355. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_hooks_integration.py +0 -0
  356. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_html.py +0 -0
  357. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_image_compat.py +0 -0
  358. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_parallel_tool_calls.py +0 -0
  359. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_permissions.py +0 -0
  360. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_planning_agent.py +0 -0
  361. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_prompt_provider.py +0 -0
  362. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_prompts.py +0 -0
  363. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_read_image_tool.py +0 -0
  364. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tool_collection_builtin_dispatch.py +0 -0
  365. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tool_collection_config.py +0 -0
  366. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tool_collection_extensions.py +0 -0
  367. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tool_collection_initialization.py +0 -0
  368. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tool_collection_memory.py +0 -0
  369. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tool_registry.py +0 -0
  370. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/test_tools.py +0 -0
  371. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/__init__.py +0 -0
  372. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_agent_tool.py +0 -0
  373. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_base_tool.py +0 -0
  374. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_browser_tool.py +0 -0
  375. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_build_tool.py +0 -0
  376. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_create_file_tool.py +0 -0
  377. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_edit_preview.py +0 -0
  378. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_glob_tool.py +0 -0
  379. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
  380. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
  381. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_read_file_tool.py +0 -0
  382. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_replace_entire_file_tool.py +0 -0
  383. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_replace_lines_tool.py +0 -0
  384. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_search_and_replace_tool.py +0 -0
  385. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_search_codebase_tool.py +0 -0
  386. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_terminal_tool.py +0 -0
  387. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
  388. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_think_hard_streaming.py +0 -0
  389. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_think_hard_streaming_content.py +0 -0
  390. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_think_hard_streaming_errors.py +0 -0
  391. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_think_hard_streaming_updates.py +0 -0
  392. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_web_fetch_tool.py +0 -0
  393. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
  394. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/agent/tool_backend/test_workflow_tool.py +0 -0
  395. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/auth/__init__.py +0 -0
  396. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/auth/test_chatgpt_oauth.py +0 -0
  397. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/auth/test_tokens.py +0 -0
  398. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/__init__.py +0 -0
  399. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/_app_test_utils.py +0 -0
  400. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app.py +0 -0
  401. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_compaction_restore.py +0 -0
  402. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_composer_commands.py +0 -0
  403. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_conversation_rendering.py +0 -0
  404. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_focus_behavior.py +0 -0
  405. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_image_vision_warning.py +0 -0
  406. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_mention_dropdown.py +0 -0
  407. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_model_effort_commands.py +0 -0
  408. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_model_switch_vision.py +0 -0
  409. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_modes_planning.py +0 -0
  410. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_navigation_commands.py +0 -0
  411. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_plan_lifecycle.py +0 -0
  412. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_planning_restore.py +0 -0
  413. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_entries.py +0 -0
  414. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_scroll.py +0 -0
  415. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_rendering_selection.py +0 -0
  416. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_skill_commands.py +0 -0
  417. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_slash_dropdown.py +0 -0
  418. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_status_modes.py +0 -0
  419. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_app_sub_agents_workflows.py +0 -0
  420. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_clipboard_image.py +0 -0
  421. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_connection.py +0 -0
  422. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_file_index.py +0 -0
  423. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_mentions.py +0 -0
  424. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_session_store.py +0 -0
  425. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_settings.py +0 -0
  426. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_skills.py +0 -0
  427. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_themes.py +0 -0
  428. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/cli/test_updater.py +0 -0
  429. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/conftest.py +0 -0
  430. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/hooks/__init__.py +0 -0
  431. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/hooks/test_hooks.py +0 -0
  432. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/tools/__init__.py +0 -0
  433. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/tools/test_definitions.py +0 -0
  434. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/utils/__init__.py +0 -0
  435. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/utils/test_images.py +0 -0
  436. {kolega_code-0.9.0 → kolega_code-0.11.0}/tests/utils/test_images_ascii.py +0 -0
@@ -1,5 +1,13 @@
1
- # Local test credentials. Copy this file to `.env` and fill only the keys you need.
2
- # `.env` is ignored by git; do not commit real secrets.
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.
3
11
 
4
12
  ANTHROPIC_API_KEY=
5
13
  OPENAI_API_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,41 @@ This project uses GitHub Releases for detailed generated release notes. This fil
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.11.0 - 2026-06-26
10
+
11
+ ### Added
12
+
13
+ - Added queued follow-up messages in the TUI so users can submit additional
14
+ prompts while an active turn is still running.
15
+
16
+ ### Changed
17
+
18
+ - Moved task-list status into the sidebar and refined sidebar presentation.
19
+ - Updated documentation and positioning copy for gigacode and queued follow-up
20
+ messages.
21
+
22
+ ## 0.10.0 - 2026-06-25
23
+
24
+ ### Added
25
+
26
+ - Added a session changes inspector to the TUI that shows git diffs for the
27
+ current session, renders added files as diffs, presents an empty state, and
28
+ hides captured edit events.
29
+ - Added project prompt overrides, including variable rendering, override status
30
+ shown at startup, validation, and selective dump support.
31
+
32
+ ### Fixed
33
+
34
+ - Preserved Ollama Cloud reasoning provider metadata.
35
+ - Ignored project `.dotenv` files when loading model config.
36
+ - Stabilized terminal rendering artifacts in the TUI.
37
+ - Restored the generated root CLI help.
38
+ - Surfaced prompt override render errors.
39
+
40
+ ### Changed
41
+
42
+ - Split the LLM specs module into a package for maintainability.
43
+
9
44
  ## 0.9.0 - 2026-06-24
10
45
 
11
46
  ### 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,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.9.0
4
- Summary: Local-first AI coding agent for the terminal
3
+ Version: 0.11.0
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/
7
7
  Project-URL: Repository, https://github.com/kolega-ai/kolega-code
@@ -82,7 +82,7 @@ Description-Content-Type: text/markdown
82
82
 
83
83
  # Kolega Code
84
84
 
85
- **An AI coding agent that runs in your terminal — local-first, model-agnostic, plan-then-build.**
85
+ **Multi-agent coding in the terminal.**
86
86
 
87
87
  [![PyPI version](https://img.shields.io/pypi/v/kolega-code)](https://pypi.org/project/kolega-code/)
88
88
  [![Python versions](https://img.shields.io/pypi/pyversions/kolega-code)](https://pypi.org/project/kolega-code/)
@@ -92,41 +92,65 @@ Description-Content-Type: text/markdown
92
92
  [![Docs](https://img.shields.io/badge/docs-kolega--ai.github.io-blue)](https://kolega-ai.github.io/kolega-code/)
93
93
  [![Changelog](https://img.shields.io/badge/changelog-keep%20up-blue)](CHANGELOG.md)
94
94
 
95
- Point Kolega Code at a project directory and it opens an interactive UI where you talk to an
96
- agent that can read and edit your code, run shell commands, search the codebase, browse the
97
- web, and dispatch specialized sub-agents to get work done.
98
-
99
- It's **local-first**: the agent operates on your actual filesystem and terminal, and your
100
- sessions, settings, and API keys stay on your own machine.
95
+ Kolega Code is a local-first terminal coding agent built for work that is too wide
96
+ for one loop: fan out specialized sub-agents with **Gigacode**, route different
97
+ models to different jobs, search the web, drive a browser, and keep sessions,
98
+ settings, permissions, and credentials on your machine.
101
99
 
102
100
  ![Kolega Code in action](docs/src/assets/demo.gif)
103
101
 
104
- ## Why Kolega Code
105
-
106
- - **Plans before it builds.** A read-only **Plan mode** produces a reviewable plan and a
107
- shared task list before anything changes; **Build mode** implements it. Toggle with `Shift+Tab`.
108
- - **Orchestrates many agents.** For larger jobs, the main agent dispatches specialized
109
- sub-agents (investigation, browser, coding, general) and can fan them out in parallel for
110
- broad audits, large migrations, or implementing a plan's independent parts at once.
111
- - **Local-first by design.** It works on your real files and terminal; sessions, settings,
112
- and credentials live on your machine, not in someone else's cloud.
113
- - **Bring your own model.** Talks to a range of providers and lets you assign different models
114
- to different roles.
115
-
116
- ## What it does
117
-
118
- - **Reads and edits your code.** Opens files, searches across the codebase, creates new files,
119
- and applies precise edits.
120
- - **Runs commands.** Executes shell commands and watches their output in a dedicated terminal view.
121
- - **Plans before it builds.** Plan mode investigates and proposes; Build mode executes.
122
- - **Searches and browses the web.** The agent can search for relevant pages, fetch URLs
123
- directly, or use the built-in browser agent (powered by Playwright) when a task needs
124
- site interaction.
125
- - **Dispatches sub-agents.** Hands work off to specialized agents and tracks their activity live.
126
- - **Orchestrates workflows.** With [gigacode](https://kolega-ai.github.io/kolega-code/gigacode/),
127
- it fans out many sub-agents in parallel.
128
- - **Works non-interactively too.** Run a single prompt with `kolega-code ask`, get JSON output,
129
- and save or resume sessions.
102
+ ## Built for work one agent cannot cover
103
+
104
+ Most terminal agents are strongest when one model can reason through one task at a
105
+ time. Kolega Code keeps that familiar workflow, then adds orchestration for broad work:
106
+ large audits, sweeping migrations, cross-file checks, adversarial reviews, and
107
+ implementation plans whose pieces can run independently.
108
+
109
+ With [Gigacode](https://kolega-ai.github.io/kolega-code/gigacode/), Kolega Code can:
110
+
111
+ - **Fan out many sub-agents at once.** Split a wide codebase review by package,
112
+ assign independent implementation tasks, or run checks across many directories in
113
+ parallel.
114
+ - **Use real workflow shapes.** The agent can generate parallel phases, pipelines,
115
+ loops, judge panels, and synthesis steps instead of only delegating one task at a
116
+ time.
117
+ - **Keep orchestration visible.** Workflow phase headers and progress lines appear
118
+ in the transcript; the sub-agent inspector shows each agent's live trajectory.
119
+ - **Save inspectable artifacts.** Each run keeps the generated workflow script,
120
+ result files, a Markdown transcript, raw JSONL, a resume journal, and debug
121
+ sub-agent transcripts under Kolega Code's state directory.
122
+ - **Run in either mode.** In Plan mode, workflow sub-agents stay read-only for
123
+ parallel investigation. In Build mode, they can use the full coding toolset.
124
+ - **Resume interrupted runs.** Finished workflow steps are journaled so a deliberate
125
+ resume does not have to restart the whole fan-out.
126
+
127
+ Use normal chat for focused changes. Turn on Gigacode when the problem is broad
128
+ enough that one serial agent pass would be the bottleneck.
129
+
130
+ ## Features
131
+
132
+ - **Gigacode orchestration:** parallel, pipelined, looped, judged, and synthesized
133
+ multi-agent workflows with saved artifacts and resume support.
134
+ - **Specialized sub-agents:** planning, building/coder, investigation, general, and
135
+ browser agents, with live activity tracking in the TUI.
136
+ - **Repo tools:** read and search code, create files, apply precise edits, and inspect
137
+ session changes/diffs.
138
+ - **Terminal execution:** run shell commands with streamed output and project-level
139
+ permission controls.
140
+ - **Plan/build workflow:** use read-only Plan mode for investigation and a reviewable
141
+ task list, then Build mode to implement.
142
+ - **Web search and browsing:** DuckDuckGo works by default with no key; Firecrawl,
143
+ Tavily, and SearXNG are configurable search backends. Kolega Code can also fetch URLs
144
+ directly and use a Playwright-powered browser agent for interactive sites.
145
+ - **Model routing:** choose provider/model combinations, set thinking effort, split
146
+ long-context/fast/thinking roles, and override models per agent role.
147
+ - **Interactive or scriptable:** use the Textual TUI, queue follow-up prompts
148
+ while the agent is working, run `kolega-code ask`, request JSON output,
149
+ list/export/resume sessions, and diagnose setup with `doctor`.
150
+ - **Extensibility:** add agent skills, override prompts with project templates, run
151
+ lifecycle hooks, and persist project permission rules.
152
+ - **Local-first state:** sessions, settings, permissions, OAuth tokens, and API-key
153
+ settings stay on your machine with restrictive permissions where applicable.
130
154
 
131
155
  ## Quick start
132
156
 
@@ -155,8 +179,9 @@ kolega-code --version
155
179
  kolega-code .
156
180
  ```
157
181
 
158
- **3. Add a provider key.** Open the **Settings** tab to pick a provider and model and save your
159
- API key. Then press `Shift+Tab` anytime to switch between **Plan** and **Build** mode.
182
+ **3. Add a provider key.** Open the **Settings** tab to pick a provider/model and
183
+ save your API key. Use `Shift+Tab` to switch between **Plan** and **Build** mode,
184
+ or run `/gigacode on` when a task is broad enough for fan-out.
160
185
 
161
186
  Resume a previous conversation:
162
187
 
@@ -169,7 +194,7 @@ kolega-code . --resume <id> # a specific thread or session
169
194
 
170
195
  | Mode | Command | Best for |
171
196
  | --- | --- | --- |
172
- | **Interactive TUI** | `kolega-code .` | Day-to-day development, exploration, pair-programming |
197
+ | **Interactive TUI** | `kolega-code .` | Day-to-day development, exploration, orchestration |
173
198
  | **One-shot** | `kolega-code ask "…"` | Scripting, automation, quick questions, CI |
174
199
 
175
200
  There are also helper commands for managing sessions and checking your setup:
@@ -180,25 +205,60 @@ kolega-code sessions list --project .
180
205
  kolega-code doctor --project .
181
206
  ```
182
207
 
183
- ## Bring your own model
208
+ ## Supported providers
209
+
210
+ Kolega Code supports a broad model-provider catalog and lets you route models by
211
+ role instead of forcing one model to do every job.
212
+
213
+ Supported model providers:
214
+
215
+ - Anthropic
216
+ - OpenAI API
217
+ - OpenAI via ChatGPT subscription sign-in
218
+ - Google
219
+ - Groq
220
+ - Together.ai
221
+ - Fireworks.ai
222
+ - xAI / Grok
223
+ - DashScope / Qwen
224
+ - Moonshot / Kimi
225
+ - DeepSeek
226
+ - Z.AI / GLM Coding Plan
227
+ - Kimi Coding Plan
228
+ - Ollama Cloud
229
+ - local Llama
230
+
231
+ Supported web-search backends:
184
232
 
185
- Kolega Code talks to a range of LLM providers including Anthropic, OpenAI, Google, Moonshot,
186
- and DeepSeek — and lets you assign **different models to different roles**: a strong
187
- long-context model for coding, a fast cheap model for small utility calls, and one for extended
188
- "thinking". See [Providers & Models](https://kolega-ai.github.io/kolega-code/configuration/providers-and-models/).
233
+ - DuckDuckGodefault, no key required
234
+ - Firecrawl
235
+ - Tavily
236
+ - SearXNG self-hosted option
237
+
238
+ See [Providers & Models](https://kolega-ai.github.io/kolega-code/configuration/providers-and-models/)
239
+ for model IDs, role configuration, API-key variables, and thinking-effort options.
240
+
241
+ ## Model routing
242
+
243
+ Kolega Code can assign different models to different operational roles: a strong
244
+ long-context model for the main coding loop, a faster model for utility calls, and
245
+ a dedicated model for extended thinking. You can also override models per agent
246
+ role — planning, building, investigation, general, and browser — so wide workflows
247
+ can use cheaper models where they fit and stronger models where they matter.
189
248
 
190
249
  ## Sign in with ChatGPT
191
250
 
192
- If you have a paid **ChatGPT** plan (Plus, Pro, or Business), you can use it to run OpenAI models
193
- instead of a separate API key. Run `/login chatgpt` in the TUI, complete the browser sign-in, and
194
- Kolega Code switches to the **OpenAI (ChatGPT subscription)** provider (default `gpt-5.5`). Tokens are
195
- stored locally (chmod `600`) and refreshed automatically; `/logout chatgpt` removes them. See
251
+ If you have a paid **ChatGPT** plan (Plus, Pro, or Business), you can use it to run
252
+ OpenAI models instead of a separate API key. Run `/login chatgpt` in the TUI,
253
+ complete the browser sign-in, and Kolega Code switches to the **OpenAI (ChatGPT
254
+ subscription)** provider (default `gpt-5.5`). Tokens are stored locally (chmod
255
+ `600`) and refreshed automatically; `/logout chatgpt` removes them. See
196
256
  [Sign in with ChatGPT](https://kolega-ai.github.io/kolega-code/configuration/sign-in-with-chatgpt/).
197
257
 
198
258
  ## Configuration
199
259
 
200
- Set your provider, model, and API keys from the **Settings** tab in the UI, or via environment
201
- variables and flags for non-interactive use:
260
+ Set your provider, model, and API keys from the **Settings** tab in the UI, or via
261
+ environment variables and flags for non-interactive use:
202
262
 
203
263
  ```bash
204
264
  export KOLEGA_CODE_PROVIDER=deepseek
@@ -206,20 +266,28 @@ export DEEPSEEK_API_KEY=...
206
266
  kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
207
267
  ```
208
268
 
209
- API key variables only provide credentials — pick a provider/model explicitly or save one in
210
- Settings. Local session state lives under your platform's state directory unless
211
- `KOLEGA_CODE_STATE_DIR` is set. See the
269
+ API key variables only provide credentials — pick a provider/model explicitly or
270
+ save one in Settings. Local session state lives under your platform's state
271
+ directory unless `KOLEGA_CODE_STATE_DIR` is set. See the
212
272
  [Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
213
273
  for the full story.
214
274
 
215
- The `web_search` tool uses DuckDuckGo by default without a key. To choose another backend,
216
- set it in **Settings** or export `KOLEGA_CODE_WEB_SEARCH_BACKEND` as `firecrawl`, `tavily`,
217
- or `searxng`; use `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, or `SEARXNG_BASE_URL` as needed.
275
+ The `web_search` tool uses DuckDuckGo by default without a key. To choose another
276
+ backend, set it in **Settings** or export `KOLEGA_CODE_WEB_SEARCH_BACKEND` as
277
+ `firecrawl`, `tavily`, or `searxng`; use `FIRECRAWL_API_KEY`, `TAVILY_API_KEY`, or
278
+ `SEARXNG_BASE_URL` as needed.
279
+
280
+ Projects can override Kolega Code's base prompts with uppercase Markdown templates
281
+ in `.kolega/prompts/`. Generate editable starters with Jinja replacement tags using
282
+ `/prompts dump` in the TUI or `kolega-code prompts dump --project .` in a terminal.
283
+ To dump only selected starters, pass prompt names such as `coder`, `planning`, or
284
+ `compaction` (filename aliases like `CODER.md` work too). Validate existing
285
+ overrides with `/prompts validate` or `kolega-code prompts validate --project .`.
218
286
 
219
287
  ## Requirements
220
288
 
221
289
  - **Python 3.11+**
222
- - An **API key** for at least one supported provider
290
+ - An **API key**, ChatGPT sign-in, or local model for at least one supported model provider
223
291
  - A terminal that supports a modern TUI (most do)
224
292
 
225
293
  ## Documentation
@@ -242,9 +310,9 @@ Full documentation lives at **[kolega-ai.github.io/kolega-code](https://kolega-a
242
310
 
243
311
  ## Contributing
244
312
 
245
- Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup, running the
246
- test suite, and building the docs site. Please report security issues privately per
247
- [SECURITY.md](SECURITY.md).
313
+ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup,
314
+ running the test suite, and building the docs site. Please report security issues
315
+ privately per [SECURITY.md](SECURITY.md).
248
316
 
249
317
  ## License
250
318