kolega-code 0.25.1__tar.gz → 0.25.2__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 (869) hide show
  1. {kolega_code-0.25.1 → kolega_code-0.25.2}/CHANGELOG.md +8 -0
  2. {kolega_code-0.25.1 → kolega_code-0.25.2}/PKG-INFO +1 -1
  3. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/assets/coverage.svg +1 -1
  4. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/__init__.py +1 -1
  5. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/__init__.py +1 -1
  6. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/conversation.py +64 -5
  7. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/utils/images.py +27 -4
  8. {kolega_code-0.25.1 → kolega_code-0.25.2}/pyproject.toml +1 -1
  9. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_effective_history.py +34 -17
  10. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_coder_attachments.py +2 -1
  11. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_history_adapter_thinking.py +14 -1
  12. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_history_image_blocks.py +192 -2
  13. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/utils/test_images.py +59 -0
  14. {kolega_code-0.25.1 → kolega_code-0.25.2}/uv.lock +2 -2
  15. {kolega_code-0.25.1 → kolega_code-0.25.2}/.env.example +0 -0
  16. {kolega_code-0.25.1 → kolega_code-0.25.2}/.githooks/pre-commit +0 -0
  17. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  18. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  19. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  20. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/codeql/codeql-config.yml +0 -0
  21. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/dependabot.yml +0 -0
  22. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/workflows/ci.yml +0 -0
  23. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/workflows/codeql.yml +0 -0
  24. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/workflows/docs.yml +0 -0
  25. {kolega_code-0.25.1 → kolega_code-0.25.2}/.github/workflows/release.yml +0 -0
  26. {kolega_code-0.25.1 → kolega_code-0.25.2}/.gitignore +0 -0
  27. {kolega_code-0.25.1 → kolega_code-0.25.2}/.pre-commit-config.yaml +0 -0
  28. {kolega_code-0.25.1 → kolega_code-0.25.2}/CONTRIBUTING.md +0 -0
  29. {kolega_code-0.25.1 → kolega_code-0.25.2}/LICENSE +0 -0
  30. {kolega_code-0.25.1 → kolega_code-0.25.2}/MIGRATION.md +0 -0
  31. {kolega_code-0.25.1 → kolega_code-0.25.2}/README.md +0 -0
  32. {kolega_code-0.25.1 → kolega_code-0.25.2}/RELEASING.md +0 -0
  33. {kolega_code-0.25.1 → kolega_code-0.25.2}/SECURITY.md +0 -0
  34. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/__init__.py +0 -0
  35. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/README.md +0 -0
  36. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/__init__.py +0 -0
  37. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/__main__.py +0 -0
  38. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/artifacts.py +0 -0
  39. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/authoring.py +0 -0
  40. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/browser.py +0 -0
  41. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/browser_assets/app.js +0 -0
  42. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/browser_assets/index.html +0 -0
  43. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/browser_assets/styles.css +0 -0
  44. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/corpus.py +0 -0
  45. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/authoring-slots.yaml +0 -0
  46. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/licenses/LICENSE +0 -0
  47. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/manifest.yaml +0 -0
  48. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/cursed_renderer.go +0 -0
  49. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/exec_test.go +0 -0
  50. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/go.mod +0 -0
  51. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/key.go +0 -0
  52. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/logging.go +0 -0
  53. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/options.go +0 -0
  54. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/options_test.go +0 -0
  55. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/tea.go +0 -0
  56. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/tea_test.go +0 -0
  57. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/tty.go +0 -0
  58. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/licenses/LICENSE-APACHE +0 -0
  59. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/licenses/LICENSE-MIT +0 -0
  60. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/manifest.yaml +0 -0
  61. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/Cargo.toml +0 -0
  62. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/builder/arg.rs +0 -0
  63. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/builder/arg_group.rs +0 -0
  64. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/builder/value_parser.rs +0 -0
  65. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/derive.rs +0 -0
  66. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/error/context.rs +0 -0
  67. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/error/mod.rs +0 -0
  68. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/output/help_template.rs +0 -0
  69. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/parser/matches/arg_matches.rs +0 -0
  70. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/parser/parser.rs +0 -0
  71. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/licenses/LICENSE.txt +0 -0
  72. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/manifest.yaml +0 -0
  73. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/pyproject.toml +0 -0
  74. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/__init__.py +0 -0
  75. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/_termui_impl.py +0 -0
  76. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/_winconsole.py +0 -0
  77. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/core.py +0 -0
  78. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/exceptions.py +0 -0
  79. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/globals.py +0 -0
  80. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/termui.py +0 -0
  81. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/types.py +0 -0
  82. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/utils.py +0 -0
  83. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/licenses/LICENSE +0 -0
  84. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/manifest.yaml +0 -0
  85. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/lib/request.js +0 -0
  86. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/package.json +0 -0
  87. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/Router.js +0 -0
  88. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/acceptance/resource.js +0 -0
  89. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/app.options.js +0 -0
  90. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/app.render.js +0 -0
  91. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/app.router.js +0 -0
  92. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/express.static.js +0 -0
  93. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/express.text.js +0 -0
  94. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/licenses/LICENSE +0 -0
  95. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/manifest.yaml +0 -0
  96. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/CMakeLists.txt +0 -0
  97. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/base.h +0 -0
  98. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/chrono.h +0 -0
  99. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/format-inl.h +0 -0
  100. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/format.h +0 -0
  101. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/os.h +0 -0
  102. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/ranges.h +0 -0
  103. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/std.h +0 -0
  104. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/src/fmt.cc +0 -0
  105. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/licenses/LICENSE +0 -0
  106. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/manifest.yaml +0 -0
  107. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/pom.xml +0 -0
  108. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/FormattingStyle.java +0 -0
  109. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/Gson.java +0 -0
  110. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/GsonBuilder.java +0 -0
  111. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/JsonElement.java +0 -0
  112. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/internal/ReflectionAccessFilterHelper.java +0 -0
  113. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java +0 -0
  114. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/internal/bind/util/ISO8601Utils.java +0 -0
  115. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/module-info.java +0 -0
  116. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/licenses/LICENSE.txt +0 -0
  117. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/manifest.yaml +0 -0
  118. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/build.gradle.kts +0 -0
  119. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/CipherSuite.kt +0 -0
  120. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/Headers.kt +0 -0
  121. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/MultipartBody.kt +0 -0
  122. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/MultipartReader.kt +0 -0
  123. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/OkHttpClient.kt +0 -0
  124. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/http2/Http2Connection.kt +0 -0
  125. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/http2/Settings.kt +0 -0
  126. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/jvmMain/kotlin/okhttp3/internal/platform/Jdk8WithJettyBootPlatform.kt +0 -0
  127. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/licenses/MIT-LICENSE +0 -0
  128. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/manifest.yaml +0 -0
  129. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/application.rb +0 -0
  130. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/file_list.rb +0 -0
  131. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/file_utils.rb +0 -0
  132. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/file_utils_ext.rb +0 -0
  133. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/loaders/makefile.rb +0 -0
  134. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/rake_test_loader.rb +0 -0
  135. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/task.rb +0 -0
  136. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/task_manager.rb +0 -0
  137. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/rake.gemspec +0 -0
  138. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/licenses/LICENSE.md +0 -0
  139. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/manifest.yaml +0 -0
  140. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Live/LiveDisplay.cs +0 -0
  141. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Spectre.Console.csproj +0 -0
  142. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Layout/Layout.cs +0 -0
  143. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Markup.cs +0 -0
  144. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Table/Table.cs +0 -0
  145. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Table/TableColumn.cs +0 -0
  146. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console.Ansi/AnsiMarkup.cs +0 -0
  147. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console.Ansi/AnsiWriter.cs +0 -0
  148. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console.Ansi/Utilities/StringBuffer.cs +0 -0
  149. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/licenses/LICENSE.txt +0 -0
  150. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/manifest.yaml +0 -0
  151. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Package.swift +0 -0
  152. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Completions/BashCompletionsGenerator.swift +0 -0
  153. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Completions/ZshCompletionsGenerator.swift +0 -0
  154. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsable Properties/Flag.swift +0 -0
  155. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsing/ArgumentDefinition.swift +0 -0
  156. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsing/ArgumentSet.swift +0 -0
  157. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsing/ParserError.swift +0 -0
  158. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Usage/DumpHelpGenerator.swift +0 -0
  159. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Utilities/SequenceExtensions.swift +0 -0
  160. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/licenses/LICENSE +0 -0
  161. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/manifest.yaml +0 -0
  162. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Application.php +0 -0
  163. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Descriptor/JsonDescriptor.php +0 -0
  164. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/ProgressBar.php +0 -0
  165. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/SymfonyQuestionHelper.php +0 -0
  166. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/Table.php +0 -0
  167. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/TableStyle.php +0 -0
  168. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Interaction/Interaction.php +0 -0
  169. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Style/SymfonyStyle.php +0 -0
  170. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/composer.json +0 -0
  171. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/licenses/LICENSE +0 -0
  172. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/manifest.yaml +0 -0
  173. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/package.json +0 -0
  174. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v3/types.ts +0 -0
  175. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/classic/schemas.ts +0 -0
  176. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/checks.ts +0 -0
  177. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/errors.ts +0 -0
  178. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/json-schema-processors.ts +0 -0
  179. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/regexes.ts +0 -0
  180. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/schemas.ts +0 -0
  181. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/util.ts +0 -0
  182. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/mini/schemas.ts +0 -0
  183. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/fixtures/sources.yaml +0 -0
  184. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/matrices/deepseek-v4.yaml +0 -0
  185. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/matrices/example.yaml +0 -0
  186. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/matrices/validity-slice.yaml +0 -0
  187. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/models.py +0 -0
  188. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/protocols.py +0 -0
  189. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/recipes.py +0 -0
  190. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/report.py +0 -0
  191. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/runner.py +0 -0
  192. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/scoring.py +0 -0
  193. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/suites/coder-agent.yaml +0 -0
  194. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/suites/core.yaml +0 -0
  195. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/suites/corpora/edit-core.yaml +0 -0
  196. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/suites/fixtures/smoke-tasks.yaml +0 -0
  197. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/suites/smoke.yaml +0 -0
  198. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/usage.py +0 -0
  199. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/verifier/Dockerfile +0 -0
  200. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/verifier/toolchains.lock.yaml +0 -0
  201. {kolega_code-0.25.1 → kolega_code-0.25.2}/benchmarks/edit_tools/workspace.py +0 -0
  202. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/.gitignore +0 -0
  203. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/README.md +0 -0
  204. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/astro.config.mjs +0 -0
  205. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/package-lock.json +0 -0
  206. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/package.json +0 -0
  207. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/public/favicon.svg +0 -0
  208. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/assets/demo.gif +0 -0
  209. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/assets/kolega-dark.svg +0 -0
  210. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/assets/kolega-light.svg +0 -0
  211. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/cli/ask.md +0 -0
  212. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/cli/doctor.md +0 -0
  213. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/cli/overview.md +0 -0
  214. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/cli/sessions.md +0 -0
  215. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/cli/share.md +0 -0
  216. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/concepts/agents.md +0 -0
  217. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/concepts/how-it-works.md +0 -0
  218. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/concepts/tools.md +0 -0
  219. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/environment-variables.md +0 -0
  220. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/lsp.md +0 -0
  221. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/mcp.md +0 -0
  222. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/prompt-overrides.md +0 -0
  223. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/providers-and-models.mdx +0 -0
  224. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +0 -0
  225. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
  226. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/custom-agents.mdx +0 -0
  227. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/getting-started/installation.mdx +0 -0
  228. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
  229. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/gigacode.mdx +0 -0
  230. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/goal.md +0 -0
  231. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/hooks.md +0 -0
  232. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/index.mdx +0 -0
  233. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/loop.md +0 -0
  234. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/skills.mdx +0 -0
  235. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/troubleshooting/diagnostics.md +0 -0
  236. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/troubleshooting/terminal-tmux.md +0 -0
  237. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/composer.md +0 -0
  238. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/interface.md +0 -0
  239. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/modes.md +0 -0
  240. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/project-memory.md +0 -0
  241. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/scratchpad.md +0 -0
  242. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
  243. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content/docs/tui/slash-commands.md +0 -0
  244. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/content.config.ts +0 -0
  245. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/src/styles/brand.css +0 -0
  246. {kolega_code-0.25.1 → kolega_code-0.25.2}/docs/tsconfig.json +0 -0
  247. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/LICENSE +0 -0
  248. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/manifest.json +0 -0
  249. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
  250. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
  251. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
  252. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
  253. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
  254. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
  255. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
  256. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
  257. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
  258. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
  259. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
  260. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
  261. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
  262. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
  263. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
  264. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
  265. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
  266. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
  267. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
  268. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
  269. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
  270. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
  271. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
  272. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
  273. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
  274. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
  275. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
  276. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
  277. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
  278. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
  279. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
  280. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
  281. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
  282. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
  283. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
  284. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
  285. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
  286. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
  287. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
  288. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
  289. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
  290. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
  291. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
  292. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/baseagent.py +0 -0
  293. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/browseragent.py +0 -0
  294. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/coder.py +0 -0
  295. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/common.py +0 -0
  296. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/compression.py +0 -0
  297. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/context.py +0 -0
  298. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/custom_agents.py +0 -0
  299. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/edit_protocols.py +0 -0
  300. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/errors.py +0 -0
  301. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/__init__.py +0 -0
  302. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/bridge.py +0 -0
  303. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/bundle-requirements.in +0 -0
  304. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
  305. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/env.py +0 -0
  306. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/js_kernel.py +0 -0
  307. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/kernel.py +0 -0
  308. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/prelude.js +0 -0
  309. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/prelude.py +0 -0
  310. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/protocol.py +0 -0
  311. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/py_kernel.py +0 -0
  312. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/runner.js +0 -0
  313. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/eval/runner.py +0 -0
  314. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/generalagent.py +0 -0
  315. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/goal.py +0 -0
  316. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/investigationagent.py +0 -0
  317. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/model_routing.py +0 -0
  318. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/__init__.py +0 -0
  319. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/accounting.py +0 -0
  320. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/budget.py +0 -0
  321. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/context.py +0 -0
  322. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/errors.py +0 -0
  323. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/executor.py +0 -0
  324. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/guide.py +0 -0
  325. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/journal.py +0 -0
  326. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/runtime.py +0 -0
  327. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/orchestration/types.py +0 -0
  328. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/planningagent.py +0 -0
  329. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_dump.py +0 -0
  330. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_overrides.py +0 -0
  331. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_provider.py +0 -0
  332. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  333. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  334. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  335. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  336. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
  337. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
  338. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
  339. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  340. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
  341. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  342. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
  343. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  344. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
  345. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
  346. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
  347. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
  348. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  349. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  350. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  351. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  352. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  353. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  354. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  355. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  356. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  357. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  358. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/prompts.py +0 -0
  359. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
  360. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  361. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  362. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  363. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
  364. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
  365. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
  366. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
  367. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  368. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
  369. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
  370. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
  371. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
  372. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  373. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
  374. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
  375. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
  376. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
  377. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
  378. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
  379. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
  380. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
  381. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
  382. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  383. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
  384. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  385. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  386. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
  387. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
  388. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
  389. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
  390. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
  391. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
  392. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
  393. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  394. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
  395. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
  396. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/tools.py +0 -0
  397. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/agent/utils/commands.py +0 -0
  398. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/auth/__init__.py +0 -0
  399. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/auth/_jwt.py +0 -0
  400. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/auth/chatgpt_oauth.py +0 -0
  401. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/auth/constants.py +0 -0
  402. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/auth/tokens.py +0 -0
  403. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/__init__.py +0 -0
  404. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/app.py +0 -0
  405. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/clipboard_image.py +0 -0
  406. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/config.py +0 -0
  407. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/connection.py +0 -0
  408. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/cron.py +0 -0
  409. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/diagnostics.py +0 -0
  410. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/file_index.py +0 -0
  411. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/goal.py +0 -0
  412. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/loop.py +0 -0
  413. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/main.py +0 -0
  414. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/mentions.py +0 -0
  415. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/messages.py +0 -0
  416. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/model_connection.py +0 -0
  417. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/plan_artifacts.py +0 -0
  418. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/provider_registry.py +0 -0
  419. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/session_event_store.py +0 -0
  420. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/session_journal.py +0 -0
  421. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/session_store.py +0 -0
  422. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/settings.py +0 -0
  423. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/skills.py +0 -0
  424. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/slash_commands.py +0 -0
  425. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/theme.py +0 -0
  426. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/__init__.py +0 -0
  427. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/agent_runtime.py +0 -0
  428. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/app_base.py +0 -0
  429. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/changes_screen.py +0 -0
  430. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/command_handlers.py +0 -0
  431. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/constants.py +0 -0
  432. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/loop_runtime.py +0 -0
  433. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/memory_screen.py +0 -0
  434. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/onboarding_screen.py +0 -0
  435. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/prompt_flows.py +0 -0
  436. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/session_diff.py +0 -0
  437. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/settings_panel.py +0 -0
  438. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/settings_screen.py +0 -0
  439. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/state.py +0 -0
  440. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/status_dashboard.py +0 -0
  441. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/styles.tcss +0 -0
  442. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
  443. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/terminal_display.py +0 -0
  444. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/transcript.py +0 -0
  445. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/tui/widgets.py +0 -0
  446. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/cli/updater.py +0 -0
  447. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/config.py +0 -0
  448. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/events.py +0 -0
  449. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/git_env.py +0 -0
  450. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/__init__.py +0 -0
  451. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/backends.py +0 -0
  452. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/config.py +0 -0
  453. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/dispatcher.py +0 -0
  454. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/events.py +0 -0
  455. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/matcher.py +0 -0
  456. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/hooks/outcome.py +0 -0
  457. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/client.py +0 -0
  458. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/exceptions.py +0 -0
  459. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/instrumented_client.py +0 -0
  460. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/models.py +0 -0
  461. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/__init__.py +0 -0
  462. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/anthropic.py +0 -0
  463. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/base.py +0 -0
  464. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
  465. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/google.py +0 -0
  466. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/models.py +0 -0
  467. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/openai.py +0 -0
  468. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/openai_responses.py +0 -0
  469. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/providers/responses_common.py +0 -0
  470. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/ratelimit.py +0 -0
  471. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/__init__.py +0 -0
  472. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/accessors.py +0 -0
  473. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/__init__.py +0 -0
  474. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
  475. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
  476. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
  477. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
  478. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/google.py +0 -0
  479. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
  480. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
  481. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
  482. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/openai.py +0 -0
  483. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
  484. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/together.py +0 -0
  485. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/xai.py +0 -0
  486. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/catalog/zai.py +0 -0
  487. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/thinking.py +0 -0
  488. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/specs/types.py +0 -0
  489. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/timeouts.py +0 -0
  490. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/llm/tool_execution_ids.py +0 -0
  491. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/local_state.py +0 -0
  492. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/__init__.py +0 -0
  493. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/config.py +0 -0
  494. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/oauth.py +0 -0
  495. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/service.py +0 -0
  496. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/state.py +0 -0
  497. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/tools.py +0 -0
  498. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/mcp/transport.py +0 -0
  499. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/__init__.py +0 -0
  500. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/identity.py +0 -0
  501. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/manager.py +0 -0
  502. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/manifest.py +0 -0
  503. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/markdown.py +0 -0
  504. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/models.py +0 -0
  505. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/protocol.py +0 -0
  506. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/memory/registry.py +0 -0
  507. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/models/__init__.py +0 -0
  508. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/models/sandbox_terminal_state.py +0 -0
  509. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/permissions.py +0 -0
  510. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/runtime.py +0 -0
  511. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/README.md +0 -0
  512. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/__init__.py +0 -0
  513. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/async_filesystem.py +0 -0
  514. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/base.py +0 -0
  515. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/browser.py +0 -0
  516. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/event_loop.py +0 -0
  517. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/filesystem.py +0 -0
  518. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/local.py +0 -0
  519. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/serializer.py +0 -0
  520. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/terminal.py +0 -0
  521. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/sandbox/utils.py +0 -0
  522. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/scratchpad.py +0 -0
  523. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/security/__init__.py +0 -0
  524. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/security/secrets.py +0 -0
  525. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/base.py +0 -0
  526. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/browser.py +0 -0
  527. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/file_system.py +0 -0
  528. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/html.py +0 -0
  529. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/__init__.py +0 -0
  530. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/client.py +0 -0
  531. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/config.py +0 -0
  532. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/detector.py +0 -0
  533. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/diagnostics.py +0 -0
  534. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/edits.py +0 -0
  535. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/manager.py +0 -0
  536. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/registry.py +0 -0
  537. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/lsp/registry.yaml +0 -0
  538. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/snapshots.py +0 -0
  539. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/terminal.py +0 -0
  540. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/terminal_buffer.py +0 -0
  541. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/services/workspace_scan.py +0 -0
  542. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/__init__.py +0 -0
  543. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/control.py +0 -0
  544. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/inmemory.py +0 -0
  545. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/projection.py +0 -0
  546. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/recording.py +0 -0
  547. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/runtime.py +0 -0
  548. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/session/store.py +0 -0
  549. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/testing/__init__.py +0 -0
  550. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/testing/store_conformance.py +0 -0
  551. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/tools/__init__.py +0 -0
  552. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/tools/core.py +0 -0
  553. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/tools/definitions.py +0 -0
  554. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/tools/registry.py +0 -0
  555. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/utils/__init__.py +0 -0
  556. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/__init__.py +0 -0
  557. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/assets/fold.js +0 -0
  558. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/assets/player.css +0 -0
  559. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/assets/player.html +0 -0
  560. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/assets/player.js +0 -0
  561. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/bundle.py +0 -0
  562. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/hosting.py +0 -0
  563. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/redaction.py +0 -0
  564. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/server.py +0 -0
  565. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/singlefile.py +0 -0
  566. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/web/theme_css.py +0 -0
  567. {kolega_code-0.25.1 → kolega_code-0.25.2}/kolega_code/worktrees.py +0 -0
  568. {kolega_code-0.25.1 → kolega_code-0.25.2}/run_tests.sh +0 -0
  569. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/bench_hotpaths.py +0 -0
  570. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/bench_web_fetch.py +0 -0
  571. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/check-dev-hooks.sh +0 -0
  572. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/check_no_host_internals.py +0 -0
  573. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/count_loc.py +0 -0
  574. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/install-kolega-code.sh +0 -0
  575. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/setup-dev.sh +0 -0
  576. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/sync_bundled_skills.py +0 -0
  577. {kolega_code-0.25.1 → kolega_code-0.25.2}/scripts/verify_bundled_skill_artifacts.py +0 -0
  578. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/__init__.py +0 -0
  579. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/__init__.py +0 -0
  580. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/compaction_helpers.py +0 -0
  581. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/conftest.py +0 -0
  582. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/__init__.py +0 -0
  583. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_bridge.py +0 -0
  584. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_bundle_requirements.py +0 -0
  585. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_env.py +0 -0
  586. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_env_provisioning.py +0 -0
  587. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_js_kernel.py +0 -0
  588. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_protocol.py +0 -0
  589. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/eval/test_py_kernel.py +0 -0
  590. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/__init__.py +0 -0
  591. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/_token_counting_utils.py +0 -0
  592. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_anthropic_local_token_counting_incremental.py +0 -0
  593. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_anthropic_token_counting.py +0 -0
  594. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_billing_openai_cache.py +0 -0
  595. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_chatgpt_live.py +0 -0
  596. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_chatgpt_oauth_auth_config.py +0 -0
  597. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_chatgpt_oauth_conversion.py +0 -0
  598. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -0
  599. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +0 -0
  600. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_chatgpt_oauth_streaming.py +0 -0
  601. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_client.py +0 -0
  602. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_client_live.py +0 -0
  603. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_client_runtime.py +0 -0
  604. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_dashscope_mapping.py +0 -0
  605. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_edit_protocol_resolution.py +0 -0
  606. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_error_boundary.py +0 -0
  607. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_exceptions.py +0 -0
  608. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_freeform_tools.py +0 -0
  609. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_freeform_tools_live.py +0 -0
  610. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_google_provider.py +0 -0
  611. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_google_thought_signature.py +0 -0
  612. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_google_tool_signature_live.py +0 -0
  613. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_instrumented_client.py +0 -0
  614. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_instrumented_client_integration.py +0 -0
  615. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_instrumented_client_stream.py +0 -0
  616. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_langfuse_normalization.py +0 -0
  617. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_live_providers.py +0 -0
  618. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_message_conversion.py +0 -0
  619. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_model_specs.py +0 -0
  620. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_cached_tokens.py +0 -0
  621. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_cached_tokens_stream.py +0 -0
  622. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_message_conversion.py +0 -0
  623. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_reasoning_replay.py +0 -0
  624. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_responses_provider.py +0 -0
  625. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_sdk_compatibility.py +0 -0
  626. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_stream_accumulation.py +0 -0
  627. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_token_counting.py +0 -0
  628. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_openai_token_counting_incremental.py +0 -0
  629. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_provider_usage_mapping.py +0 -0
  630. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_streaming_timeouts.py +0 -0
  631. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_supports_vision.py +0 -0
  632. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_thinking_effort.py +0 -0
  633. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_tool_execution_ids.py +0 -0
  634. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/llm/test_xai_prompt_cache_header.py +0 -0
  635. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/orchestration/__init__.py +0 -0
  636. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/orchestration/test_accounting.py +0 -0
  637. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/orchestration/test_orchestration.py +0 -0
  638. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/__init__.py +0 -0
  639. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_browser.py +0 -0
  640. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_browser_console_logs.py +0 -0
  641. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_browser_content.py +0 -0
  642. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_browser_integration.py +0 -0
  643. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_browser_parity.py +0 -0
  644. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_file_system.py +0 -0
  645. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_file_system_integration.py +0 -0
  646. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_file_system_path.py +0 -0
  647. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_local_file_system.py +0 -0
  648. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_sandbox_terminal_input.py +0 -0
  649. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_terminal.py +0 -0
  650. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_terminal_buffer.py +0 -0
  651. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/services/test_terminal_state_serializer.py +0 -0
  652. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_agent_tools_inventory.py +0 -0
  653. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent.py +0 -0
  654. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_anthropic_history_validation.py +0 -0
  655. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_compaction.py +0 -0
  656. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_history_serialization.py +0 -0
  657. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_prompt_context.py +0 -0
  658. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_queued_injection.py +0 -0
  659. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_role_overrides.py +0 -0
  660. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_runtime.py +0 -0
  661. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_tool_call_repair.py +0 -0
  662. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_tool_call_repair_integration.py +0 -0
  663. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_base_agent_tool_execution.py +0 -0
  664. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_coder_prompt_extensions.py +0 -0
  665. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_commands.py +0 -0
  666. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_compaction_integration.py +0 -0
  667. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_compaction_persistence.py +0 -0
  668. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_compaction_subagent.py +0 -0
  669. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_compaction_tui_events.py +0 -0
  670. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_compress_command.py +0 -0
  671. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_compression.py +0 -0
  672. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_conversation_compaction.py +0 -0
  673. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_custom_agents.py +0 -0
  674. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_duplicate_tool_results.py +0 -0
  675. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_edit_protocol_tools.py +0 -0
  676. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_empty_message_handling.py +0 -0
  677. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_event_emitter.py +0 -0
  678. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_general_agent.py +0 -0
  679. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_gigacode_gating.py +0 -0
  680. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_goal.py +0 -0
  681. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_goal_evaluate.py +0 -0
  682. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_hooks_integration.py +0 -0
  683. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_html.py +0 -0
  684. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_image_compat.py +0 -0
  685. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_model_routing.py +0 -0
  686. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_parallel_tool_calls.py +0 -0
  687. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_permissions.py +0 -0
  688. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_planning_agent.py +0 -0
  689. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_prompt_dump.py +0 -0
  690. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_prompt_overrides.py +0 -0
  691. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_prompt_provider.py +0 -0
  692. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_prompts.py +0 -0
  693. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_read_image_tool.py +0 -0
  694. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_scratchpad.py +0 -0
  695. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tool_collection_builtin_dispatch.py +0 -0
  696. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tool_collection_config.py +0 -0
  697. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tool_collection_extensions.py +0 -0
  698. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tool_collection_initialization.py +0 -0
  699. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tool_collection_memory.py +0 -0
  700. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tool_registry.py +0 -0
  701. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_tools.py +0 -0
  702. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/test_worktrees.py +0 -0
  703. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/__init__.py +0 -0
  704. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_agent_tool.py +0 -0
  705. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_base_tool.py +0 -0
  706. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_browser_tool.py +0 -0
  707. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_build_tool.py +0 -0
  708. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_claude_edit.py +0 -0
  709. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_codex_apply_patch.py +0 -0
  710. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_edit_preview.py +0 -0
  711. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_edit_tool.py +0 -0
  712. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_eval_tool.py +0 -0
  713. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_glob_tool.py +0 -0
  714. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
  715. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_hashline_v2.py +0 -0
  716. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
  717. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_lsp_tool.py +0 -0
  718. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_read_file_tool.py +0 -0
  719. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_search_codebase_tool.py +0 -0
  720. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_snapshot_tool.py +0 -0
  721. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_terminal_tool.py +0 -0
  722. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
  723. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_think_hard_streaming.py +0 -0
  724. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_think_hard_streaming_content.py +0 -0
  725. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_think_hard_streaming_errors.py +0 -0
  726. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_think_hard_streaming_updates.py +0 -0
  727. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_web_fetch_answering.py +0 -0
  728. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_web_fetch_pipeline.py +0 -0
  729. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_web_fetch_tool.py +0 -0
  730. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
  731. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/agent/tool_backend/test_workflow_tool.py +0 -0
  732. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/auth/__init__.py +0 -0
  733. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/auth/test_chatgpt_oauth.py +0 -0
  734. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/auth/test_tokens.py +0 -0
  735. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_browser.py +0 -0
  736. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_corpus.py +0 -0
  737. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_protocols.py +0 -0
  738. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_providers.py +0 -0
  739. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_recipes.py +0 -0
  740. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_report.py +0 -0
  741. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_runner.py +0 -0
  742. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_scoring.py +0 -0
  743. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_edit_benchmark_workspace.py +0 -0
  744. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/benchmarks/test_live_edit_benchmark_providers.py +0 -0
  745. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/__init__.py +0 -0
  746. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/_app_test_utils.py +0 -0
  747. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app.py +0 -0
  748. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_agent_wiring.py +0 -0
  749. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_bootstrap_settings.py +0 -0
  750. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_changes_inspector.py +0 -0
  751. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_compaction_restore.py +0 -0
  752. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_composer_commands.py +0 -0
  753. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_composer_input.py +0 -0
  754. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_conversation_rendering.py +0 -0
  755. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_diagnostics.py +0 -0
  756. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_focus_behavior.py +0 -0
  757. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_goal_command.py +0 -0
  758. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_image_vision_warning.py +0 -0
  759. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_loop_command.py +0 -0
  760. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_lsp_settings_status.py +0 -0
  761. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_memory.py +0 -0
  762. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_mention_dropdown.py +0 -0
  763. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_misc_commands.py +0 -0
  764. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_model_effort_commands.py +0 -0
  765. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_model_switch_vision.py +0 -0
  766. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_modes_planning.py +0 -0
  767. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_navigation_commands.py +0 -0
  768. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_permission_prompts.py +0 -0
  769. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_persistence_history.py +0 -0
  770. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_plan_lifecycle.py +0 -0
  771. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_planning_questions.py +0 -0
  772. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_planning_restore.py +0 -0
  773. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_entries.py +0 -0
  774. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_errors.py +0 -0
  775. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_scroll.py +0 -0
  776. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_selection.py +0 -0
  777. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_status.py +0 -0
  778. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_streaming.py +0 -0
  779. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_terminal_logs.py +0 -0
  780. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_tools.py +0 -0
  781. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rendering_window.py +0 -0
  782. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_rewind.py +0 -0
  783. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_scratchpad.py +0 -0
  784. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_session_diff_async.py +0 -0
  785. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_share.py +0 -0
  786. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_skill_commands.py +0 -0
  787. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_slash_dropdown.py +0 -0
  788. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_status_modes.py +0 -0
  789. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_sub_agents_workflows.py +0 -0
  790. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_app_tmux_shortcuts.py +0 -0
  791. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_ask_goal.py +0 -0
  792. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_ask_loop.py +0 -0
  793. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_bundled_skills.py +0 -0
  794. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_cli_config.py +0 -0
  795. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_clipboard_image.py +0 -0
  796. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_connection.py +0 -0
  797. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_cron.py +0 -0
  798. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_custom_agents_cli.py +0 -0
  799. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_diagnostics.py +0 -0
  800. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_file_index.py +0 -0
  801. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_loop_state.py +0 -0
  802. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_main.py +0 -0
  803. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_main_share_export.py +0 -0
  804. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_mcp_cli.py +0 -0
  805. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_mcp_settings_formatting.py +0 -0
  806. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_mentions.py +0 -0
  807. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_model_connection.py +0 -0
  808. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_plan_artifacts.py +0 -0
  809. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_provider_registry.py +0 -0
  810. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_session_diff.py +0 -0
  811. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_session_event_store.py +0 -0
  812. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_session_rewind.py +0 -0
  813. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_session_store.py +0 -0
  814. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_settings.py +0 -0
  815. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_skills.py +0 -0
  816. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_slash_commands.py +0 -0
  817. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_sub_agent_routing_state.py +0 -0
  818. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_sub_agent_stream_accumulation.py +0 -0
  819. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_terminal_display.py +0 -0
  820. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_theme_web_tokens.py +0 -0
  821. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_themes.py +0 -0
  822. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_transcript_streaming_render.py +0 -0
  823. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_tui_control_sanitization.py +0 -0
  824. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_tui_settings_screens.py +0 -0
  825. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_tui_stylesheet.py +0 -0
  826. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/cli/test_updater.py +0 -0
  827. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/conftest.py +0 -0
  828. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/hooks/__init__.py +0 -0
  829. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/hooks/test_hooks.py +0 -0
  830. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/mcp/test_config_state_tools.py +0 -0
  831. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/memory/test_backend.py +0 -0
  832. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/memory/test_project_memory_manager.py +0 -0
  833. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/security/__init__.py +0 -0
  834. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/security/test_secrets.py +0 -0
  835. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/_fake_server.py +0 -0
  836. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/conftest.py +0 -0
  837. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_client.py +0 -0
  838. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_detector.py +0 -0
  839. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_diagnostics.py +0 -0
  840. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_edits.py +0 -0
  841. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_integration.py +0 -0
  842. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_lsp_edit_tool_integration.py +0 -0
  843. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_manager.py +0 -0
  844. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_project_config.py +0 -0
  845. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_registry.py +0 -0
  846. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/lsp/test_trust.py +0 -0
  847. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/test_snapshots.py +0 -0
  848. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/services/test_workspace_scan.py +0 -0
  849. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/session/test_control.py +0 -0
  850. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/session/test_projection.py +0 -0
  851. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/session/test_recording.py +0 -0
  852. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/session/test_runtime.py +0 -0
  853. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/session/test_store_conformance.py +0 -0
  854. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/test_agent_config_defaults.py +0 -0
  855. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/test_agent_config_serialization.py +0 -0
  856. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/test_git_env.py +0 -0
  857. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/test_mcp_permissions.py +0 -0
  858. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/test_mcp_transport.py +0 -0
  859. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/tools/__init__.py +0 -0
  860. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/tools/test_definitions.py +0 -0
  861. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/utils/__init__.py +0 -0
  862. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/utils/test_images_ascii.py +0 -0
  863. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_bundle.py +0 -0
  864. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_fold_parity.py +0 -0
  865. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_hosting.py +0 -0
  866. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_player_live.py +0 -0
  867. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_player_rendering.py +0 -0
  868. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_server.py +0 -0
  869. {kolega_code-0.25.1 → kolega_code-0.25.2}/tests/web/test_singlefile.py +0 -0
@@ -6,6 +6,14 @@ This project uses GitHub Releases for detailed generated release notes. This fil
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.25.2 - 2026-07-28
10
+
11
+ ### Fixed
12
+
13
+ - Downscaled outbound image copies to satisfy Anthropic's per-image dimensions
14
+ and aggregate request-size limit, preventing image-heavy conversations from
15
+ failing later turns while preserving full-resolution history and artifacts.
16
+
9
17
  ## 0.25.1 - 2026-07-28
10
18
 
11
19
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.25.1
3
+ Version: 0.25.2
4
4
  Summary: Multi-agent coding in the terminal
5
5
  Project-URL: Homepage, https://kolega-ai.github.io/kolega-code/
6
6
  Project-URL: Documentation, https://kolega-ai.github.io/kolega-code/
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 82.39%"><title>coverage: 82.39%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">82.39%</text><text x="865" y="150" fill-opacity=".3" textLength="430">82.39%</text></g><text x="865" y="140" textLength="430">82.39%</text></g></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 82.41%"><title>coverage: 82.41%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">82.41%</text><text x="865" y="150" fill-opacity=".3" textLength="430">82.41%</text></g><text x="865" y="140" textLength="430">82.41%</text></g></g></svg>
@@ -151,4 +151,4 @@ __all__ = [
151
151
  "parse_git_status_output",
152
152
  ]
153
153
 
154
- __version__ = "0.25.1"
154
+ __version__ = "0.25.2"
@@ -51,4 +51,4 @@ __all__ = [
51
51
  "ToolExtension",
52
52
  ]
53
53
 
54
- __version__ = "0.25.1"
54
+ __version__ = "0.25.2"
@@ -48,6 +48,8 @@ def _adapt_image_block_for_provider(
48
48
  target_provider: str,
49
49
  target_model: str,
50
50
  supports_vision: bool,
51
+ max_image_dimension: Optional[int],
52
+ max_image_base64_bytes: int,
51
53
  ) -> tuple[ContentBlock, bool]:
52
54
  """Return a request-safe image block without mutating stored history."""
53
55
  if not supports_vision:
@@ -59,7 +61,8 @@ def _adapt_image_block_for_provider(
59
61
  result = image_utils.resize_base64_image_to_limit(
60
62
  block.data,
61
63
  block.media_type,
62
- max_base64_bytes=image_utils.ANTHROPIC_MAX_IMAGE_BASE64_BYTES,
64
+ max_base64_bytes=max_image_base64_bytes,
65
+ max_dimension=max_image_dimension,
63
66
  )
64
67
  if not result.succeeded:
65
68
  logger.warning(
@@ -94,18 +97,54 @@ def _adapt_image_block_for_provider(
94
97
  )
95
98
 
96
99
 
97
- def count_image_blocks(messages: List[Message]) -> int:
98
- """Count ``ImageBlock`` instances across messages, including ones nested in tool results."""
100
+ def _image_block_stats(messages: List[Message]) -> tuple[int, List[int]]:
101
+ """Return total image count and base64 lengths, including nested tool results."""
99
102
  count = 0
103
+ base64_sizes: List[int] = []
100
104
  for message in messages:
101
105
  if not isinstance(message.content, list):
102
106
  continue
103
107
  for block in message.content:
104
108
  if isinstance(block, ImageBlock):
105
109
  count += 1
110
+ if block.image_type == "base64":
111
+ base64_sizes.append(len(block.data))
106
112
  elif isinstance(block, ToolResult) and isinstance(block.content, list):
107
- count += sum(1 for inner in block.content if isinstance(inner, ImageBlock))
108
- return count
113
+ for inner in block.content:
114
+ if isinstance(inner, ImageBlock):
115
+ count += 1
116
+ if inner.image_type == "base64":
117
+ base64_sizes.append(len(inner.data))
118
+ return count, base64_sizes
119
+
120
+
121
+ def count_image_blocks(messages: List[Message]) -> int:
122
+ """Count ``ImageBlock`` instances across messages, including ones nested in tool results."""
123
+ return _image_block_stats(messages)[0]
124
+
125
+
126
+ def _anthropic_image_base64_limit(base64_sizes: List[int]) -> int:
127
+ """Return a shared per-image cap that keeps aggregate image data request-safe.
128
+
129
+ Images already below the shared cap remain byte-for-byte unchanged. Larger
130
+ images divide the remaining aggregate budget evenly after accounting for
131
+ those smaller images, avoiding unnecessary reductions when the request
132
+ already fits.
133
+ """
134
+ per_image_limit = image_utils.ANTHROPIC_MAX_IMAGE_BASE64_BYTES
135
+ aggregate_limit = image_utils.ANTHROPIC_MAX_REQUEST_IMAGE_BASE64_BYTES
136
+ projected_sizes = sorted(min(size, per_image_limit) for size in base64_sizes)
137
+ if sum(projected_sizes) <= aggregate_limit:
138
+ return per_image_limit
139
+
140
+ remaining_budget = aggregate_limit
141
+ for index, size in enumerate(projected_sizes):
142
+ remaining_images = len(projected_sizes) - index
143
+ shared_limit = remaining_budget // remaining_images
144
+ if size > shared_limit:
145
+ return max(4, min(per_image_limit, shared_limit))
146
+ remaining_budget -= size
147
+ return per_image_limit
109
148
 
110
149
 
111
150
  def _provider_value(provider: Any) -> str:
@@ -260,6 +299,8 @@ def _adapt_content_blocks_for_provider(
260
299
  target_provider: str,
261
300
  target_model: str,
262
301
  supports_vision: bool,
302
+ max_image_dimension: Optional[int] = None,
303
+ max_image_base64_bytes: int = image_utils.ANTHROPIC_MAX_IMAGE_BASE64_BYTES,
263
304
  target_edit_protocol: Optional[str] = None,
264
305
  tool_call_providers: Optional[Dict[str, str]] = None,
265
306
  tool_call_protocols: Optional[Dict[str, Optional[str]]] = None,
@@ -276,6 +317,8 @@ def _adapt_content_blocks_for_provider(
276
317
  target_provider=target_provider,
277
318
  target_model=target_model,
278
319
  supports_vision=supports_vision,
320
+ max_image_dimension=max_image_dimension,
321
+ max_image_base64_bytes=max_image_base64_bytes,
279
322
  )
280
323
  adapted.append(adapted_block)
281
324
  changed = changed or image_changed
@@ -314,6 +357,8 @@ def _adapt_content_blocks_for_provider(
314
357
  target_provider=target_provider,
315
358
  target_model=target_model,
316
359
  supports_vision=supports_vision,
360
+ max_image_dimension=max_image_dimension,
361
+ max_image_base64_bytes=max_image_base64_bytes,
317
362
  target_edit_protocol=target_edit_protocol,
318
363
  tool_call_providers=tool_call_providers,
319
364
  tool_call_protocols=tool_call_protocols,
@@ -355,6 +400,8 @@ def _adapt_content_blocks_for_provider(
355
400
  target_provider=target_provider,
356
401
  target_model=target_model,
357
402
  supports_vision=supports_vision,
403
+ max_image_dimension=max_image_dimension,
404
+ max_image_base64_bytes=max_image_base64_bytes,
358
405
  target_edit_protocol=target_edit_protocol,
359
406
  tool_call_providers=tool_call_providers,
360
407
  tool_call_protocols=tool_call_protocols,
@@ -412,6 +459,16 @@ def adapt_history_for_provider(
412
459
  target_provider = _provider_value(target_provider)
413
460
  if target_edit_protocol is not None:
414
461
  target_edit_protocol = _provider_value(target_edit_protocol)
462
+ max_image_dimension: Optional[int] = None
463
+ max_image_base64_bytes = image_utils.ANTHROPIC_MAX_IMAGE_BASE64_BYTES
464
+ if target_provider == "anthropic" and supports_vision:
465
+ image_count, base64_sizes = _image_block_stats(messages)
466
+ max_image_dimension = (
467
+ image_utils.ANTHROPIC_MANY_IMAGE_MAX_DIMENSION
468
+ if image_count > image_utils.ANTHROPIC_MANY_IMAGE_THRESHOLD
469
+ else image_utils.ANTHROPIC_MAX_IMAGE_DIMENSION
470
+ )
471
+ max_image_base64_bytes = _anthropic_image_base64_limit(base64_sizes)
415
472
  result: List[Message] = []
416
473
  changed_any = False
417
474
  tool_call_providers: Dict[str, str] = {}
@@ -436,6 +493,8 @@ def adapt_history_for_provider(
436
493
  target_provider=target_provider,
437
494
  target_model=target_model,
438
495
  supports_vision=supports_vision,
496
+ max_image_dimension=max_image_dimension,
497
+ max_image_base64_bytes=max_image_base64_bytes,
439
498
  target_edit_protocol=target_edit_protocol,
440
499
  tool_call_providers=tool_call_providers,
441
500
  tool_call_protocols=tool_call_protocols,
@@ -40,6 +40,16 @@ MAX_IMAGE_BYTES = 20 * 1024 * 1024
40
40
  # decoded image size. A raw image just under 10 MiB may therefore exceed this
41
41
  # limit after base64's 4/3 expansion.
42
42
  ANTHROPIC_MAX_IMAGE_BASE64_BYTES = 10 * 1024 * 1024
43
+ # Anthropic accepts images up to 8,000 px on either axis for ordinary
44
+ # requests. Once the request contains more than 20 images, every image must
45
+ # instead fit within 2,000 x 2,000 px.
46
+ ANTHROPIC_MAX_IMAGE_DIMENSION = 8_000
47
+ ANTHROPIC_MANY_IMAGE_THRESHOLD = 20
48
+ ANTHROPIC_MANY_IMAGE_MAX_DIMENSION = 2_000
49
+ # Anthropic rejects standard API requests above 32 MB. Keep aggregate base64
50
+ # image data at 24 MiB so JSON, system prompts, tools, and text history retain
51
+ # substantial request headroom.
52
+ ANTHROPIC_MAX_REQUEST_IMAGE_BASE64_BYTES = 24 * 1024 * 1024
43
53
 
44
54
  # Leave headroom below the provider's hard boundary when producing a
45
55
  # derivative. This avoids repeatedly re-encoding an image for tiny accounting
@@ -88,23 +98,30 @@ def resize_base64_image_to_limit(
88
98
  media_type: str,
89
99
  *,
90
100
  max_base64_bytes: int,
101
+ max_dimension: Optional[int] = None,
91
102
  ) -> ImageResizeResult:
92
103
  """Return a non-mutating provider-safe derivative of a base64 image.
93
104
 
94
- Images already within the hard limit are returned byte-for-byte unchanged.
95
- Oversized images are decoded and re-encoded as PNG when transparency must
96
- be retained, or optimized JPEG otherwise. Dimensions are reduced
105
+ Images already within the byte and optional dimension limits are returned
106
+ byte-for-byte unchanged. Oversized images are decoded and re-encoded as PNG
107
+ when transparency must be retained, or optimized JPEG otherwise.
108
+ Dimensions are reduced proportionally to the requested maximum first, then
97
109
  iteratively until the payload has a safety margin below the provider limit.
98
110
  Animated images use their first frame for the ephemeral provider copy.
99
111
  """
100
112
  if max_base64_bytes <= 0:
101
113
  raise ValueError("max_base64_bytes must be positive")
114
+ if max_dimension is not None and max_dimension <= 0:
115
+ raise ValueError("max_dimension must be positive")
102
116
 
103
117
  if not data.isascii():
104
118
  return ImageResizeResult(None, None, resized=False, error="Image payload is not ASCII base64")
105
119
  encoded_size = len(data)
106
120
 
107
- if encoded_size <= max_base64_bytes:
121
+ # Existing byte-only callers keep the cheap path and never decode a valid
122
+ # image that already fits. A dimension constraint requires reading the
123
+ # image header before the same unchanged decision can be made.
124
+ if encoded_size <= max_base64_bytes and max_dimension is None:
108
125
  return ImageResizeResult(data, media_type, resized=False)
109
126
 
110
127
  try:
@@ -112,6 +129,9 @@ def resize_base64_image_to_limit(
112
129
  with Image.open(io.BytesIO(raw)) as opened:
113
130
  opened.seek(0)
114
131
  width, height = opened.size
132
+ dimensions_fit = max_dimension is None or (width <= max_dimension and height <= max_dimension)
133
+ if encoded_size <= max_base64_bytes and dimensions_fit:
134
+ return ImageResizeResult(data, media_type, resized=False)
115
135
  if width * height > _IMAGE_RESIZE_MAX_PIXELS:
116
136
  return ImageResizeResult(
117
137
  None,
@@ -124,6 +144,9 @@ def resize_base64_image_to_limit(
124
144
  return ImageResizeResult(None, None, resized=False, error=f"Could not decode image: {exc}")
125
145
 
126
146
  has_transparency = "A" in image.getbands() or "transparency" in image.info
147
+ if max_dimension is not None and (image.width > max_dimension or image.height > max_dimension):
148
+ image.thumbnail((max_dimension, max_dimension), Image.Resampling.LANCZOS)
149
+
127
150
  if has_transparency:
128
151
  image = image.convert("RGBA")
129
152
  output_format = "PNG"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "kolega-code"
7
- version = "0.25.1"
7
+ version = "0.25.2"
8
8
  description = "Multi-agent coding in the terminal"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -124,8 +124,20 @@ class TestBaseAgent:
124
124
  assert history[0].content[1].text == "final answer"
125
125
 
126
126
  def test_history_for_llm_preserves_images_when_target_anthropic_supports_vision(self, base_agent):
127
- image = ImageBlock(image_type="base64", media_type="image/png", data="BASE64")
128
- nested_image = ImageBlock(image_type="base64", media_type="image/jpeg", data="BASE642")
127
+ png_output = io.BytesIO()
128
+ Image.new("RGB", (1, 1), "navy").save(png_output, format="PNG")
129
+ jpeg_output = io.BytesIO()
130
+ Image.new("RGB", (1, 1), "navy").save(jpeg_output, format="JPEG")
131
+ image = ImageBlock(
132
+ image_type="base64",
133
+ media_type="image/png",
134
+ data=base64.b64encode(png_output.getvalue()).decode("ascii"),
135
+ )
136
+ nested_image = ImageBlock(
137
+ image_type="base64",
138
+ media_type="image/jpeg",
139
+ data=base64.b64encode(jpeg_output.getvalue()).decode("ascii"),
140
+ )
129
141
  base_agent.primary_model_config.provider = ModelProvider.ANTHROPIC
130
142
  base_agent.primary_model_config.model = "claude-opus-4-8"
131
143
  base_agent.supports_vision = True
@@ -151,7 +163,7 @@ class TestBaseAgent:
151
163
  assert history[0].content[1] is image
152
164
  assert history[1].content[0].content[0] is nested_image
153
165
 
154
- def test_anthropic_history_resize_preserves_hydrated_history_and_artifact(
166
+ def test_anthropic_many_image_resize_preserves_hydrated_history_and_artifact(
155
167
  self,
156
168
  base_agent,
157
169
  tmp_path,
@@ -159,13 +171,11 @@ class TestBaseAgent:
159
171
  ):
160
172
  import kolega_code.utils.images as image_utils
161
173
 
162
- image = Image.effect_noise((160, 120), 80).convert("RGB")
174
+ image = Image.new("RGB", (2_001, 100), "navy")
163
175
  output = io.BytesIO()
164
176
  image.save(output, format="JPEG")
165
177
  original_bytes = output.getvalue()
166
178
  original_base64 = base64.b64encode(original_bytes).decode("ascii")
167
- limit = 1_600
168
- assert len(original_base64) > limit
169
179
 
170
180
  project = tmp_path / "project"
171
181
  project.mkdir()
@@ -174,7 +184,9 @@ class TestBaseAgent:
174
184
  store.recorder(record.session_id).record_context_message(
175
185
  Message(
176
186
  role="user",
177
- content=[ImageBlock(image_type="base64", media_type="image/jpeg", data=original_base64)],
187
+ content=[
188
+ ImageBlock(image_type="base64", media_type="image/jpeg", data=original_base64) for _ in range(21)
189
+ ],
178
190
  )
179
191
  )
180
192
  journal = store.journal(record.session_id)
@@ -185,22 +197,27 @@ class TestBaseAgent:
185
197
 
186
198
  loaded = store.load(record.session_id)
187
199
  base_agent.restore_message_history(loaded.history)
188
- restored_image = base_agent.history[0].content[0]
189
- assert isinstance(restored_image, ImageBlock)
190
- assert restored_image.data == original_base64
200
+ restored_images = base_agent.history[0].content
201
+ assert len(restored_images) == 21
202
+ assert all(isinstance(block, ImageBlock) and block.data == original_base64 for block in restored_images)
191
203
 
192
- monkeypatch.setattr(image_utils, "ANTHROPIC_MAX_IMAGE_BASE64_BYTES", limit)
193
204
  base_agent.primary_model_config.provider = ModelProvider.ANTHROPIC
194
- base_agent.primary_model_config.model = "claude-opus-4-8"
205
+ base_agent.primary_model_config.model = "claude-opus-5"
195
206
  base_agent.supports_vision = True
207
+ aggregate_limit = 60_000
208
+ monkeypatch.setattr(image_utils, "ANTHROPIC_MAX_REQUEST_IMAGE_BASE64_BYTES", aggregate_limit)
196
209
 
197
210
  outbound = base_agent._history_for_llm()
198
211
 
199
- outbound_image = outbound[0].content[0]
200
- assert isinstance(outbound_image, ImageBlock)
201
- assert outbound_image.data != original_base64
202
- assert len(outbound_image.data) < limit
203
- assert restored_image.data == original_base64
212
+ outbound_images = outbound[0].content
213
+ assert len(outbound_images) == 21
214
+ assert sum(len(block.data) for block in outbound_images if isinstance(block, ImageBlock)) <= aggregate_limit
215
+ for outbound_image in outbound_images:
216
+ assert isinstance(outbound_image, ImageBlock)
217
+ assert outbound_image.data != original_base64
218
+ with Image.open(io.BytesIO(base64.b64decode(outbound_image.data))) as resized:
219
+ assert max(resized.size) <= 2_000
220
+ assert all(isinstance(block, ImageBlock) and block.data == original_base64 for block in restored_images)
204
221
  assert journal.read_artifact(artifact_ref) == artifact_before
205
222
 
206
223
  def test_get_effective_history_falls_back_when_no_compression(self, base_agent):
@@ -357,11 +357,12 @@ def _anthropic_config() -> AgentConfig:
357
357
 
358
358
  def _image_history_message() -> Message:
359
359
  """A user message carrying a text block and an image block from an earlier turn."""
360
+ one_pixel_png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
360
361
  return Message(
361
362
  role="user",
362
363
  content=[
363
364
  TextBlock(text="what is in this image?"),
364
- ImageBlock(image_type="base64", media_type="image/png", data="ZmFrZQ=="),
365
+ ImageBlock(image_type="base64", media_type="image/png", data=one_pixel_png),
365
366
  ],
366
367
  )
367
368
 
@@ -7,6 +7,11 @@ request copy (stored history is never mutated), and the compaction-aware detecto
7
7
  only reports images that would actually be sent.
8
8
  """
9
9
 
10
+ import base64
11
+ import io
12
+
13
+ from PIL import Image
14
+
10
15
  from kolega_code.agent.conversation import (
11
16
  Conversation,
12
17
  adapt_history_for_provider,
@@ -26,7 +31,15 @@ from kolega_code.llm.models import (
26
31
 
27
32
 
28
33
  def _image(media_type: str = "image/png") -> ImageBlock:
29
- return ImageBlock(image_type="base64", media_type=media_type, data="ZmFrZQ==")
34
+ image_format = "JPEG" if media_type == "image/jpeg" else "PNG"
35
+ image = Image.new("RGB", (1, 1), "navy")
36
+ output = io.BytesIO()
37
+ image.save(output, format=image_format)
38
+ return ImageBlock(
39
+ image_type="base64",
40
+ media_type=media_type,
41
+ data=base64.b64encode(output.getvalue()).decode("ascii"),
42
+ )
30
43
 
31
44
 
32
45
  def _user(*blocks) -> Message:
@@ -32,7 +32,31 @@ from kolega_code.llm.models import (
32
32
 
33
33
 
34
34
  def _image(media_type: str = "image/png") -> ImageBlock:
35
- return ImageBlock(image_type="base64", media_type=media_type, data="ZmFrZQ==")
35
+ image_format = "JPEG" if media_type == "image/jpeg" else "PNG"
36
+ image = Image.new("RGB", (1, 1), "navy")
37
+ output = io.BytesIO()
38
+ image.save(output, format=image_format)
39
+ return ImageBlock(
40
+ image_type="base64",
41
+ media_type=media_type,
42
+ data=base64.b64encode(output.getvalue()).decode("ascii"),
43
+ )
44
+
45
+
46
+ def _solid_png(width: int, height: int) -> ImageBlock:
47
+ image = Image.new("RGB", (width, height), "navy")
48
+ output = io.BytesIO()
49
+ image.save(output, format="PNG")
50
+ return ImageBlock(
51
+ image_type="base64",
52
+ media_type="image/png",
53
+ data=base64.b64encode(output.getvalue()).decode("ascii"),
54
+ )
55
+
56
+
57
+ def _image_dimensions(block: ImageBlock) -> tuple[int, int]:
58
+ with Image.open(io.BytesIO(base64.b64decode(block.data))) as image:
59
+ return image.size
36
60
 
37
61
 
38
62
  def _noise_jpeg() -> ImageBlock:
@@ -238,6 +262,138 @@ def test_replace_preserves_cache_checkpoint_on_tool_result():
238
262
  assert new_tr.cache_checkpoint is True
239
263
 
240
264
 
265
+ def test_adapt_keeps_normal_anthropic_dimensions_at_exactly_twenty_images() -> None:
266
+ large = _solid_png(2_001, 100)
267
+ history = [_user(large, *[_image() for _ in range(19)])]
268
+
269
+ adapted = adapt_history_for_provider(
270
+ history,
271
+ target_provider="anthropic",
272
+ target_model="claude-opus-5",
273
+ supports_vision=True,
274
+ )
275
+
276
+ assert count_image_blocks(adapted) == 20
277
+ assert adapted is history
278
+ assert adapted[0].content[0] is large
279
+ assert _image_dimensions(large) == (2_001, 100)
280
+
281
+
282
+ def test_adapt_constrains_direct_and_nested_images_when_request_has_more_than_twenty() -> None:
283
+ top_level = _solid_png(2_001, 100)
284
+ nested = _solid_png(100, 2_001)
285
+ valid = [_image() for _ in range(19)]
286
+ result = ToolResult(
287
+ tool_use_id="many-image-call",
288
+ name="browser_take_screenshot",
289
+ content=[nested, TextBlock(text="caption")],
290
+ is_error=False,
291
+ cache_checkpoint=True,
292
+ execution_id="many-image-exec",
293
+ )
294
+ history = [_user(top_level, *valid), _user(result)]
295
+
296
+ adapted = adapt_history_for_provider(
297
+ history,
298
+ target_provider="anthropic",
299
+ target_model="claude-opus-5",
300
+ supports_vision=True,
301
+ )
302
+
303
+ assert count_image_blocks(adapted) == 21
304
+ adapted_top = adapted[0].content[0]
305
+ assert isinstance(adapted_top, ImageBlock)
306
+ assert adapted_top is not top_level
307
+ assert max(_image_dimensions(adapted_top)) <= 2_000
308
+ assert all(adapted[0].content[index + 1] is block for index, block in enumerate(valid))
309
+
310
+ adapted_result = adapted[1].content[0]
311
+ assert isinstance(adapted_result, ToolResult)
312
+ assert adapted_result is not result
313
+ assert adapted_result.tool_use_id == "many-image-call"
314
+ assert adapted_result.name == "browser_take_screenshot"
315
+ assert adapted_result.cache_checkpoint is True
316
+ assert adapted_result.execution_id == "many-image-exec"
317
+ adapted_nested = adapted_result.content[0]
318
+ assert isinstance(adapted_nested, ImageBlock)
319
+ assert adapted_nested is not nested
320
+ assert max(_image_dimensions(adapted_nested)) <= 2_000
321
+ assert isinstance(adapted_result.content[1], TextBlock)
322
+ assert adapted_result.content[1].text == "caption"
323
+
324
+ # Only the outbound request receives derivatives.
325
+ assert history[0].content[0] is top_level
326
+ assert history[1].content[0] is result
327
+ assert result.content[0] is nested
328
+ assert _image_dimensions(top_level) == (2_001, 100)
329
+ assert _image_dimensions(nested) == (100, 2_001)
330
+
331
+
332
+ def test_adapt_constrains_single_anthropic_image_to_normal_dimension_limit() -> None:
333
+ oversized = _solid_png(8_001, 2)
334
+ history = [_user(oversized)]
335
+
336
+ adapted = adapt_history_for_provider(
337
+ history,
338
+ target_provider="anthropic",
339
+ target_model="claude-opus-5",
340
+ supports_vision=True,
341
+ )
342
+
343
+ adapted_image = adapted[0].content[0]
344
+ assert isinstance(adapted_image, ImageBlock)
345
+ assert adapted_image is not oversized
346
+ assert max(_image_dimensions(adapted_image)) <= 8_000
347
+ assert history[0].content[0] is oversized
348
+ assert _image_dimensions(oversized) == (8_001, 2)
349
+
350
+
351
+ def test_adapt_caps_aggregate_anthropic_image_payload_without_mutating_history(
352
+ monkeypatch: pytest.MonkeyPatch,
353
+ ) -> None:
354
+ import kolega_code.utils.images as image_utils
355
+
356
+ aggregate_limit = 60_000
357
+ monkeypatch.setattr(image_utils, "ANTHROPIC_MAX_REQUEST_IMAGE_BASE64_BYTES", aggregate_limit)
358
+ valid = _image()
359
+ nested_images = [_noise_jpeg() for _ in range(14)]
360
+ results = [
361
+ ToolResult(
362
+ tool_use_id=f"aggregate-image-call-{index}",
363
+ name="read_image",
364
+ content=[image],
365
+ is_error=False,
366
+ cache_checkpoint=True,
367
+ )
368
+ for index, image in enumerate(nested_images)
369
+ ]
370
+ history = [_user(valid, *results)]
371
+ assert len(valid.data) + sum(len(image.data) for image in nested_images) > aggregate_limit
372
+
373
+ adapted = adapt_history_for_provider(
374
+ history,
375
+ target_provider="anthropic",
376
+ target_model="claude-opus-5",
377
+ supports_vision=True,
378
+ )
379
+
380
+ assert adapted is not history
381
+ assert adapted[0].content[0] is valid
382
+ adapted_results = adapted[0].content[1:]
383
+ adapted_images = []
384
+ for adapted_result in adapted_results:
385
+ assert isinstance(adapted_result, ToolResult)
386
+ assert adapted_result.cache_checkpoint is True
387
+ adapted_image = adapted_result.content[0]
388
+ assert isinstance(adapted_image, ImageBlock)
389
+ assert _image_dimensions(adapted_image)[0] > 0
390
+ adapted_images.append(adapted_image)
391
+ assert len(valid.data) + sum(len(image.data) for image in adapted_images) <= aggregate_limit
392
+
393
+ for original_result, original_image in zip(results, nested_images, strict=True):
394
+ assert original_result.content[0] is original_image
395
+
396
+
241
397
  def test_adapt_resizes_top_level_and_nested_anthropic_images_without_mutating_history(
242
398
  monkeypatch: pytest.MonkeyPatch,
243
399
  ) -> None:
@@ -330,10 +486,44 @@ def test_adapt_resizes_image_nested_in_compatible_freeform_tool_result(monkeypat
330
486
  assert result.content[0] is nested
331
487
 
332
488
 
489
+ def test_adapt_applies_many_image_dimension_to_compatible_freeform_tool_result() -> None:
490
+ nested = _solid_png(2_001, 100)
491
+ result = ToolResult(
492
+ tool_use_id="freeform-many-image-call",
493
+ name="browser_take_screenshot",
494
+ content=[nested],
495
+ is_error=False,
496
+ input_kind="freeform",
497
+ )
498
+ history = [
499
+ Message(
500
+ role="user",
501
+ content=[*[_image() for _ in range(20)], result],
502
+ usage_metadata={"provider": "anthropic"},
503
+ )
504
+ ]
505
+
506
+ adapted = adapt_history_for_provider(
507
+ history,
508
+ target_provider="anthropic",
509
+ target_model="claude-opus-5",
510
+ supports_vision=True,
511
+ )
512
+
513
+ adapted_result = adapted[0].content[-1]
514
+ assert isinstance(adapted_result, ToolResult)
515
+ assert isinstance(adapted_result.content, list)
516
+ adapted_image = adapted_result.content[0]
517
+ assert isinstance(adapted_image, ImageBlock)
518
+ assert max(_image_dimensions(adapted_image)) <= 2_000
519
+ assert result.content[0] is nested
520
+ assert _image_dimensions(nested) == (2_001, 100)
521
+
522
+
333
523
  def test_adapt_leaves_valid_url_and_non_anthropic_images_unchanged(monkeypatch: pytest.MonkeyPatch) -> None:
334
524
  import kolega_code.utils.images as image_utils
335
525
 
336
- monkeypatch.setattr(image_utils, "ANTHROPIC_MAX_IMAGE_BASE64_BYTES", 64)
526
+ monkeypatch.setattr(image_utils, "ANTHROPIC_MAX_IMAGE_BASE64_BYTES", 128)
337
527
  valid = _image()
338
528
  url = ImageBlock(image_type="url", media_type="image/png", data="https://example.com/image.png")
339
529
  oversized = _noise_jpeg()