kolega-code 0.5.1__tar.gz → 0.6.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 (267) hide show
  1. kolega_code-0.6.0/PKG-INFO +213 -0
  2. kolega_code-0.6.0/README.md +145 -0
  3. kolega_code-0.6.0/docs/src/assets/demo.gif +0 -0
  4. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/configuration/environment-variables.md +13 -0
  5. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/configuration/providers-and-models.mdx +36 -0
  6. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +20 -3
  7. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/__init__.py +1 -1
  8. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/__init__.py +1 -1
  9. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/baseagent.py +86 -31
  10. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/coder.py +0 -1
  11. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/context.py +7 -2
  12. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/generalagent.py +0 -1
  13. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/runtime.py +15 -2
  14. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_anthropic_token_counting.py +0 -1
  15. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_client.py +7 -1
  16. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_openai_token_counting.py +0 -1
  17. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_file_system.py +15 -0
  18. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_sandbox_terminal_input.py +12 -0
  19. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_agent_tools_inventory.py +2 -1
  20. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_base_agent.py +113 -6
  21. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_coder_attachments.py +3 -7
  22. kolega_code-0.6.0/kolega_code/agent/tests/test_event_emitter.py +84 -0
  23. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_general_agent.py +2 -0
  24. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_gigacode_gating.py +2 -0
  25. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_permissions.py +1 -1
  26. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_planning_agent.py +3 -1
  27. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_tools.py +21 -31
  28. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_create_file_tool.py +39 -5
  29. kolega_code-0.6.0/kolega_code/agent/tests/tool_backend/test_edit_preview.py +83 -0
  30. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_list_directory_tool.py +25 -0
  31. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_replace_entire_file_tool.py +16 -0
  32. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_replace_lines_tool.py +8 -16
  33. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_search_and_replace_tool.py +3 -8
  34. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_workflow_tool.py +52 -2
  35. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/agent_tool.py +2 -0
  36. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/base_tool.py +35 -6
  37. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/create_file_tool.py +16 -10
  38. kolega_code-0.6.0/kolega_code/agent/tool_backend/edit_preview.py +152 -0
  39. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/list_directory_tool.py +20 -21
  40. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/read_file_tool.py +15 -15
  41. kolega_code-0.6.0/kolega_code/agent/tool_backend/replace_entire_file_tool.py +56 -0
  42. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +17 -20
  43. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +19 -23
  44. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/workflow_tool.py +41 -8
  45. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tools.py +23 -95
  46. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/app.py +811 -62
  47. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/config.py +56 -2
  48. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/provider_registry.py +25 -1
  49. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/session_store.py +3 -0
  50. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/settings.py +48 -5
  51. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_app.py +581 -20
  52. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_cli_config.py +81 -0
  53. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_session_store.py +5 -0
  54. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_settings.py +50 -2
  55. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/theme.py +4 -0
  56. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/config.py +60 -2
  57. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/events.py +6 -0
  58. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/providers/anthropic.py +4 -2
  59. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/providers/google.py +11 -1
  60. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/providers/openai.py +4 -2
  61. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/specs.py +1 -1
  62. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/permissions.py +3 -6
  63. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/terminal.py +10 -0
  64. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/services/file_system.py +5 -1
  65. {kolega_code-0.5.1 → kolega_code-0.6.0}/pyproject.toml +1 -1
  66. {kolega_code-0.5.1 → kolega_code-0.6.0}/uv.lock +2 -2
  67. kolega_code-0.5.1/PKG-INFO +0 -164
  68. kolega_code-0.5.1/README.md +0 -96
  69. kolega_code-0.5.1/kolega_code/agent/tool_backend/apply_patch_tool.py +0 -514
  70. kolega_code-0.5.1/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -40
  71. {kolega_code-0.5.1 → kolega_code-0.6.0}/.env.example +0 -0
  72. {kolega_code-0.5.1 → kolega_code-0.6.0}/.github/workflows/ci.yml +0 -0
  73. {kolega_code-0.5.1 → kolega_code-0.6.0}/.github/workflows/docs.yml +0 -0
  74. {kolega_code-0.5.1 → kolega_code-0.6.0}/.github/workflows/release.yml +0 -0
  75. {kolega_code-0.5.1 → kolega_code-0.6.0}/.gitignore +0 -0
  76. {kolega_code-0.5.1 → kolega_code-0.6.0}/CONTRIBUTING.md +0 -0
  77. {kolega_code-0.5.1 → kolega_code-0.6.0}/LICENSE +0 -0
  78. {kolega_code-0.5.1 → kolega_code-0.6.0}/RELEASING.md +0 -0
  79. {kolega_code-0.5.1 → kolega_code-0.6.0}/SECURITY.md +0 -0
  80. {kolega_code-0.5.1 → kolega_code-0.6.0}/conftest.py +0 -0
  81. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/.gitignore +0 -0
  82. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/README.md +0 -0
  83. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/astro.config.mjs +0 -0
  84. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/package-lock.json +0 -0
  85. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/package.json +0 -0
  86. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/public/favicon.svg +0 -0
  87. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/assets/kolega-dark.svg +0 -0
  88. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/assets/kolega-light.svg +0 -0
  89. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/cli/ask.md +0 -0
  90. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/cli/doctor.md +0 -0
  91. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/cli/overview.md +0 -0
  92. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/cli/sessions.md +0 -0
  93. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/concepts/agents.md +0 -0
  94. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/concepts/how-it-works.md +0 -0
  95. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/concepts/tools.md +0 -0
  96. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
  97. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
  98. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/gigacode.mdx +0 -0
  99. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/hooks.md +0 -0
  100. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/index.mdx +0 -0
  101. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/skills.mdx +0 -0
  102. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/tui/composer.md +0 -0
  103. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/tui/interface.md +0 -0
  104. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/tui/modes.md +0 -0
  105. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
  106. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content/docs/tui/slash-commands.md +0 -0
  107. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/content.config.ts +0 -0
  108. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/src/styles/brand.css +0 -0
  109. {kolega_code-0.5.1 → kolega_code-0.6.0}/docs/tsconfig.json +0 -0
  110. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/browseragent.py +0 -0
  111. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/common.py +0 -0
  112. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/compression.py +0 -0
  113. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/conversation.py +0 -0
  114. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/investigationagent.py +0 -0
  115. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/__init__.py +0 -0
  116. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/budget.py +0 -0
  117. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/errors.py +0 -0
  118. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/executor.py +0 -0
  119. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/guide.py +0 -0
  120. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/journal.py +0 -0
  121. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/tests/__init__.py +0 -0
  122. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/tests/test_orchestration.py +0 -0
  123. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/orchestration/types.py +0 -0
  124. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/planningagent.py +0 -0
  125. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_provider.py +0 -0
  126. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  127. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  128. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  129. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  130. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
  131. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  132. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  133. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  134. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
  135. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
  136. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
  137. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
  138. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  139. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  140. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  141. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  142. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  143. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  144. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  145. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  146. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  147. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  148. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/prompts.py +0 -0
  149. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/__init__.py +0 -0
  150. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/__init__.py +0 -0
  151. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_billing_openai_cache.py +0 -0
  152. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_dashscope_mapping.py +0 -0
  153. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_error_boundary.py +0 -0
  154. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_exceptions.py +0 -0
  155. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_google_thought_signature.py +0 -0
  156. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_google_tool_signature_live.py +0 -0
  157. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_instrumented_client.py +0 -0
  158. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_instrumented_client_integration.py +0 -0
  159. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_langfuse_normalization.py +0 -0
  160. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_live_providers.py +0 -0
  161. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_model_specs.py +0 -0
  162. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens.py +0 -0
  163. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens_stream.py +0 -0
  164. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_openai_message_conversion.py +0 -0
  165. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_thinking_effort.py +0 -0
  166. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/llm/test_tool_execution_ids.py +0 -0
  167. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/__init__.py +0 -0
  168. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_browser.py +0 -0
  169. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_browser_parity.py +0 -0
  170. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_terminal.py +0 -0
  171. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_terminal_buffer.py +0 -0
  172. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/services/test_terminal_state_serializer.py +0 -0
  173. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_coder_prompt_extensions.py +0 -0
  174. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_commands.py +0 -0
  175. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_duplicate_tool_results.py +0 -0
  176. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_empty_message_handling.py +0 -0
  177. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_hooks_integration.py +0 -0
  178. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_html.py +0 -0
  179. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_parallel_tool_calls.py +0 -0
  180. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_prompt_provider.py +0 -0
  181. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_prompts.py +0 -0
  182. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/test_tool_registry.py +0 -0
  183. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/__init__.py +0 -0
  184. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_agent_tool.py +0 -0
  185. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_base_tool.py +0 -0
  186. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_browser_tool.py +0 -0
  187. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_build_tool.py +0 -0
  188. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_glob_tool.py +0 -0
  189. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
  190. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_read_file_tool.py +0 -0
  191. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_search_codebase_tool.py +0 -0
  192. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_terminal_tool.py +0 -0
  193. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_think_hard_integration.py +0 -0
  194. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_think_hard_streaming.py +0 -0
  195. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tests/tool_backend/test_web_fetch_tool.py +0 -0
  196. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  197. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  198. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  199. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
  200. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  201. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  202. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  203. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
  204. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  205. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/agent/utils/commands.py +0 -0
  206. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/__init__.py +0 -0
  207. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/connection.py +0 -0
  208. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/file_index.py +0 -0
  209. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/main.py +0 -0
  210. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/mentions.py +0 -0
  211. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/messages.py +0 -0
  212. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/skills.py +0 -0
  213. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/slash_commands.py +0 -0
  214. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/__init__.py +0 -0
  215. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_connection.py +0 -0
  216. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_file_index.py +0 -0
  217. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_main.py +0 -0
  218. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_mentions.py +0 -0
  219. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_skills.py +0 -0
  220. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_slash_commands.py +0 -0
  221. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_themes.py +0 -0
  222. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/tests/test_updater.py +0 -0
  223. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/cli/updater.py +0 -0
  224. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/__init__.py +0 -0
  225. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/backends.py +0 -0
  226. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/config.py +0 -0
  227. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/dispatcher.py +0 -0
  228. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/events.py +0 -0
  229. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/matcher.py +0 -0
  230. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/outcome.py +0 -0
  231. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/tests/__init__.py +0 -0
  232. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/hooks/tests/test_hooks.py +0 -0
  233. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/client.py +0 -0
  234. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/exceptions.py +0 -0
  235. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/instrumented_client.py +0 -0
  236. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/models.py +0 -0
  237. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/providers/__init__.py +0 -0
  238. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/providers/base.py +0 -0
  239. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/providers/models.py +0 -0
  240. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/ratelimit.py +0 -0
  241. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/llm/tool_execution_ids.py +0 -0
  242. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/models/__init__.py +0 -0
  243. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
  244. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/runtime.py +0 -0
  245. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/README.md +0 -0
  246. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/__init__.py +0 -0
  247. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/async_filesystem.py +0 -0
  248. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/base.py +0 -0
  249. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/browser.py +0 -0
  250. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/event_loop.py +0 -0
  251. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/filesystem.py +0 -0
  252. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/local.py +0 -0
  253. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/serializer.py +0 -0
  254. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/sandbox/utils.py +0 -0
  255. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/services/base.py +0 -0
  256. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/services/browser.py +0 -0
  257. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/services/html.py +0 -0
  258. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/services/terminal.py +0 -0
  259. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/services/terminal_buffer.py +0 -0
  260. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/tools/__init__.py +0 -0
  261. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/tools/core.py +0 -0
  262. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/tools/definitions.py +0 -0
  263. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/tools/registry.py +0 -0
  264. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/tools/tests/__init__.py +0 -0
  265. {kolega_code-0.5.1 → kolega_code-0.6.0}/kolega_code/tools/tests/test_definitions.py +0 -0
  266. {kolega_code-0.5.1 → kolega_code-0.6.0}/run_tests.sh +0 -0
  267. {kolega_code-0.5.1 → kolega_code-0.6.0}/scripts/install-kolega-code.sh +0 -0
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: kolega-code
3
+ Version: 0.6.0
4
+ Summary: Local-first AI coding agent for the terminal
5
+ Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
6
+ Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
7
+ Project-URL: Repository, https://github.com/kolega-ai/kolega-code
8
+ Project-URL: Issues, https://github.com/kolega-ai/kolega-code/issues
9
+ Author: Kolega Team
10
+ License: MIT License
11
+
12
+ Copyright (c) 2026 Kolega Team
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all
22
+ copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
31
+ License-File: LICENSE
32
+ Keywords: agent,ai,cli,coding-agent,developer-tools
33
+ Classifier: Development Status :: 3 - Alpha
34
+ Classifier: Environment :: Console
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Operating System :: MacOS
37
+ Classifier: Operating System :: POSIX :: Linux
38
+ Classifier: Programming Language :: Python :: 3
39
+ Classifier: Programming Language :: Python :: 3.11
40
+ Classifier: Programming Language :: Python :: 3.12
41
+ Classifier: Topic :: Software Development
42
+ Classifier: Topic :: Utilities
43
+ Requires-Python: >=3.11
44
+ Requires-Dist: anthropic==0.101.0
45
+ Requires-Dist: beautifulsoup4==4.14.3
46
+ Requires-Dist: google-genai==2.0.1
47
+ Requires-Dist: jinja2==3.1.6
48
+ Requires-Dist: langfuse==3.14.5
49
+ Requires-Dist: nest-asyncio==1.6.0
50
+ Requires-Dist: openai==1.109.1
51
+ Requires-Dist: packaging==25.0
52
+ Requires-Dist: pathspec==1.1.1
53
+ Requires-Dist: playwright==1.59.0
54
+ Requires-Dist: psutil==7.2.2
55
+ Requires-Dist: pydantic==2.13.4
56
+ Requires-Dist: python-dotenv==1.2.2
57
+ Requires-Dist: pyyaml==6.0.3
58
+ Requires-Dist: tenacity==9.1.4
59
+ Requires-Dist: textual==8.2.5
60
+ Requires-Dist: tiktoken==0.12.0
61
+ Requires-Dist: trafilatura==2.0.0
62
+ Provides-Extra: cli
63
+ Provides-Extra: dev
64
+ Requires-Dist: pytest-asyncio==1.3.0; extra == 'dev'
65
+ Requires-Dist: pytest==9.0.3; extra == 'dev'
66
+ Requires-Dist: ruff==0.15.12; extra == 'dev'
67
+ Description-Content-Type: text/markdown
68
+
69
+ # Kolega Code
70
+
71
+ **An AI coding agent that runs in your terminal — local-first, model-agnostic, plan-then-build.**
72
+
73
+ [![PyPI version](https://img.shields.io/pypi/v/kolega-code)](https://pypi.org/project/kolega-code/)
74
+ [![Python versions](https://img.shields.io/pypi/pyversions/kolega-code)](https://pypi.org/project/kolega-code/)
75
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
76
+ [![CI](https://github.com/kolega-ai/kolega-code/actions/workflows/ci.yml/badge.svg)](https://github.com/kolega-ai/kolega-code/actions/workflows/ci.yml)
77
+ [![Docs](https://img.shields.io/badge/docs-kolega--ai.github.io-blue)](https://kolega-ai.github.io/kolega-code/)
78
+
79
+ Point Kolega Code at a project directory and it opens an interactive UI where you talk to an
80
+ agent that can read and edit your code, run shell commands, search the codebase, browse the
81
+ web, and dispatch specialized sub-agents to get work done.
82
+
83
+ It's **local-first**: the agent operates on your actual filesystem and terminal, and your
84
+ sessions, settings, and API keys stay on your own machine.
85
+
86
+ ![Kolega Code in action](docs/src/assets/demo.gif)
87
+
88
+ ## Why Kolega Code
89
+
90
+ - **Plans before it builds.** A read-only **Plan mode** produces a reviewable plan and a
91
+ shared task list before anything changes; **Build mode** implements it. Toggle with `Shift+Tab`.
92
+ - **Orchestrates many agents.** For larger jobs, the main agent dispatches specialized
93
+ sub-agents (investigation, browser, coding, general) and can fan them out in parallel for
94
+ broad audits, large migrations, or implementing a plan's independent parts at once.
95
+ - **Local-first by design.** It works on your real files and terminal; sessions, settings,
96
+ and credentials live on your machine, not in someone else's cloud.
97
+ - **Bring your own model.** Talks to a range of providers and lets you assign different models
98
+ to different roles.
99
+
100
+ ## What it does
101
+
102
+ - **Reads and edits your code.** Opens files, searches across the codebase, creates new files,
103
+ and applies precise edits.
104
+ - **Runs commands.** Executes shell commands and watches their output in a dedicated terminal view.
105
+ - **Plans before it builds.** Plan mode investigates and proposes; Build mode executes.
106
+ - **Browses the web.** A built-in browser agent (powered by Playwright) fetches pages and
107
+ interacts with sites when a task needs it.
108
+ - **Dispatches sub-agents.** Hands work off to specialized agents and tracks their activity live.
109
+ - **Orchestrates workflows.** With [gigacode](https://kolega-ai.github.io/kolega-code/gigacode/),
110
+ it fans out many sub-agents in parallel.
111
+ - **Works non-interactively too.** Run a single prompt with `kolega-code ask`, get JSON output,
112
+ and save or resume sessions.
113
+
114
+ ## Quick start
115
+
116
+ **1. Install** with the script:
117
+
118
+ ```bash
119
+ curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
120
+ ```
121
+
122
+ Or with [uv](https://docs.astral.sh/uv/) (or `pip`):
123
+
124
+ ```bash
125
+ uv tool install kolega-code
126
+ # or: pip install kolega-code
127
+ ```
128
+
129
+ Verify the install:
130
+
131
+ ```bash
132
+ kolega-code --version
133
+ ```
134
+
135
+ **2. Start a session** in your project:
136
+
137
+ ```bash
138
+ kolega-code .
139
+ ```
140
+
141
+ **3. Add a provider key.** Open the **Settings** tab to pick a provider and model and save your
142
+ API key. Then press `Shift+Tab` anytime to switch between **Plan** and **Build** mode.
143
+
144
+ Resume a previous conversation:
145
+
146
+ ```bash
147
+ kolega-code . --resume # latest session
148
+ kolega-code . --resume <id> # a specific thread or session
149
+ ```
150
+
151
+ ## Two ways to use it
152
+
153
+ | Mode | Command | Best for |
154
+ | --- | --- | --- |
155
+ | **Interactive TUI** | `kolega-code .` | Day-to-day development, exploration, pair-programming |
156
+ | **One-shot** | `kolega-code ask "…"` | Scripting, automation, quick questions, CI |
157
+
158
+ There are also helper commands for managing sessions and checking your setup:
159
+
160
+ ```bash
161
+ kolega-code ask "summarize this repository" --project .
162
+ kolega-code sessions list --project .
163
+ kolega-code doctor --project .
164
+ ```
165
+
166
+ ## Bring your own model
167
+
168
+ Kolega Code talks to a range of LLM providers — including Anthropic, OpenAI, Google, Moonshot,
169
+ and DeepSeek — and lets you assign **different models to different roles**: a strong
170
+ long-context model for coding, a fast cheap model for small utility calls, and one for extended
171
+ "thinking". See [Providers & Models](https://kolega-ai.github.io/kolega-code/configuration/providers-and-models/).
172
+
173
+ ## Configuration
174
+
175
+ Set your provider, model, and API keys from the **Settings** tab in the UI, or via environment
176
+ variables and flags for non-interactive use:
177
+
178
+ ```bash
179
+ export KOLEGA_CODE_PROVIDER=deepseek
180
+ export DEEPSEEK_API_KEY=...
181
+ kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
182
+ ```
183
+
184
+ API key variables only provide credentials — pick a provider/model explicitly or save one in
185
+ Settings. Local session state lives under your platform's state directory unless
186
+ `KOLEGA_CODE_STATE_DIR` is set. See the
187
+ [Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
188
+ for the full story.
189
+
190
+ ## Requirements
191
+
192
+ - **Python 3.11+**
193
+ - An **API key** for at least one supported provider
194
+ - A terminal that supports a modern TUI (most do)
195
+
196
+ ## Documentation
197
+
198
+ Full documentation lives at **[kolega-ai.github.io/kolega-code](https://kolega-ai.github.io/kolega-code/)**:
199
+
200
+ - [Quick Start](https://kolega-ai.github.io/kolega-code/getting-started/quick-start/)
201
+ - [CLI overview](https://kolega-ai.github.io/kolega-code/cli/overview/)
202
+ - [How it works & concepts](https://kolega-ai.github.io/kolega-code/concepts/how-it-works/)
203
+ - [Configuration](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
204
+
205
+ ## Contributing
206
+
207
+ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup, running the
208
+ test suite, and building the docs site. Please report security issues privately per
209
+ [SECURITY.md](SECURITY.md).
210
+
211
+ ## License
212
+
213
+ Released under the [MIT License](LICENSE).
@@ -0,0 +1,145 @@
1
+ # Kolega Code
2
+
3
+ **An AI coding agent that runs in your terminal — local-first, model-agnostic, plan-then-build.**
4
+
5
+ [![PyPI version](https://img.shields.io/pypi/v/kolega-code)](https://pypi.org/project/kolega-code/)
6
+ [![Python versions](https://img.shields.io/pypi/pyversions/kolega-code)](https://pypi.org/project/kolega-code/)
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
8
+ [![CI](https://github.com/kolega-ai/kolega-code/actions/workflows/ci.yml/badge.svg)](https://github.com/kolega-ai/kolega-code/actions/workflows/ci.yml)
9
+ [![Docs](https://img.shields.io/badge/docs-kolega--ai.github.io-blue)](https://kolega-ai.github.io/kolega-code/)
10
+
11
+ Point Kolega Code at a project directory and it opens an interactive UI where you talk to an
12
+ agent that can read and edit your code, run shell commands, search the codebase, browse the
13
+ web, and dispatch specialized sub-agents to get work done.
14
+
15
+ It's **local-first**: the agent operates on your actual filesystem and terminal, and your
16
+ sessions, settings, and API keys stay on your own machine.
17
+
18
+ ![Kolega Code in action](docs/src/assets/demo.gif)
19
+
20
+ ## Why Kolega Code
21
+
22
+ - **Plans before it builds.** A read-only **Plan mode** produces a reviewable plan and a
23
+ shared task list before anything changes; **Build mode** implements it. Toggle with `Shift+Tab`.
24
+ - **Orchestrates many agents.** For larger jobs, the main agent dispatches specialized
25
+ sub-agents (investigation, browser, coding, general) and can fan them out in parallel for
26
+ broad audits, large migrations, or implementing a plan's independent parts at once.
27
+ - **Local-first by design.** It works on your real files and terminal; sessions, settings,
28
+ and credentials live on your machine, not in someone else's cloud.
29
+ - **Bring your own model.** Talks to a range of providers and lets you assign different models
30
+ to different roles.
31
+
32
+ ## What it does
33
+
34
+ - **Reads and edits your code.** Opens files, searches across the codebase, creates new files,
35
+ and applies precise edits.
36
+ - **Runs commands.** Executes shell commands and watches their output in a dedicated terminal view.
37
+ - **Plans before it builds.** Plan mode investigates and proposes; Build mode executes.
38
+ - **Browses the web.** A built-in browser agent (powered by Playwright) fetches pages and
39
+ interacts with sites when a task needs it.
40
+ - **Dispatches sub-agents.** Hands work off to specialized agents and tracks their activity live.
41
+ - **Orchestrates workflows.** With [gigacode](https://kolega-ai.github.io/kolega-code/gigacode/),
42
+ it fans out many sub-agents in parallel.
43
+ - **Works non-interactively too.** Run a single prompt with `kolega-code ask`, get JSON output,
44
+ and save or resume sessions.
45
+
46
+ ## Quick start
47
+
48
+ **1. Install** with the script:
49
+
50
+ ```bash
51
+ curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
52
+ ```
53
+
54
+ Or with [uv](https://docs.astral.sh/uv/) (or `pip`):
55
+
56
+ ```bash
57
+ uv tool install kolega-code
58
+ # or: pip install kolega-code
59
+ ```
60
+
61
+ Verify the install:
62
+
63
+ ```bash
64
+ kolega-code --version
65
+ ```
66
+
67
+ **2. Start a session** in your project:
68
+
69
+ ```bash
70
+ kolega-code .
71
+ ```
72
+
73
+ **3. Add a provider key.** Open the **Settings** tab to pick a provider and model and save your
74
+ API key. Then press `Shift+Tab` anytime to switch between **Plan** and **Build** mode.
75
+
76
+ Resume a previous conversation:
77
+
78
+ ```bash
79
+ kolega-code . --resume # latest session
80
+ kolega-code . --resume <id> # a specific thread or session
81
+ ```
82
+
83
+ ## Two ways to use it
84
+
85
+ | Mode | Command | Best for |
86
+ | --- | --- | --- |
87
+ | **Interactive TUI** | `kolega-code .` | Day-to-day development, exploration, pair-programming |
88
+ | **One-shot** | `kolega-code ask "…"` | Scripting, automation, quick questions, CI |
89
+
90
+ There are also helper commands for managing sessions and checking your setup:
91
+
92
+ ```bash
93
+ kolega-code ask "summarize this repository" --project .
94
+ kolega-code sessions list --project .
95
+ kolega-code doctor --project .
96
+ ```
97
+
98
+ ## Bring your own model
99
+
100
+ Kolega Code talks to a range of LLM providers — including Anthropic, OpenAI, Google, Moonshot,
101
+ and DeepSeek — and lets you assign **different models to different roles**: a strong
102
+ long-context model for coding, a fast cheap model for small utility calls, and one for extended
103
+ "thinking". See [Providers & Models](https://kolega-ai.github.io/kolega-code/configuration/providers-and-models/).
104
+
105
+ ## Configuration
106
+
107
+ Set your provider, model, and API keys from the **Settings** tab in the UI, or via environment
108
+ variables and flags for non-interactive use:
109
+
110
+ ```bash
111
+ export KOLEGA_CODE_PROVIDER=deepseek
112
+ export DEEPSEEK_API_KEY=...
113
+ kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
114
+ ```
115
+
116
+ API key variables only provide credentials — pick a provider/model explicitly or save one in
117
+ Settings. Local session state lives under your platform's state directory unless
118
+ `KOLEGA_CODE_STATE_DIR` is set. See the
119
+ [Configuration docs](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
120
+ for the full story.
121
+
122
+ ## Requirements
123
+
124
+ - **Python 3.11+**
125
+ - An **API key** for at least one supported provider
126
+ - A terminal that supports a modern TUI (most do)
127
+
128
+ ## Documentation
129
+
130
+ Full documentation lives at **[kolega-ai.github.io/kolega-code](https://kolega-ai.github.io/kolega-code/)**:
131
+
132
+ - [Quick Start](https://kolega-ai.github.io/kolega-code/getting-started/quick-start/)
133
+ - [CLI overview](https://kolega-ai.github.io/kolega-code/cli/overview/)
134
+ - [How it works & concepts](https://kolega-ai.github.io/kolega-code/concepts/how-it-works/)
135
+ - [Configuration](https://kolega-ai.github.io/kolega-code/configuration/settings-and-api-keys/)
136
+
137
+ ## Contributing
138
+
139
+ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup, running the
140
+ test suite, and building the docs site. Please report security issues privately per
141
+ [SECURITY.md](SECURITY.md).
142
+
143
+ ## License
144
+
145
+ Released under the [MIT License](LICENSE).
@@ -67,6 +67,19 @@ provider's default model, or set both provider and model.
67
67
 
68
68
  See [Providers & Models](../providers-and-models/) for what each role does.
69
69
 
70
+ ## Per-agent models
71
+
72
+ Give an individual agent its own model. `<ROLE>` is one of `PLANNING`, `BUILDING`,
73
+ `INVESTIGATION`, `GENERAL`, or `BROWSER`. A role with no override inherits the main
74
+ model. These also override anything saved in the Settings tab's **Agent Models**
75
+ section.
76
+
77
+ | Variable | Purpose |
78
+ | --- | --- |
79
+ | `KOLEGA_CODE_<ROLE>_PROVIDER` | Provider for that agent (e.g. `KOLEGA_CODE_INVESTIGATION_PROVIDER`) |
80
+ | `KOLEGA_CODE_<ROLE>_MODEL` | Model for that agent |
81
+ | `KOLEGA_CODE_<ROLE>_EFFORT` | Thinking effort for that agent |
82
+
70
83
  ## State & environment
71
84
 
72
85
  | Variable | Purpose |
@@ -102,6 +102,42 @@ kolega-code . \
102
102
  Or with environment variables — see
103
103
  [Environment Variables](../environment-variables/) for the complete list.
104
104
 
105
+ ## Per-agent models
106
+
107
+ The three slots above describe *operational* roles (main, fast, thinking). Separately,
108
+ you can give each **agent** its own model, so a cheap, fast model handles
109
+ investigation while a stronger model does the building. This applies to top-level
110
+ agents and to the sub-agents they dispatch.
111
+
112
+ | Agent role | Key | Runs |
113
+ | --- | --- | --- |
114
+ | **Planning** | `planning` | The plan-mode agent |
115
+ | **Building** | `building` | The main coder agent |
116
+ | **Investigation** | `investigation` | Read-only research/exploration sub-agents |
117
+ | **General** | `general` | General-purpose sub-agents |
118
+ | **Browser** | `browser` | Browser/web sub-agents |
119
+
120
+ Each role **inherits the active (long-context) model** unless you give it an override —
121
+ so with nothing configured, behavior is unchanged.
122
+
123
+ In the **Settings tab**, the **Agent Models** section (below the main Model section)
124
+ has a provider/model/effort group per role. Leave a role on **Default** to inherit;
125
+ pick a provider, model, and thinking effort to override it.
126
+
127
+ Or use environment variables, named `KOLEGA_CODE_<ROLE>_PROVIDER` / `_MODEL` / `_EFFORT`:
128
+
129
+ ```bash
130
+ # Use a fast model for investigation; everything else uses the active model.
131
+ export KOLEGA_CODE_INVESTIGATION_PROVIDER=deepseek
132
+ export KOLEGA_CODE_INVESTIGATION_MODEL=deepseek-v4-flash
133
+ export KOLEGA_CODE_INVESTIGATION_EFFORT=high
134
+ ```
135
+
136
+ Resolution order for a role (first match wins): **env var → saved Settings → the
137
+ active model**. Each override's provider must have an API key, exactly like the main
138
+ roles. (Inside a `run_workflow` script, an explicit `model=`/`effort=` on an `agent()`
139
+ call still takes precedence over these per-role defaults.)
140
+
105
141
  ## Thinking effort
106
142
 
107
143
  Thinking effort is model-specific. Kolega Code validates the selected value
@@ -21,12 +21,17 @@ the TUI:
21
21
 
22
22
  When you switch models, the thinking effort resets to the new model's default.
23
23
 
24
- A saved selection is used for **all** agent model roles. Existing environment
24
+ A saved selection is the default for **all** agent model roles. Existing environment
25
25
  variables and `--provider` / `--model` flags continue to override it — see
26
26
  [Providers & Models](../providers-and-models/) for resolution order.
27
27
  API key environment variables are credentials only; they do not choose the active
28
28
  provider or model.
29
29
 
30
+ The **Agent Models** section beneath the main Model section lets you give individual
31
+ agents (planning, building, investigation, general, browser) their own provider,
32
+ model, and effort. Leave a role on **Default** to inherit the active model. See
33
+ [Per-agent models](../providers-and-models/#per-agent-models).
34
+
30
35
  ## Where settings live
31
36
 
32
37
  Settings are stored as JSON in your platform's state directory, in a file named
@@ -45,16 +50,28 @@ The file looks like this:
45
50
 
46
51
  ```json
47
52
  {
48
- "schema_version": 2,
53
+ "schema_version": 3,
49
54
  "active_provider": "moonshot",
50
55
  "active_model": "kimi-k2.7-code",
51
56
  "active_thinking_effort": "auto",
52
57
  "api_keys": {
53
- "moonshot": "sk-..."
58
+ "moonshot": "sk-...",
59
+ "deepseek": "sk-..."
60
+ },
61
+ "agent_models": {
62
+ "investigation": {
63
+ "provider": "deepseek",
64
+ "model": "deepseek-v4-flash",
65
+ "thinking_effort": "high"
66
+ }
54
67
  }
55
68
  }
56
69
  ```
57
70
 
71
+ `agent_models` holds per-agent overrides keyed by role (`planning`, `building`,
72
+ `investigation`, `general`, `browser`); a role that is absent inherits the active
73
+ model. The field is optional and older `schema_version` files load unchanged.
74
+
58
75
  <Aside type="caution" title="Keys are stored in plaintext">
59
76
  API keys are written to `settings.json` in plaintext, but the file is created with
60
77
  `0600` permissions (readable and writable only by your user). If you'd rather not
@@ -148,4 +148,4 @@ __all__ = [
148
148
  "parse_git_status_output",
149
149
  ]
150
150
 
151
- __version__ = "0.5.1"
151
+ __version__ = "0.6.0"
@@ -39,4 +39,4 @@ __all__ = [
39
39
  "ToolExtension",
40
40
  ]
41
41
 
42
- __version__ = "0.5.1"
42
+ __version__ = "0.6.0"