kolega-code 0.1.0__tar.gz → 0.2.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 (227) hide show
  1. {kolega_code-0.1.0 → kolega_code-0.2.0}/.env.example +2 -0
  2. kolega_code-0.2.0/.github/workflows/ci.yml +46 -0
  3. {kolega_code-0.1.0 → kolega_code-0.2.0}/.github/workflows/docs.yml +10 -3
  4. {kolega_code-0.1.0 → kolega_code-0.2.0}/PKG-INFO +9 -5
  5. {kolega_code-0.1.0 → kolega_code-0.2.0}/README.md +8 -4
  6. {kolega_code-0.1.0 → kolega_code-0.2.0}/RELEASING.md +6 -6
  7. {kolega_code-0.1.0 → kolega_code-0.2.0}/conftest.py +3 -1
  8. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/package-lock.json +107 -564
  9. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/package.json +3 -0
  10. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/ask.md +2 -0
  11. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/doctor.md +8 -6
  12. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/overview.md +1 -3
  13. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/concepts/how-it-works.md +3 -3
  14. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/configuration/environment-variables.md +10 -4
  15. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/configuration/providers-and-models.mdx +31 -14
  16. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +11 -5
  17. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/getting-started/installation.mdx +2 -2
  18. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/getting-started/introduction.md +2 -2
  19. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/getting-started/quick-start.mdx +5 -4
  20. kolega_code-0.2.0/docs/src/content/docs/index.mdx +52 -0
  21. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/composer.md +1 -0
  22. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/interface.md +2 -2
  23. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/slash-commands.md +8 -1
  24. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/styles/brand.css +58 -23
  25. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/__init__.py +1 -1
  26. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/__init__.py +1 -1
  27. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/baseagent.py +38 -32
  28. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/coder.py +0 -1
  29. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/generalagent.py +0 -1
  30. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/planningagent.py +11 -3
  31. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_provider.py +17 -0
  32. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/browser.j2 +18 -3
  33. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/coder_cli_mode.j2 +13 -3
  34. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/general.j2 +17 -2
  35. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/agents/investigation.j2 +18 -3
  36. kolega_code-0.2.0/kolega_code/agent/prompt_templates/common/kolega_md_instructions.md +15 -0
  37. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompts.py +0 -38
  38. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_anthropic_token_counting.py +0 -1
  39. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_client.py +7 -10
  40. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_dashscope_mapping.py +4 -4
  41. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_error_boundary.py +7 -2
  42. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_exceptions.py +50 -21
  43. kolega_code-0.2.0/kolega_code/agent/tests/llm/test_google_thought_signature.py +78 -0
  44. kolega_code-0.2.0/kolega_code/agent/tests/llm/test_google_tool_signature_live.py +110 -0
  45. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_instrumented_client_integration.py +20 -23
  46. kolega_code-0.2.0/kolega_code/agent/tests/llm/test_live_providers.py +137 -0
  47. kolega_code-0.2.0/kolega_code/agent/tests/llm/test_model_specs.py +31 -0
  48. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_token_counting.py +0 -1
  49. kolega_code-0.2.0/kolega_code/agent/tests/llm/test_thinking_effort.py +102 -0
  50. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_tool_execution_ids.py +19 -9
  51. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_base_agent.py +98 -1
  52. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_coder_attachments.py +0 -1
  53. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_coder_prompt_extensions.py +4 -4
  54. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_duplicate_tool_results.py +1 -1
  55. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_general_agent.py +1 -1
  56. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_parallel_tool_calls.py +1 -1
  57. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_planning_agent.py +1 -2
  58. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_prompt_provider.py +22 -2
  59. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_tools.py +138 -15
  60. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_agent_tool.py +1 -1
  61. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_base_tool.py +1 -1
  62. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_create_file_tool.py +1 -1
  63. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_glob_tool.py +1 -1
  64. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_glob_tool_sandbox_parity.py +1 -1
  65. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_read_file_tool.py +1 -1
  66. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_replace_entire_file_tool.py +1 -1
  67. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_replace_lines_tool.py +1 -1
  68. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_search_codebase_tool.py +1 -1
  69. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_terminal_tool.py +1 -1
  70. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_think_hard_integration.py +2 -3
  71. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_think_hard_streaming.py +1 -2
  72. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_web_fetch_tool.py +1 -1
  73. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/memory_tool.py +17 -15
  74. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/think_hard_tool.py +2 -12
  75. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tools.py +19 -57
  76. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/app.py +532 -65
  77. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/config.py +56 -46
  78. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/main.py +42 -9
  79. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/messages.py +13 -4
  80. kolega_code-0.2.0/kolega_code/cli/provider_registry.py +209 -0
  81. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/settings.py +7 -3
  82. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/slash_commands.py +1 -0
  83. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_app.py +916 -69
  84. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_cli_config.py +86 -25
  85. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_main.py +164 -2
  86. kolega_code-0.2.0/kolega_code/cli/tests/test_settings.py +116 -0
  87. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_slash_commands.py +1 -0
  88. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/config.py +8 -12
  89. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/client.py +14 -42
  90. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/exceptions.py +138 -19
  91. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/models.py +91 -51
  92. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/anthropic.py +17 -16
  93. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/base.py +2 -6
  94. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/google.py +28 -9
  95. kolega_code-0.2.0/kolega_code/llm/providers/models.py +18 -0
  96. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/openai.py +26 -6
  97. kolega_code-0.2.0/kolega_code/llm/specs.py +291 -0
  98. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/tools/__init__.py +7 -1
  99. kolega_code-0.2.0/kolega_code/tools/definitions.py +141 -0
  100. kolega_code-0.2.0/kolega_code/tools/tests/__init__.py +0 -0
  101. kolega_code-0.2.0/kolega_code/tools/tests/test_definitions.py +114 -0
  102. {kolega_code-0.1.0 → kolega_code-0.2.0}/pyproject.toml +1 -1
  103. {kolega_code-0.1.0 → kolega_code-0.2.0}/uv.lock +2 -2
  104. kolega_code-0.1.0/docs/src/content/docs/index.mdx +0 -70
  105. kolega_code-0.1.0/kolega_code/agent/prompt_templates/common/kolega_md_instructions.md +0 -14
  106. kolega_code-0.1.0/kolega_code/agent/tests/llm/test_model_specs.py +0 -17
  107. kolega_code-0.1.0/kolega_code/agent/tool_backend/apply_edit_tool.py +0 -98
  108. kolega_code-0.1.0/kolega_code/cli/provider_registry.py +0 -96
  109. kolega_code-0.1.0/kolega_code/cli/tests/test_settings.py +0 -62
  110. kolega_code-0.1.0/kolega_code/llm/providers/models.py +0 -37
  111. kolega_code-0.1.0/kolega_code/llm/specs.py +0 -67
  112. kolega_code-0.1.0/kolega_code/tools/definitions.py +0 -81
  113. {kolega_code-0.1.0 → kolega_code-0.2.0}/.github/workflows/release.yml +0 -0
  114. {kolega_code-0.1.0 → kolega_code-0.2.0}/.gitignore +0 -0
  115. {kolega_code-0.1.0 → kolega_code-0.2.0}/CONTRIBUTING.md +0 -0
  116. {kolega_code-0.1.0 → kolega_code-0.2.0}/LICENSE +0 -0
  117. {kolega_code-0.1.0 → kolega_code-0.2.0}/SECURITY.md +0 -0
  118. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/.gitignore +0 -0
  119. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/README.md +0 -0
  120. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/astro.config.mjs +0 -0
  121. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/public/favicon.svg +0 -0
  122. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/assets/kolega-dark.svg +0 -0
  123. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/assets/kolega-light.svg +0 -0
  124. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/cli/sessions.md +0 -0
  125. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/concepts/agents.md +0 -0
  126. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/concepts/tools.md +0 -0
  127. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/skills.mdx +0 -0
  128. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/modes.md +0 -0
  129. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
  130. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/src/content.config.ts +0 -0
  131. {kolega_code-0.1.0 → kolega_code-0.2.0}/docs/tsconfig.json +0 -0
  132. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/browseragent.py +0 -0
  133. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/common.py +0 -0
  134. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/compression.py +0 -0
  135. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/context.py +0 -0
  136. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/conversation.py +0 -0
  137. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/investigationagent.py +0 -0
  138. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/common/frontend_guidance.md +0 -0
  139. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/environment_variables/workspace_env_vars.md +0 -0
  140. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/expo-template.md +0 -0
  141. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/html-website-template.md +0 -0
  142. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/mern-stack-template.md +0 -0
  143. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/prompt_templates/template_guidance/react-vite-shadcdn-template.md +0 -0
  144. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/__init__.py +0 -0
  145. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/__init__.py +0 -0
  146. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_billing_openai_cache.py +0 -0
  147. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_instrumented_client.py +0 -0
  148. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_langfuse_normalization.py +0 -0
  149. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens.py +0 -0
  150. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_cached_tokens_stream.py +0 -0
  151. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/llm/test_openai_message_conversion.py +0 -0
  152. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/__init__.py +0 -0
  153. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_browser.py +0 -0
  154. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_browser_parity.py +0 -0
  155. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_file_system.py +0 -0
  156. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_sandbox_terminal_input.py +0 -0
  157. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_terminal.py +0 -0
  158. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_terminal_command_tracking.py +0 -0
  159. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/services/test_terminal_state_serializer.py +0 -0
  160. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_agent_tools_inventory.py +0 -0
  161. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_commands.py +0 -0
  162. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_empty_message_handling.py +0 -0
  163. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_html.py +0 -0
  164. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/test_tool_registry.py +0 -0
  165. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/__init__.py +0 -0
  166. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_browser_tool.py +0 -0
  167. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_build_tool.py +0 -0
  168. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_list_directory_tool.py +0 -0
  169. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tests/tool_backend/test_search_and_replace_tool.py +0 -0
  170. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
  171. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/apply_patch_tool.py +0 -0
  172. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  173. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  174. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  175. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/create_file_tool.py +0 -0
  176. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  177. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
  178. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  179. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/replace_entire_file_tool.py +0 -0
  180. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/replace_lines_tool.py +0 -0
  181. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/search_and_replace_tool.py +0 -0
  182. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  183. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  184. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  185. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  186. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/agent/utils/commands.py +0 -0
  187. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/__init__.py +0 -0
  188. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/connection.py +0 -0
  189. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/file_index.py +0 -0
  190. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/mentions.py +0 -0
  191. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/session_store.py +0 -0
  192. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/skills.py +0 -0
  193. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/__init__.py +0 -0
  194. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_connection.py +0 -0
  195. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_file_index.py +0 -0
  196. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_mentions.py +0 -0
  197. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_session_store.py +0 -0
  198. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/tests/test_skills.py +0 -0
  199. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/cli/theme.py +0 -0
  200. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/events.py +0 -0
  201. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/instrumented_client.py +0 -0
  202. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/providers/__init__.py +0 -0
  203. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/ratelimit.py +0 -0
  204. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/llm/tool_execution_ids.py +0 -0
  205. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/models/__init__.py +0 -0
  206. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
  207. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/runtime.py +0 -0
  208. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/README.md +0 -0
  209. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/__init__.py +0 -0
  210. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/async_filesystem.py +0 -0
  211. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/base.py +0 -0
  212. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/browser.py +0 -0
  213. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/event_loop.py +0 -0
  214. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/filesystem.py +0 -0
  215. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/local.py +0 -0
  216. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/serializer.py +0 -0
  217. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/terminal.py +0 -0
  218. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/sandbox/utils.py +0 -0
  219. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/base.py +0 -0
  220. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/browser.py +0 -0
  221. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/file_system.py +0 -0
  222. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/html.py +0 -0
  223. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/services/terminal.py +0 -0
  224. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/tools/core.py +0 -0
  225. {kolega_code-0.1.0 → kolega_code-0.2.0}/kolega_code/tools/registry.py +0 -0
  226. {kolega_code-0.1.0 → kolega_code-0.2.0}/run_tests.sh +0 -0
  227. /kolega_code-0.1.0/scripts/install-kolega-code → /kolega_code-0.2.0/scripts/install-kolega-code.sh +0 -0
@@ -7,6 +7,8 @@ GOOGLE_API_KEY=
7
7
  MOONSHOT_API_KEY=
8
8
  DEEPSEEK_API_KEY=
9
9
 
10
+ KOLEGA_CODE_THINKING_EFFORT=
11
+
10
12
  BROWSERLESS_API_KEY=
11
13
 
12
14
  LANGFUSE_HOST=https://us.cloud.langfuse.com
@@ -0,0 +1,46 @@
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
+ tests:
20
+ name: Python ${{ matrix.python-version }}
21
+ runs-on: ubuntu-latest
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ python-version: ["3.11", "3.12"]
26
+
27
+ steps:
28
+ - name: Checkout
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Setup Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: ${{ matrix.python-version }}
35
+
36
+ - name: Setup uv
37
+ uses: astral-sh/setup-uv@v5
38
+ with:
39
+ enable-cache: true
40
+ cache-dependency-glob: uv.lock
41
+
42
+ - name: Install dependencies
43
+ run: uv sync --extra dev --frozen
44
+
45
+ - name: Run fast tests
46
+ run: uv run pytest -ra --durations=50 --import-mode=importlib -m "not slow"
@@ -6,13 +6,15 @@ on:
6
6
  paths:
7
7
  - "docs/**"
8
8
  - ".github/workflows/docs.yml"
9
+ pull_request:
10
+ branches: [main]
11
+ paths:
12
+ - "docs/**"
13
+ - ".github/workflows/docs.yml"
9
14
  workflow_dispatch:
10
15
 
11
- # Allow this workflow to publish to GitHub Pages.
12
16
  permissions:
13
17
  contents: read
14
- pages: write
15
- id-token: write
16
18
 
17
19
  # Allow one concurrent deployment; don't cancel an in-progress production deploy.
18
20
  concurrency:
@@ -43,13 +45,18 @@ jobs:
43
45
  run: npm run build
44
46
 
45
47
  - name: Upload Pages artifact
48
+ if: github.event_name != 'pull_request'
46
49
  uses: actions/upload-pages-artifact@v3
47
50
  with:
48
51
  path: docs/dist
49
52
 
50
53
  deploy:
54
+ if: github.event_name != 'pull_request'
51
55
  needs: build
52
56
  runs-on: ubuntu-latest
57
+ permissions:
58
+ pages: write
59
+ id-token: write
53
60
  environment:
54
61
  name: github-pages
55
62
  url: ${{ steps.deployment.outputs.page_url }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Local-first AI coding agent for the terminal
5
5
  Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
6
6
  Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
@@ -78,7 +78,7 @@ The package owns the `kolega_code` import namespace and provides the
78
78
  Install with the public installer:
79
79
 
80
80
  ```bash
81
- curl -fsSL https://kolega.dev/install-kolega-code | sh
81
+ curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
82
82
  ```
83
83
 
84
84
  Or install directly from PyPI with uv:
@@ -100,7 +100,7 @@ uv tool upgrade kolega-code
100
100
  uv tool uninstall kolega-code
101
101
  ```
102
102
 
103
- Run the Textual UI and open the Settings tab to select Moonshot Kimi K2.6 or DeepSeek V4 Pro and save your API key:
103
+ Run the Textual UI and open the Settings tab to pick any provider and model from the catalog, choose the model's thinking effort, and save your API key:
104
104
 
105
105
  ```bash
106
106
  kolega-code .
@@ -115,16 +115,20 @@ kolega-code . --resume
115
115
  kolega-code . --resume <thread-or-session-id>
116
116
  ```
117
117
 
118
- You can also set `MOONSHOT_API_KEY`, `DEEPSEEK_API_KEY`, or keep using env/flag based configuration for non-UI commands:
118
+ You can also use env/flag based configuration for non-UI commands. API key
119
+ variables provide credentials only; set a provider/model explicitly or save one
120
+ in the Settings UI:
119
121
 
120
122
  ```bash
123
+ export KOLEGA_CODE_PROVIDER=deepseek
124
+ export DEEPSEEK_API_KEY=...
121
125
  kolega-code ask "summarize this repository" --project .
122
126
  kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
123
127
  kolega-code sessions list --project .
124
128
  kolega-code doctor --project .
125
129
  ```
126
130
 
127
- The Settings UI supports Moonshot `kimi-k2.6` and DeepSeek `deepseek-v4-pro`. A saved UI selection is used for all agent model roles and API keys are stored in the local CLI settings file with restrictive permissions. Existing environment and model/provider flag overrides continue to work. Local session state is stored under the platform state directory unless `KOLEGA_CODE_STATE_DIR` is set.
131
+ The Settings UI exposes every model in the catalog (`kolega_code/llm/specs.py`) across all supported providers — the provider and model dropdowns are derived from that catalog, so adding a model there makes it selectable in the UI automatically. A saved UI selection is used for all agent model roles, and switching models resets thinking effort to that model's default. API keys are stored in the local CLI settings file with restrictive permissions. Existing environment and model/provider flag overrides continue to work, but API key variables alone never select a provider or model. Local session state is stored under the platform state directory unless `KOLEGA_CODE_STATE_DIR` is set.
128
132
 
129
133
  ## From source
130
134
 
@@ -10,7 +10,7 @@ The package owns the `kolega_code` import namespace and provides the
10
10
  Install with the public installer:
11
11
 
12
12
  ```bash
13
- curl -fsSL https://kolega.dev/install-kolega-code | sh
13
+ curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
14
14
  ```
15
15
 
16
16
  Or install directly from PyPI with uv:
@@ -32,7 +32,7 @@ uv tool upgrade kolega-code
32
32
  uv tool uninstall kolega-code
33
33
  ```
34
34
 
35
- Run the Textual UI and open the Settings tab to select Moonshot Kimi K2.6 or DeepSeek V4 Pro and save your API key:
35
+ Run the Textual UI and open the Settings tab to pick any provider and model from the catalog, choose the model's thinking effort, and save your API key:
36
36
 
37
37
  ```bash
38
38
  kolega-code .
@@ -47,16 +47,20 @@ kolega-code . --resume
47
47
  kolega-code . --resume <thread-or-session-id>
48
48
  ```
49
49
 
50
- You can also set `MOONSHOT_API_KEY`, `DEEPSEEK_API_KEY`, or keep using env/flag based configuration for non-UI commands:
50
+ You can also use env/flag based configuration for non-UI commands. API key
51
+ variables provide credentials only; set a provider/model explicitly or save one
52
+ in the Settings UI:
51
53
 
52
54
  ```bash
55
+ export KOLEGA_CODE_PROVIDER=deepseek
56
+ export DEEPSEEK_API_KEY=...
53
57
  kolega-code ask "summarize this repository" --project .
54
58
  kolega-code ask "summarize this repository" --project . --provider deepseek --model deepseek-v4-pro
55
59
  kolega-code sessions list --project .
56
60
  kolega-code doctor --project .
57
61
  ```
58
62
 
59
- The Settings UI supports Moonshot `kimi-k2.6` and DeepSeek `deepseek-v4-pro`. A saved UI selection is used for all agent model roles and API keys are stored in the local CLI settings file with restrictive permissions. Existing environment and model/provider flag overrides continue to work. Local session state is stored under the platform state directory unless `KOLEGA_CODE_STATE_DIR` is set.
63
+ The Settings UI exposes every model in the catalog (`kolega_code/llm/specs.py`) across all supported providers — the provider and model dropdowns are derived from that catalog, so adding a model there makes it selectable in the UI automatically. A saved UI selection is used for all agent model roles, and switching models resets thinking effort to that model's default. API keys are stored in the local CLI settings file with restrictive permissions. Existing environment and model/provider flag overrides continue to work, but API key variables alone never select a provider or model. Local session state is stored under the platform state directory unless `KOLEGA_CODE_STATE_DIR` is set.
60
64
 
61
65
  ## From source
62
66
 
@@ -1,7 +1,7 @@
1
1
  # Releasing Kolega Code
2
2
 
3
3
  This project publishes the `kolega-code` package to PyPI and serves the public
4
- installer from `https://kolega.dev/install-kolega-code`.
4
+ installer from `https://kolega.dev/install-kolega-code.sh`.
5
5
 
6
6
  ## First PyPI release
7
7
 
@@ -29,8 +29,8 @@ the organization request.
29
29
  4. Create and push a matching tag:
30
30
 
31
31
  ```bash
32
- git tag v0.1.0
33
- git push origin v0.1.0
32
+ git tag v0.2.0
33
+ git push origin v0.2.0
34
34
  ```
35
35
 
36
36
  5. Approve the `pypi` environment deployment in GitHub Actions.
@@ -47,19 +47,19 @@ the organization request.
47
47
  The canonical installer source is tracked at:
48
48
 
49
49
  ```text
50
- scripts/install-kolega-code
50
+ scripts/install-kolega-code.sh
51
51
  ```
52
52
 
53
53
  The `kolega.dev` site repo should publish that file verbatim at:
54
54
 
55
55
  ```text
56
- https://kolega.dev/install-kolega-code
56
+ https://kolega.dev/install-kolega-code.sh
57
57
  ```
58
58
 
59
59
  After updating the site, verify:
60
60
 
61
61
  ```bash
62
- curl -fsSL https://kolega.dev/install-kolega-code | sh
62
+ curl -fsSL https://kolega.dev/install-kolega-code.sh | sh
63
63
  ```
64
64
 
65
65
  ## Transfer to the PyPI organization
@@ -17,6 +17,7 @@ CLI_CONFIG_ENV_KEYS = {
17
17
  "KOLEGA_CODE_EDIT_MODEL",
18
18
  "KOLEGA_CODE_THINKING_PROVIDER",
19
19
  "KOLEGA_CODE_THINKING_MODEL",
20
+ "KOLEGA_CODE_THINKING_EFFORT",
20
21
  "KOLEGA_CODE_THINKING_TOKENS",
21
22
  "KOLEGA_CODE_ENVIRONMENT",
22
23
  }
@@ -28,7 +29,8 @@ def pytest_configure() -> None:
28
29
 
29
30
 
30
31
  @pytest.fixture
31
- def isolated_cli_env(monkeypatch: pytest.MonkeyPatch) -> None:
32
+ def isolated_cli_env(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:
32
33
  """Remove process CLI config so unit tests don't depend on a developer .env."""
33
34
  for key in {*API_KEY_ENV.values(), *CLI_CONFIG_ENV_KEYS}:
34
35
  monkeypatch.delenv(key, raising=False)
36
+ monkeypatch.setenv("KOLEGA_CODE_STATE_DIR", str(tmp_path / "state"))