kolega-code 0.18.0__tar.gz → 0.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (726) hide show
  1. {kolega_code-0.18.0 → kolega_code-0.19.0}/CHANGELOG.md +32 -0
  2. {kolega_code-0.18.0 → kolega_code-0.19.0}/PKG-INFO +3 -2
  3. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/astro.config.mjs +1 -0
  4. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/assets/coverage.svg +1 -1
  5. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/concepts/how-it-works.md +7 -0
  6. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/concepts/tools.md +46 -3
  7. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/prompt-overrides.md +16 -2
  8. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/tui/interface.md +4 -0
  9. kolega_code-0.19.0/docs/src/content/docs/tui/project-memory.md +188 -0
  10. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/tui/slash-commands.md +15 -0
  11. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/__init__.py +1 -1
  12. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/__init__.py +1 -1
  13. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/baseagent.py +51 -22
  14. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/browseragent.py +4 -2
  15. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/coder.py +4 -2
  16. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/context.py +1 -0
  17. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/custom_agents.py +4 -0
  18. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/generalagent.py +7 -3
  19. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/investigationagent.py +5 -1
  20. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/planningagent.py +4 -0
  21. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_dump.py +0 -5
  22. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_provider.py +3 -13
  23. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +2 -8
  24. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +2 -8
  25. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +2 -8
  26. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +2 -8
  27. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/agent_tool.py +3 -0
  28. kolega_code-0.19.0/kolega_code/agent/tool_backend/memory_tool.py +130 -0
  29. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/workflow_tool.py +1 -0
  30. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tools.py +89 -37
  31. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/app.py +74 -12
  32. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/diagnostics.py +2 -38
  33. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/slash_commands.py +1 -0
  34. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/agent_runtime.py +1 -0
  35. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/app_base.py +8 -0
  36. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/command_handlers.py +159 -0
  37. kolega_code-0.19.0/kolega_code/cli/tui/memory_screen.py +661 -0
  38. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/settings_panel.py +8 -1
  39. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/settings_screen.py +142 -3
  40. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/styles.tcss +127 -0
  41. kolega_code-0.19.0/kolega_code/cli/tui/terminal_display.py +269 -0
  42. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/responses_common.py +173 -2
  43. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/local_state.py +54 -30
  44. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/service.py +49 -7
  45. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/transport.py +22 -10
  46. kolega_code-0.19.0/kolega_code/memory/__init__.py +50 -0
  47. kolega_code-0.19.0/kolega_code/memory/identity.py +94 -0
  48. kolega_code-0.19.0/kolega_code/memory/manager.py +547 -0
  49. kolega_code-0.19.0/kolega_code/memory/manifest.py +102 -0
  50. kolega_code-0.19.0/kolega_code/memory/markdown.py +627 -0
  51. kolega_code-0.19.0/kolega_code/memory/models.py +110 -0
  52. kolega_code-0.19.0/kolega_code/memory/protocol.py +35 -0
  53. kolega_code-0.19.0/kolega_code/memory/registry.py +87 -0
  54. kolega_code-0.19.0/kolega_code/security/__init__.py +15 -0
  55. kolega_code-0.19.0/kolega_code/security/secrets.py +112 -0
  56. {kolega_code-0.18.0 → kolega_code-0.19.0}/pyproject.toml +4 -3
  57. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_chatgpt_oauth_streaming.py +154 -0
  58. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_agent_tools_inventory.py +4 -2
  59. kolega_code-0.19.0/tests/agent/test_base_agent_prompt_context.py +151 -0
  60. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_runtime.py +31 -0
  61. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_prompt_dump.py +13 -4
  62. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_prompt_overrides.py +0 -2
  63. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_prompt_provider.py +0 -18
  64. kolega_code-0.19.0/tests/agent/test_tool_collection_memory.py +422 -0
  65. kolega_code-0.19.0/tests/cli/test_app_memory.py +704 -0
  66. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_streaming.py +48 -0
  67. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_slash_commands.py +2 -0
  68. kolega_code-0.19.0/tests/cli/test_terminal_display.py +264 -0
  69. kolega_code-0.19.0/tests/cli/test_tui_control_sanitization.py +137 -0
  70. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_tui_settings_screens.py +1 -1
  71. kolega_code-0.19.0/tests/memory/test_backend.py +374 -0
  72. kolega_code-0.19.0/tests/memory/test_project_memory_manager.py +708 -0
  73. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/test_mcp_transport.py +215 -1
  74. {kolega_code-0.18.0 → kolega_code-0.19.0}/uv.lock +17 -31
  75. kolega_code-0.18.0/kolega_code/agent/tool_backend/memory_tool.py +0 -81
  76. kolega_code-0.18.0/kolega_code/cli/tui/terminal_display.py +0 -137
  77. kolega_code-0.18.0/tests/agent/test_base_agent_prompt_context.py +0 -78
  78. kolega_code-0.18.0/tests/agent/test_tool_collection_memory.py +0 -192
  79. kolega_code-0.18.0/tests/cli/test_terminal_display.py +0 -42
  80. {kolega_code-0.18.0 → kolega_code-0.19.0}/.env.example +0 -0
  81. {kolega_code-0.18.0 → kolega_code-0.19.0}/.githooks/pre-commit +0 -0
  82. {kolega_code-0.18.0 → kolega_code-0.19.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  83. {kolega_code-0.18.0 → kolega_code-0.19.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  84. {kolega_code-0.18.0 → kolega_code-0.19.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  85. {kolega_code-0.18.0 → kolega_code-0.19.0}/.github/workflows/ci.yml +0 -0
  86. {kolega_code-0.18.0 → kolega_code-0.19.0}/.github/workflows/docs.yml +0 -0
  87. {kolega_code-0.18.0 → kolega_code-0.19.0}/.github/workflows/release.yml +0 -0
  88. {kolega_code-0.18.0 → kolega_code-0.19.0}/.gitignore +0 -0
  89. {kolega_code-0.18.0 → kolega_code-0.19.0}/.pre-commit-config.yaml +0 -0
  90. {kolega_code-0.18.0 → kolega_code-0.19.0}/CONTRIBUTING.md +0 -0
  91. {kolega_code-0.18.0 → kolega_code-0.19.0}/LICENSE +0 -0
  92. {kolega_code-0.18.0 → kolega_code-0.19.0}/README.md +0 -0
  93. {kolega_code-0.18.0 → kolega_code-0.19.0}/RELEASING.md +0 -0
  94. {kolega_code-0.18.0 → kolega_code-0.19.0}/SECURITY.md +0 -0
  95. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/__init__.py +0 -0
  96. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/README.md +0 -0
  97. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/__init__.py +0 -0
  98. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/__main__.py +0 -0
  99. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/artifacts.py +0 -0
  100. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/authoring.py +0 -0
  101. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/browser.py +0 -0
  102. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/browser_assets/app.js +0 -0
  103. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/browser_assets/index.html +0 -0
  104. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/browser_assets/styles.css +0 -0
  105. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/corpus.py +0 -0
  106. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/authoring-slots.yaml +0 -0
  107. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/licenses/LICENSE +0 -0
  108. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/manifest.yaml +0 -0
  109. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/cursed_renderer.go +0 -0
  110. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/exec_test.go +0 -0
  111. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/go.mod +0 -0
  112. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/key.go +0 -0
  113. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/logging.go +0 -0
  114. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/options.go +0 -0
  115. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/options_test.go +0 -0
  116. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/tea.go +0 -0
  117. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/tea_test.go +0 -0
  118. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/bubbletea-fc707bb7ea01/tree/tty.go +0 -0
  119. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/licenses/LICENSE-APACHE +0 -0
  120. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/licenses/LICENSE-MIT +0 -0
  121. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/manifest.yaml +0 -0
  122. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/Cargo.toml +0 -0
  123. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/builder/arg.rs +0 -0
  124. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/builder/arg_group.rs +0 -0
  125. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/builder/value_parser.rs +0 -0
  126. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/derive.rs +0 -0
  127. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/error/context.rs +0 -0
  128. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/error/mod.rs +0 -0
  129. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/output/help_template.rs +0 -0
  130. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/parser/matches/arg_matches.rs +0 -0
  131. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/clap-4a35e3bcabf7/tree/clap_builder/src/parser/parser.rs +0 -0
  132. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/licenses/LICENSE.txt +0 -0
  133. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/manifest.yaml +0 -0
  134. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/pyproject.toml +0 -0
  135. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/__init__.py +0 -0
  136. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/_termui_impl.py +0 -0
  137. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/_winconsole.py +0 -0
  138. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/core.py +0 -0
  139. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/exceptions.py +0 -0
  140. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/globals.py +0 -0
  141. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/termui.py +0 -0
  142. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/types.py +0 -0
  143. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/click-b67832c2167e/tree/src/click/utils.py +0 -0
  144. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/licenses/LICENSE +0 -0
  145. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/manifest.yaml +0 -0
  146. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/lib/request.js +0 -0
  147. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/package.json +0 -0
  148. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/Router.js +0 -0
  149. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/acceptance/resource.js +0 -0
  150. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/app.options.js +0 -0
  151. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/app.render.js +0 -0
  152. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/app.router.js +0 -0
  153. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/express.static.js +0 -0
  154. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/express-ae6dd37680e3/tree/test/express.text.js +0 -0
  155. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/licenses/LICENSE +0 -0
  156. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/manifest.yaml +0 -0
  157. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/CMakeLists.txt +0 -0
  158. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/base.h +0 -0
  159. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/chrono.h +0 -0
  160. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/format-inl.h +0 -0
  161. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/format.h +0 -0
  162. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/os.h +0 -0
  163. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/ranges.h +0 -0
  164. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/include/fmt/std.h +0 -0
  165. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/fmt-a79df4504cd4/tree/src/fmt.cc +0 -0
  166. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/licenses/LICENSE +0 -0
  167. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/manifest.yaml +0 -0
  168. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/pom.xml +0 -0
  169. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/FormattingStyle.java +0 -0
  170. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/Gson.java +0 -0
  171. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/GsonBuilder.java +0 -0
  172. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/JsonElement.java +0 -0
  173. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/internal/ReflectionAccessFilterHelper.java +0 -0
  174. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java +0 -0
  175. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/com/google/gson/internal/bind/util/ISO8601Utils.java +0 -0
  176. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/gson-c9f3fd55854a/tree/gson/src/main/java/module-info.java +0 -0
  177. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/licenses/LICENSE.txt +0 -0
  178. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/manifest.yaml +0 -0
  179. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/build.gradle.kts +0 -0
  180. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/CipherSuite.kt +0 -0
  181. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/Headers.kt +0 -0
  182. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/MultipartBody.kt +0 -0
  183. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/MultipartReader.kt +0 -0
  184. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/OkHttpClient.kt +0 -0
  185. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/http2/Http2Connection.kt +0 -0
  186. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/http2/Settings.kt +0 -0
  187. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/okhttp-6a237f781144/tree/okhttp/src/jvmMain/kotlin/okhttp3/internal/platform/Jdk8WithJettyBootPlatform.kt +0 -0
  188. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/licenses/MIT-LICENSE +0 -0
  189. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/manifest.yaml +0 -0
  190. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/application.rb +0 -0
  191. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/file_list.rb +0 -0
  192. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/file_utils.rb +0 -0
  193. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/file_utils_ext.rb +0 -0
  194. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/loaders/makefile.rb +0 -0
  195. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/rake_test_loader.rb +0 -0
  196. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/task.rb +0 -0
  197. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/lib/rake/task_manager.rb +0 -0
  198. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/rake-162f9f80cad8/tree/rake.gemspec +0 -0
  199. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/licenses/LICENSE.md +0 -0
  200. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/manifest.yaml +0 -0
  201. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Live/LiveDisplay.cs +0 -0
  202. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Spectre.Console.csproj +0 -0
  203. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Layout/Layout.cs +0 -0
  204. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Markup.cs +0 -0
  205. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Table/Table.cs +0 -0
  206. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console/Widgets/Table/TableColumn.cs +0 -0
  207. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console.Ansi/AnsiMarkup.cs +0 -0
  208. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console.Ansi/AnsiWriter.cs +0 -0
  209. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/spectre-console-3ba102309539/tree/src/Spectre.Console.Ansi/Utilities/StringBuffer.cs +0 -0
  210. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/licenses/LICENSE.txt +0 -0
  211. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/manifest.yaml +0 -0
  212. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Package.swift +0 -0
  213. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Completions/BashCompletionsGenerator.swift +0 -0
  214. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Completions/ZshCompletionsGenerator.swift +0 -0
  215. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsable Properties/Flag.swift +0 -0
  216. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsing/ArgumentDefinition.swift +0 -0
  217. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsing/ArgumentSet.swift +0 -0
  218. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Parsing/ParserError.swift +0 -0
  219. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Usage/DumpHelpGenerator.swift +0 -0
  220. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/swift-argument-parser-e579882f9557/tree/Sources/ArgumentParser/Utilities/SequenceExtensions.swift +0 -0
  221. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/licenses/LICENSE +0 -0
  222. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/manifest.yaml +0 -0
  223. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Application.php +0 -0
  224. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Descriptor/JsonDescriptor.php +0 -0
  225. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/ProgressBar.php +0 -0
  226. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/SymfonyQuestionHelper.php +0 -0
  227. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/Table.php +0 -0
  228. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Helper/TableStyle.php +0 -0
  229. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Interaction/Interaction.php +0 -0
  230. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/Style/SymfonyStyle.php +0 -0
  231. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/symfony-console-9df1ce79867b/tree/composer.json +0 -0
  232. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/licenses/LICENSE +0 -0
  233. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/manifest.yaml +0 -0
  234. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/package.json +0 -0
  235. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v3/types.ts +0 -0
  236. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/classic/schemas.ts +0 -0
  237. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/checks.ts +0 -0
  238. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/errors.ts +0 -0
  239. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/json-schema-processors.ts +0 -0
  240. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/regexes.ts +0 -0
  241. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/schemas.ts +0 -0
  242. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/core/util.ts +0 -0
  243. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/snapshots/zod-912f0f51b0ce/tree/packages/zod/src/v4/mini/schemas.ts +0 -0
  244. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/fixtures/sources.yaml +0 -0
  245. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/matrices/deepseek-v4.yaml +0 -0
  246. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/matrices/example.yaml +0 -0
  247. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/matrices/validity-slice.yaml +0 -0
  248. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/models.py +0 -0
  249. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/protocols.py +0 -0
  250. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/recipes.py +0 -0
  251. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/report.py +0 -0
  252. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/runner.py +0 -0
  253. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/scoring.py +0 -0
  254. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/suites/coder-agent.yaml +0 -0
  255. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/suites/core.yaml +0 -0
  256. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/suites/corpora/edit-core.yaml +0 -0
  257. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/suites/fixtures/smoke-tasks.yaml +0 -0
  258. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/suites/smoke.yaml +0 -0
  259. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/usage.py +0 -0
  260. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/verifier/Dockerfile +0 -0
  261. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/verifier/toolchains.lock.yaml +0 -0
  262. {kolega_code-0.18.0 → kolega_code-0.19.0}/benchmarks/edit_tools/workspace.py +0 -0
  263. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/.gitignore +0 -0
  264. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/README.md +0 -0
  265. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/package-lock.json +0 -0
  266. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/package.json +0 -0
  267. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/public/favicon.svg +0 -0
  268. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/assets/demo.gif +0 -0
  269. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/assets/kolega-dark.svg +0 -0
  270. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/assets/kolega-light.svg +0 -0
  271. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/cli/ask.md +0 -0
  272. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/cli/doctor.md +0 -0
  273. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/cli/overview.md +0 -0
  274. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/cli/sessions.md +0 -0
  275. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/concepts/agents.md +0 -0
  276. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/environment-variables.md +0 -0
  277. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/lsp.md +0 -0
  278. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/mcp.md +0 -0
  279. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/providers-and-models.mdx +0 -0
  280. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/settings-and-api-keys.mdx +0 -0
  281. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/configuration/sign-in-with-chatgpt.mdx +0 -0
  282. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/custom-agents.mdx +0 -0
  283. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/getting-started/installation.mdx +0 -0
  284. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/getting-started/quick-start.mdx +0 -0
  285. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/gigacode.mdx +0 -0
  286. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/goal.md +0 -0
  287. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/hooks.md +0 -0
  288. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/index.mdx +0 -0
  289. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/skills.mdx +0 -0
  290. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/troubleshooting/diagnostics.md +0 -0
  291. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/troubleshooting/terminal-tmux.md +0 -0
  292. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/tui/composer.md +0 -0
  293. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/tui/modes.md +0 -0
  294. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content/docs/tui/sessions-and-resume.md +0 -0
  295. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/content.config.ts +0 -0
  296. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/src/styles/brand.css +0 -0
  297. {kolega_code-0.18.0 → kolega_code-0.19.0}/docs/tsconfig.json +0 -0
  298. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/common.py +0 -0
  299. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/compression.py +0 -0
  300. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/conversation.py +0 -0
  301. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/edit_protocols.py +0 -0
  302. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/errors.py +0 -0
  303. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/goal.py +0 -0
  304. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/__init__.py +0 -0
  305. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/budget.py +0 -0
  306. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/errors.py +0 -0
  307. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/executor.py +0 -0
  308. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/guide.py +0 -0
  309. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/journal.py +0 -0
  310. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/runtime.py +0 -0
  311. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/orchestration/types.py +0 -0
  312. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_overrides.py +0 -0
  313. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  314. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  315. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  316. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  317. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
  318. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
  319. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  320. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  321. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  322. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  323. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  324. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  325. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  326. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  327. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  328. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  329. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  330. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  331. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  332. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/prompts.py +0 -0
  333. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  334. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  335. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  336. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
  337. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
  338. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
  339. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  340. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
  341. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
  342. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
  343. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  344. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
  345. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
  346. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
  347. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
  348. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
  349. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
  350. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
  351. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
  352. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
  353. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  354. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
  355. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  356. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  357. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
  358. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
  359. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
  360. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
  361. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
  362. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
  363. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
  364. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  365. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
  366. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/agent/utils/commands.py +0 -0
  367. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/auth/__init__.py +0 -0
  368. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/auth/_jwt.py +0 -0
  369. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/auth/chatgpt_oauth.py +0 -0
  370. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/auth/constants.py +0 -0
  371. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/auth/tokens.py +0 -0
  372. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/__init__.py +0 -0
  373. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/clipboard_image.py +0 -0
  374. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/config.py +0 -0
  375. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/connection.py +0 -0
  376. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/file_index.py +0 -0
  377. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/goal.py +0 -0
  378. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/main.py +0 -0
  379. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/mentions.py +0 -0
  380. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/messages.py +0 -0
  381. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/model_connection.py +0 -0
  382. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/plan_artifacts.py +0 -0
  383. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/provider_registry.py +0 -0
  384. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/session_journal.py +0 -0
  385. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/session_store.py +0 -0
  386. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/settings.py +0 -0
  387. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/skills.py +0 -0
  388. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/theme.py +0 -0
  389. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/__init__.py +0 -0
  390. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/changes_screen.py +0 -0
  391. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/constants.py +0 -0
  392. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/onboarding_screen.py +0 -0
  393. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/prompt_flows.py +0 -0
  394. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/session_diff.py +0 -0
  395. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/state.py +0 -0
  396. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/status_dashboard.py +0 -0
  397. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
  398. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/transcript.py +0 -0
  399. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/tui/widgets.py +0 -0
  400. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/cli/updater.py +0 -0
  401. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/config.py +0 -0
  402. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/events.py +0 -0
  403. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/__init__.py +0 -0
  404. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/backends.py +0 -0
  405. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/config.py +0 -0
  406. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/dispatcher.py +0 -0
  407. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/events.py +0 -0
  408. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/matcher.py +0 -0
  409. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/hooks/outcome.py +0 -0
  410. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/client.py +0 -0
  411. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/exceptions.py +0 -0
  412. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/instrumented_client.py +0 -0
  413. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/models.py +0 -0
  414. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/__init__.py +0 -0
  415. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/anthropic.py +0 -0
  416. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/base.py +0 -0
  417. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
  418. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/google.py +0 -0
  419. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/models.py +0 -0
  420. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/openai.py +0 -0
  421. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/providers/openai_responses.py +0 -0
  422. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/ratelimit.py +0 -0
  423. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/__init__.py +0 -0
  424. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/accessors.py +0 -0
  425. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/__init__.py +0 -0
  426. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
  427. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
  428. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
  429. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
  430. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/google.py +0 -0
  431. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
  432. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
  433. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
  434. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/openai.py +0 -0
  435. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
  436. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/together.py +0 -0
  437. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/xai.py +0 -0
  438. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/catalog/zai.py +0 -0
  439. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/thinking.py +0 -0
  440. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/specs/types.py +0 -0
  441. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/timeouts.py +0 -0
  442. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/llm/tool_execution_ids.py +0 -0
  443. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/__init__.py +0 -0
  444. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/config.py +0 -0
  445. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/oauth.py +0 -0
  446. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/state.py +0 -0
  447. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/mcp/tools.py +0 -0
  448. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/models/__init__.py +0 -0
  449. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/models/sandbox_terminal_state.py +0 -0
  450. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/permissions.py +0 -0
  451. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/runtime.py +0 -0
  452. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/README.md +0 -0
  453. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/__init__.py +0 -0
  454. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/async_filesystem.py +0 -0
  455. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/base.py +0 -0
  456. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/browser.py +0 -0
  457. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/event_loop.py +0 -0
  458. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/filesystem.py +0 -0
  459. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/local.py +0 -0
  460. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/serializer.py +0 -0
  461. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/terminal.py +0 -0
  462. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/sandbox/utils.py +0 -0
  463. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/base.py +0 -0
  464. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/browser.py +0 -0
  465. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/file_system.py +0 -0
  466. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/html.py +0 -0
  467. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/__init__.py +0 -0
  468. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/client.py +0 -0
  469. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/config.py +0 -0
  470. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/detector.py +0 -0
  471. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/diagnostics.py +0 -0
  472. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/edits.py +0 -0
  473. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/manager.py +0 -0
  474. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/registry.py +0 -0
  475. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/lsp/registry.yaml +0 -0
  476. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/snapshots.py +0 -0
  477. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/terminal.py +0 -0
  478. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/terminal_buffer.py +0 -0
  479. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/services/workspace_scan.py +0 -0
  480. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/tools/__init__.py +0 -0
  481. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/tools/core.py +0 -0
  482. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/tools/definitions.py +0 -0
  483. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/tools/registry.py +0 -0
  484. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/utils/__init__.py +0 -0
  485. {kolega_code-0.18.0 → kolega_code-0.19.0}/kolega_code/utils/images.py +0 -0
  486. {kolega_code-0.18.0 → kolega_code-0.19.0}/run_tests.sh +0 -0
  487. {kolega_code-0.18.0 → kolega_code-0.19.0}/scripts/bench_hotpaths.py +0 -0
  488. {kolega_code-0.18.0 → kolega_code-0.19.0}/scripts/bench_web_fetch.py +0 -0
  489. {kolega_code-0.18.0 → kolega_code-0.19.0}/scripts/check-dev-hooks.sh +0 -0
  490. {kolega_code-0.18.0 → kolega_code-0.19.0}/scripts/install-kolega-code.sh +0 -0
  491. {kolega_code-0.18.0 → kolega_code-0.19.0}/scripts/setup-dev.sh +0 -0
  492. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/__init__.py +0 -0
  493. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/__init__.py +0 -0
  494. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/compaction_helpers.py +0 -0
  495. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/conftest.py +0 -0
  496. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/__init__.py +0 -0
  497. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/_token_counting_utils.py +0 -0
  498. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_anthropic_local_token_counting_incremental.py +0 -0
  499. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_anthropic_token_counting.py +0 -0
  500. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_billing_openai_cache.py +0 -0
  501. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_chatgpt_live.py +0 -0
  502. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_chatgpt_oauth_auth_config.py +0 -0
  503. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_chatgpt_oauth_conversion.py +0 -0
  504. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_chatgpt_oauth_provider.py +0 -0
  505. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_chatgpt_oauth_provider_generate.py +0 -0
  506. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_client.py +0 -0
  507. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_client_live.py +0 -0
  508. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_client_runtime.py +0 -0
  509. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_dashscope_mapping.py +0 -0
  510. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_edit_protocol_resolution.py +0 -0
  511. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_error_boundary.py +0 -0
  512. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_exceptions.py +0 -0
  513. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_freeform_tools.py +0 -0
  514. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_freeform_tools_live.py +0 -0
  515. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_google_thought_signature.py +0 -0
  516. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_google_tool_signature_live.py +0 -0
  517. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_instrumented_client.py +0 -0
  518. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_instrumented_client_integration.py +0 -0
  519. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_instrumented_client_stream.py +0 -0
  520. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_langfuse_normalization.py +0 -0
  521. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_live_providers.py +0 -0
  522. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_message_conversion.py +0 -0
  523. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_model_specs.py +0 -0
  524. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_cached_tokens.py +0 -0
  525. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_cached_tokens_stream.py +0 -0
  526. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_message_conversion.py +0 -0
  527. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_reasoning_replay.py +0 -0
  528. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_responses_provider.py +0 -0
  529. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_stream_accumulation.py +0 -0
  530. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_token_counting.py +0 -0
  531. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_openai_token_counting_incremental.py +0 -0
  532. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_provider_usage_mapping.py +0 -0
  533. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_streaming_timeouts.py +0 -0
  534. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_supports_vision.py +0 -0
  535. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_thinking_effort.py +0 -0
  536. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_tool_execution_ids.py +0 -0
  537. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/llm/test_xai_prompt_cache_header.py +0 -0
  538. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/orchestration/__init__.py +0 -0
  539. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/orchestration/test_orchestration.py +0 -0
  540. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/__init__.py +0 -0
  541. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_browser.py +0 -0
  542. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_browser_console_logs.py +0 -0
  543. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_browser_content.py +0 -0
  544. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_browser_integration.py +0 -0
  545. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_browser_parity.py +0 -0
  546. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_file_system.py +0 -0
  547. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_file_system_integration.py +0 -0
  548. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_file_system_path.py +0 -0
  549. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_local_file_system.py +0 -0
  550. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_sandbox_terminal_input.py +0 -0
  551. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_terminal.py +0 -0
  552. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_terminal_buffer.py +0 -0
  553. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/services/test_terminal_state_serializer.py +0 -0
  554. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent.py +0 -0
  555. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_anthropic_history_validation.py +0 -0
  556. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_compaction.py +0 -0
  557. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_effective_history.py +0 -0
  558. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_history_serialization.py +0 -0
  559. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_queued_injection.py +0 -0
  560. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_role_overrides.py +0 -0
  561. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_tool_call_repair.py +0 -0
  562. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_tool_call_repair_integration.py +0 -0
  563. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_base_agent_tool_execution.py +0 -0
  564. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_coder_attachments.py +0 -0
  565. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_coder_prompt_extensions.py +0 -0
  566. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_commands.py +0 -0
  567. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_compaction_integration.py +0 -0
  568. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_compaction_persistence.py +0 -0
  569. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_compaction_subagent.py +0 -0
  570. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_compaction_tui_events.py +0 -0
  571. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_compress_command.py +0 -0
  572. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_compression.py +0 -0
  573. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_conversation_compaction.py +0 -0
  574. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_custom_agents.py +0 -0
  575. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_duplicate_tool_results.py +0 -0
  576. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_edit_protocol_tools.py +0 -0
  577. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_empty_message_handling.py +0 -0
  578. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_event_emitter.py +0 -0
  579. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_general_agent.py +0 -0
  580. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_gigacode_gating.py +0 -0
  581. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_goal.py +0 -0
  582. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_goal_evaluate.py +0 -0
  583. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_history_adapter_thinking.py +0 -0
  584. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_history_image_blocks.py +0 -0
  585. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_hooks_integration.py +0 -0
  586. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_html.py +0 -0
  587. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_image_compat.py +0 -0
  588. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_parallel_tool_calls.py +0 -0
  589. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_permissions.py +0 -0
  590. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_planning_agent.py +0 -0
  591. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_prompts.py +0 -0
  592. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_read_image_tool.py +0 -0
  593. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_tool_collection_builtin_dispatch.py +0 -0
  594. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_tool_collection_config.py +0 -0
  595. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_tool_collection_extensions.py +0 -0
  596. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_tool_collection_initialization.py +0 -0
  597. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_tool_registry.py +0 -0
  598. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/test_tools.py +0 -0
  599. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/__init__.py +0 -0
  600. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_agent_tool.py +0 -0
  601. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_base_tool.py +0 -0
  602. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_browser_tool.py +0 -0
  603. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_build_tool.py +0 -0
  604. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_claude_edit.py +0 -0
  605. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_codex_apply_patch.py +0 -0
  606. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_edit_preview.py +0 -0
  607. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_edit_tool.py +0 -0
  608. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_glob_tool.py +0 -0
  609. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_glob_tool_sandbox_parity.py +0 -0
  610. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_hashline_v2.py +0 -0
  611. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_list_directory_tool.py +0 -0
  612. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_lsp_tool.py +0 -0
  613. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_read_file_tool.py +0 -0
  614. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_search_codebase_tool.py +0 -0
  615. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_snapshot_tool.py +0 -0
  616. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_terminal_tool.py +0 -0
  617. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_think_hard_integration.py +0 -0
  618. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_think_hard_streaming.py +0 -0
  619. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_think_hard_streaming_content.py +0 -0
  620. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_think_hard_streaming_errors.py +0 -0
  621. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_think_hard_streaming_updates.py +0 -0
  622. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_web_fetch_answering.py +0 -0
  623. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_web_fetch_pipeline.py +0 -0
  624. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_web_fetch_tool.py +0 -0
  625. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_web_search_tool.py +0 -0
  626. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/agent/tool_backend/test_workflow_tool.py +0 -0
  627. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/auth/__init__.py +0 -0
  628. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/auth/test_chatgpt_oauth.py +0 -0
  629. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/auth/test_tokens.py +0 -0
  630. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_browser.py +0 -0
  631. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_corpus.py +0 -0
  632. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_protocols.py +0 -0
  633. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_providers.py +0 -0
  634. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_recipes.py +0 -0
  635. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_report.py +0 -0
  636. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_runner.py +0 -0
  637. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_scoring.py +0 -0
  638. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_edit_benchmark_workspace.py +0 -0
  639. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/benchmarks/test_live_edit_benchmark_providers.py +0 -0
  640. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/__init__.py +0 -0
  641. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/_app_test_utils.py +0 -0
  642. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app.py +0 -0
  643. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_agent_wiring.py +0 -0
  644. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_bootstrap_settings.py +0 -0
  645. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_changes_inspector.py +0 -0
  646. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_compaction_restore.py +0 -0
  647. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_composer_commands.py +0 -0
  648. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_composer_input.py +0 -0
  649. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_conversation_rendering.py +0 -0
  650. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_diagnostics.py +0 -0
  651. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_focus_behavior.py +0 -0
  652. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_goal_command.py +0 -0
  653. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_image_vision_warning.py +0 -0
  654. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_lsp_settings_status.py +0 -0
  655. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_mention_dropdown.py +0 -0
  656. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_misc_commands.py +0 -0
  657. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_model_effort_commands.py +0 -0
  658. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_model_switch_vision.py +0 -0
  659. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_modes_planning.py +0 -0
  660. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_navigation_commands.py +0 -0
  661. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_permission_prompts.py +0 -0
  662. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_persistence_history.py +0 -0
  663. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_plan_lifecycle.py +0 -0
  664. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_planning_questions.py +0 -0
  665. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_planning_restore.py +0 -0
  666. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_entries.py +0 -0
  667. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_errors.py +0 -0
  668. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_scroll.py +0 -0
  669. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_selection.py +0 -0
  670. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_status.py +0 -0
  671. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_terminal_logs.py +0 -0
  672. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_rendering_tools.py +0 -0
  673. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_session_diff_async.py +0 -0
  674. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_skill_commands.py +0 -0
  675. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_slash_dropdown.py +0 -0
  676. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_status_modes.py +0 -0
  677. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_sub_agents_workflows.py +0 -0
  678. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_app_tmux_shortcuts.py +0 -0
  679. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_ask_goal.py +0 -0
  680. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_cli_config.py +0 -0
  681. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_clipboard_image.py +0 -0
  682. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_connection.py +0 -0
  683. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_custom_agents_cli.py +0 -0
  684. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_diagnostics.py +0 -0
  685. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_file_index.py +0 -0
  686. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_main.py +0 -0
  687. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_mcp_cli.py +0 -0
  688. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_mcp_settings_formatting.py +0 -0
  689. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_mentions.py +0 -0
  690. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_model_connection.py +0 -0
  691. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_plan_artifacts.py +0 -0
  692. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_provider_registry.py +0 -0
  693. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_session_diff.py +0 -0
  694. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_session_store.py +0 -0
  695. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_settings.py +0 -0
  696. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_skills.py +0 -0
  697. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_sub_agent_stream_accumulation.py +0 -0
  698. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_themes.py +0 -0
  699. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_transcript_streaming_render.py +0 -0
  700. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_tui_stylesheet.py +0 -0
  701. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/cli/test_updater.py +0 -0
  702. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/conftest.py +0 -0
  703. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/hooks/__init__.py +0 -0
  704. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/hooks/test_hooks.py +0 -0
  705. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/mcp/test_config_state_tools.py +0 -0
  706. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/_fake_server.py +0 -0
  707. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/conftest.py +0 -0
  708. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_client.py +0 -0
  709. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_detector.py +0 -0
  710. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_diagnostics.py +0 -0
  711. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_edits.py +0 -0
  712. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_integration.py +0 -0
  713. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_lsp_edit_tool_integration.py +0 -0
  714. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_manager.py +0 -0
  715. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_project_config.py +0 -0
  716. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_registry.py +0 -0
  717. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/lsp/test_trust.py +0 -0
  718. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/test_snapshots.py +0 -0
  719. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/services/test_workspace_scan.py +0 -0
  720. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/test_agent_config_serialization.py +0 -0
  721. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/test_mcp_permissions.py +0 -0
  722. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/tools/__init__.py +0 -0
  723. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/tools/test_definitions.py +0 -0
  724. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/utils/__init__.py +0 -0
  725. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/utils/test_images.py +0 -0
  726. {kolega_code-0.18.0 → kolega_code-0.19.0}/tests/utils/test_images_ascii.py +0 -0
@@ -6,6 +6,38 @@ This project uses GitHub Releases for detailed generated release notes. This fil
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.19.0 - 2026-07-16
10
+
11
+ ### Added
12
+
13
+ - Added private, project-scoped memory outside repositories, with bounded
14
+ Markdown storage, model tools, startup context, linked-worktree sharing,
15
+ `/memory` commands, settings controls, and a TUI browser and editor.
16
+
17
+ ### Changed
18
+
19
+ - Pinned the MCP SDK to stable `1.28.1` and stopped globally enabling
20
+ prerelease dependency resolution.
21
+ - Added the stable-lock `filelock` dependency required by project memory.
22
+
23
+ ### Removed
24
+
25
+ - Stopped loading or modifying legacy repository `AGENT_MEMORY.md` files.
26
+ Existing files are not automatically migrated to private project memory.
27
+
28
+ ### Fixed
29
+
30
+ - Preserved separate OpenAI and ChatGPT Responses reasoning-summary parts so
31
+ thinking summaries render as clean, separated lines.
32
+ - Fixed MCP 1.x stream, timeout, and camelCase result compatibility, and now
33
+ report nested transport failures as credential-safe tool errors instead of
34
+ opaque `TaskGroup` messages.
35
+
36
+ ### Security
37
+
38
+ - Sanitized terminal-rendered control sequences and unsafe hyperlink metadata
39
+ while preserving raw model, tool, and session content internally.
40
+
9
41
  ## 0.18.0 - 2026-07-14
10
42
 
11
43
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.18.0
3
+ Version: 0.19.0
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/
@@ -229,6 +229,7 @@ Requires-Python: >=3.11
229
229
  Requires-Dist: anthropic==0.101.0
230
230
  Requires-Dist: beautifulsoup4==4.14.3
231
231
  Requires-Dist: ddgs==9.14.4
232
+ Requires-Dist: filelock==3.20.3
232
233
  Requires-Dist: firecrawl-py==4.28.2
233
234
  Requires-Dist: google-genai==2.0.1
234
235
  Requires-Dist: httpx==0.28.1
@@ -237,7 +238,7 @@ Requires-Dist: langfuse==3.14.5
237
238
  Requires-Dist: lxml-html-clean==0.4.5
238
239
  Requires-Dist: markdownify==1.2.3
239
240
  Requires-Dist: markitdown[docx,pdf,pptx,xls,xlsx]==0.1.6
240
- Requires-Dist: mcp>=1.21.2
241
+ Requires-Dist: mcp==1.28.1
241
242
  Requires-Dist: nest-asyncio==1.6.0
242
243
  Requires-Dist: openai==1.109.1
243
244
  Requires-Dist: packaging==25.0
@@ -94,6 +94,7 @@ export default defineConfig({
94
94
  { label: "Build & Plan Modes", slug: "tui/modes" },
95
95
  { label: "Chat Composer", slug: "tui/composer" },
96
96
  { label: "Slash Commands", slug: "tui/slash-commands" },
97
+ { label: "Project Memory", slug: "tui/project-memory" },
97
98
  { label: "Sessions & Resuming", slug: "tui/sessions-and-resume" },
98
99
  ],
99
100
  },
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 80.48%"><title>coverage: 80.48%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">80.48%</text><text x="865" y="150" fill-opacity=".3" textLength="430">80.48%</text></g><text x="865" y="140" textLength="430">80.48%</text></g></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 81.01%"><title>coverage: 81.01%</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">81.01%</text><text x="865" y="150" fill-opacity=".3" textLength="430">81.01%</text></g><text x="865" y="140" textLength="430">81.01%</text></g></g></svg>
@@ -79,3 +79,10 @@ Kolega Code runs against your real environment:
79
79
  Sessions, settings, permissions, and credentials are persisted locally. That local
80
80
  state is what lets Kolega Code operate on a real development workspace while preserving
81
81
  resumable sessions and project-specific controls.
82
+
83
+ Private [Project Memory](../../tui/project-memory/) is another local state
84
+ service, but it is not session history: an agent or user must explicitly curate
85
+ it, and linked Git worktrees share it through their common Git identity. Its
86
+ provider interface keeps the built-in Markdown backend separate from possible
87
+ future structured backends; switching providers never migrates data
88
+ automatically.
@@ -67,7 +67,49 @@ OCR/conversion outside this tool.
67
67
 
68
68
  - `think_hard` — an extended-reasoning step that uses the
69
69
  [thinking model](../../configuration/providers-and-models/) and its token budget.
70
- - `read_memory`, `write_memory` — read and write workspace memories.
70
+ - `read_memory(path="MEMORY.md")` — read a private project-memory index or topic,
71
+ including its logical path, byte count, and bounded content. The startup copy
72
+ of `MEMORY.md` counts as already read.
73
+ - `list_memory(query=None)` — list private project-memory files with sizes and titles.
74
+ The optional `query` is a case-insensitive substring filter over paths and
75
+ content; custom agents with an explicit `allowed_tools` list must name
76
+ `list_memory` to receive it.
77
+ - `write_memory(content, path="MEMORY.md")` — create or overwrite one complete
78
+ memory file.
79
+ - `edit_memory(old_string, new_string, path="MEMORY.md")` — replace one exact,
80
+ unique occurrence in a memory file. An empty `old_string` is rejected. If the
81
+ text occurs zero times or more than once, the edit fails and the file is left
82
+ unchanged.
83
+ - `delete_memory(path)` — delete one memory file.
84
+
85
+ These are the model tools supplied by the built-in `markdown` project-memory
86
+ backend. They write to owner-private Kolega Code state, never the repository.
87
+ Before writing, the agent first inspects the already-loaded `MEMORY.md`, follows
88
+ any semantically relevant link, and otherwise makes a targeted `list_memory`
89
+ search. If the durable fact is already covered, it makes no mutation; a
90
+ different wording alone is not a reason to write. Existing topic files are read
91
+ before they are overwritten or edited.
92
+
93
+ A short, self-contained fact belongs directly in `MEMORY.md`. Detail that needs
94
+ multiple rules, caveats, rationale, or examples belongs in a flat topic file
95
+ with a concise descriptive link from `MEMORY.md`. For a new detailed memory, the
96
+ agent writes the topic first and then edits the index. To forget one, it removes
97
+ the index link first and then deletes the topic. These are recoverable ordering
98
+ conventions, not a cross-file transaction.
99
+
100
+ Each private write atomically replaces one file, but content mutation follows a
101
+ single-writer, last-write-wins model. There is no cross-file atomicity, and an
102
+ exact edit does not preserve independent concurrent changes. Paths and content
103
+ are bounded, but content is not secret-scanned or redacted. See
104
+ [Project Memory](../../tui/project-memory/) for storage identity, limits, model
105
+ exposure, and the `/memory` browser.
106
+
107
+ Memory tool registration is capability- and provider-driven. Enabled top-level
108
+ coder, general, and planning agents can read and explicitly curate memory;
109
+ private memory mutation is an intentional exception to Plan mode's ban on
110
+ repository edits. Built-in sub-agents get read-only access. Exact custom-agent
111
+ tool allowlists remain the final gate. When memory is disabled or its configured
112
+ backend is unavailable, no memory tools or context are exposed.
71
113
 
72
114
  ### Sub-agent dispatch
73
115
 
@@ -87,8 +129,9 @@ Build mode's full toolset.
87
129
 
88
130
  This separation is what keeps Plan mode safe to run against any codebase: the
89
131
  planning agent can look and run investigative commands, but it has no file-edit
90
- tools. Shell commands are further gated by the active permission mode — in `ask`
91
- they prompt before running.
132
+ tools. Explicit writes to private project memory are the one exception; they
133
+ never change repository files. Shell commands are further gated by the active
134
+ permission mode — in `ask` they prompt before running.
92
135
 
93
136
  In the Textual TUI, Build mode defaults to `ask` permission mode. Shell commands
94
137
  and file edits must be approved before they run unless you switch to `auto` or
@@ -132,9 +132,23 @@ Project override templates can use variables, conditionals, and loops over the e
132
132
  Agent prompt overrides replace the bundled base system prompt for that agent type. Kolega Code still appends dynamic runtime/project sections after your override, including:
133
133
 
134
134
  - matching prompt extensions, such as skills or gigacode guidance
135
- - workspace memories
135
+ - host-provided `workspace_memories`, labelled as host workspace context
136
+ - enabled [private project memory](../../tui/project-memory/), including its
137
+ backend policy and bounded `MEMORY.md` index
136
138
  - `AGENTS.md` or legacy `KOLEGA.md` project guidance
137
- - `AGENT_MEMORY.md`
139
+
140
+ These sections remain distinct and survive coder, planning, and sub-agent prompt
141
+ overrides. They are also different from resumable session history and the
142
+ Planning tab's transient task list. Project memory is not generated from either:
143
+ Kolega Code performs no completed-turn transcript review or automatic memory
144
+ authoring.
145
+
146
+ Only the private Markdown backend's `MEMORY.md` index is injected automatically,
147
+ up to 200 lines or 25 KiB; linked topics require `read_memory`. Memory is treated
148
+ as untrusted observations rather than instructions. Private project memory is
149
+ owner-controlled state and is not secret-scanned or redacted before injection.
150
+ Disabling project memory removes both its context and tools without deleting its
151
+ private data.
138
152
 
139
153
  `COMPACTION.md` is different: it fully replaces only the system prompt used by the conversation compaction summarizer. The user prompt containing the conversation history is still generated by Kolega Code.
140
154
 
@@ -23,6 +23,10 @@ you submit follow-ups while the agent is working, a small queued-messages panel
23
23
  appears above the composer until those prompts are sent. See
24
24
  [Chat Composer](../composer/) for everything it can do.
25
25
 
26
+ Run `/memory` to open the full-screen [Project Memory](../project-memory/)
27
+ browser/editor. It manages private durable project knowledge separately from the
28
+ conversation and the Planning tab's task list.
29
+
26
30
  ## Side-panel tabs
27
31
 
28
32
  | Tab | What it shows |
@@ -0,0 +1,188 @@
1
+ ---
2
+ title: Project Memory
3
+ description: Inspect and curate private, project-scoped agent memory in the TUI.
4
+ ---
5
+
6
+ Project memory is a small, durable knowledge bank for facts that remain useful
7
+ across tasks and sessions: build commands, architecture notes, conventions, and
8
+ recurring pitfalls. It is **enabled by default**, but nothing is written merely
9
+ because you open a project, finish a turn, compact context, save, or resume a
10
+ session. The agent writes memory only through an explicit memory tool call, and
11
+ you can inspect or change it yourself.
12
+
13
+ Run `/memory` with no arguments to open the Project Memory screen.
14
+
15
+ ## Private, project-scoped state
16
+
17
+ The built-in `markdown` backend stores a concise `MEMORY.md` index and optional
18
+ Markdown topic files under Kolega Code's private local state directory—not under
19
+ the repository. Directories and files use owner-only permissions where the
20
+ platform supports them: `0700` for directories and `0600` for files, manifests,
21
+ and lock artifacts. The screen and `/memory path` show the local location to you;
22
+ it is never included in model-facing memory output.
23
+
24
+ Kolega Code does not:
25
+
26
+ - write memory files into your repository or change Git status;
27
+ - review completed transcripts or synthesize end-of-turn summaries into memory;
28
+ - cloud-sync project memory; or
29
+ - use project memory as a scratchpad for transient progress, active plans, or
30
+ task state.
31
+
32
+ Memory content returned by tools is part of the normal private session history
33
+ sent to the selected model, just like other tool results. Keep credentials and
34
+ other secrets out of it. This is an authoring precaution, not an enforced
35
+ policy: project memory is not scanned, rejected, withheld, or redacted based on
36
+ secret-like content.
37
+
38
+ ### Which directories share a bank?
39
+
40
+ For Git projects, identity comes from the canonical Git **common directory**.
41
+ Linked worktrees therefore share one project-memory bank. Separate clones have
42
+ different common directories and do not share memory.
43
+
44
+ For non-Git projects, identity is the canonical resolved project path. Moving a
45
+ non-Git directory changes that identity. Initializing it as a Git repository also
46
+ creates a new identity, as can moving the Git identity root. Existing banks are
47
+ not moved or merged automatically.
48
+
49
+ ## The Markdown backend
50
+
51
+ Only `MEMORY.md` is added automatically to the agent's startup context. It is
52
+ limited to the first **200 lines or 25 KiB**, with a visible truncation marker.
53
+ Use it as a concise index and link to topic files; topic content is loaded on
54
+ demand with `read_memory`, and the agent can enumerate or search entries with
55
+ `list_memory`.
56
+
57
+ The model-facing file API is:
58
+
59
+ - `read_memory(path="MEMORY.md")`
60
+ - `list_memory(query=None)`
61
+ - `write_memory(content, path="MEMORY.md")`
62
+ - `edit_memory(old_string, new_string, path="MEMORY.md")`
63
+ - `delete_memory(path)`
64
+
65
+ `write_memory` creates or overwrites one complete file. `edit_memory` replaces
66
+ one exact, unique occurrence. It rejects an empty `old_string`; if the old text
67
+ occurs zero times or more than once, the operation fails without writing.
68
+
69
+ The agent follows a no-op-first retrieval policy. It inspects the already-loaded
70
+ `MEMORY.md` first and follows any semantically relevant link. If no link looks
71
+ promising, it uses a targeted `list_memory` query to find unindexed or nested
72
+ entries. When a durable fact is already covered, it does nothing—rewording the
73
+ same fact is not a reason to mutate memory. It reads an existing topic before
74
+ overwriting or editing it and updates memory only for materially new, corrected,
75
+ or stale information.
76
+
77
+ Memory uses a hybrid structure. Keep a short, self-contained fact directly in
78
+ `MEMORY.md`. Use a flat topic file plus a concise, descriptive one-line index
79
+ link when the information needs multiple rules, caveats, rationale, or examples.
80
+ Existing nested topics remain valid. Create a detailed memory topic-first and
81
+ index-second; delete one index-first and topic-second. These orderings make
82
+ interrupted operations recoverable, but they are not transactions and do not
83
+ provide automatic index maintenance.
84
+
85
+ Backend-wide safety limits are:
86
+
87
+ - normalized relative `.md` paths only;
88
+ - at most 100 Markdown files;
89
+ - at most 128 KiB per file; and
90
+ - at most 1 MiB of Markdown content per project.
91
+
92
+ Absolute paths, traversal, symlinks, reserved paths, and writes that exceed a
93
+ limit are rejected. A write uses a temporary file followed by an atomic
94
+ same-directory replacement, so an interrupted write does not leave a partial
95
+ Markdown file. This guarantee applies to one file only. Content mutation has an
96
+ explicit single-writer, last-write-wins concurrency model: overlapping writers
97
+ can overwrite one another, and the read-exact-replace-write sequence used by
98
+ `edit_memory` does not preserve independent concurrent changes. There is no
99
+ cross-file atomicity.
100
+
101
+ The private state directory is treated as owner-controlled application state,
102
+ not as a sandbox against other processes running as the same operating-system
103
+ user. Kolega Code coordinates its own processes and rejects ordinary path
104
+ escapes and symlinks, but it does not attempt to race an unrelated local process
105
+ that deliberately changes private state during a write. A process with access
106
+ to that directory can already inspect or tamper with the application's local
107
+ state.
108
+
109
+ ## Using the Project Memory screen
110
+
111
+ The screen shows whether memory is enabled, the active backend, project identity
112
+ kind, startup-context size and warnings, file count and total size, and the
113
+ private local path. Filter the entry list on the left and select an entry to see
114
+ its rendered preview, logical path, and size on the right.
115
+
116
+ Available controls depend on backend capabilities. With `markdown`, you can:
117
+
118
+ - create a topic, edit an entry, and save its complete content;
119
+ - delete an entry with confirmation;
120
+ - refresh changes made by another process (`r`);
121
+ - preview the exact bounded startup context the agent receives (**Agent view**);
122
+ - turn agent memory access on or off.
123
+
124
+ While an entry is being edited, the entry list and filter are inactive; only
125
+ Save, Cancel, and closing the screen are available. The footer buttons swap
126
+ between browse actions (New, Delete, Edit) and edit actions (Cancel, Save).
127
+
128
+ Turning memory off preserves its files but removes its context and memory tools
129
+ from the agent. The screen can still inspect an existing disabled bank after an
130
+ explicit action. Creating the first entry in a new disabled bank asks you to
131
+ confirm enablement first.
132
+
133
+ Configuration changes are unavailable or deferred while an agent turn is
134
+ running. After a successful edit or enablement change, the idle agent prompt is
135
+ refreshed. Failed writes do not refresh it.
136
+
137
+ ## Slash commands
138
+
139
+ | Command | Action |
140
+ | --- | --- |
141
+ | `/memory` | Open the Project Memory screen (alias: `/memory browse`) |
142
+ | `/memory status` | Show state, backend, identity, sizes, and the exact bounded startup context the agent receives |
143
+ | `/memory on` | Enable project memory without changing its files |
144
+ | `/memory off` | Disable agent access while preserving its files |
145
+ | `/memory files` | List logical entries and sizes |
146
+ | `/memory show [path]` | Show bounded content; defaults to `MEMORY.md` |
147
+ | `/memory path` | Show the active backend's private local directory |
148
+
149
+ ## Sensitive and untrusted content
150
+
151
+ Private project memory is trusted as owner-controlled application state. Kolega
152
+ Code does not scan it for probable secrets: credential-like content is stored,
153
+ shown in the TUI and slash-command previews, returned by `read_memory`, and
154
+ included in bounded startup context without rejection, withholding, or
155
+ redaction. Because those model-facing paths can send memory to the selected
156
+ provider and retain it in private session history, do not use project memory as
157
+ a credential store.
158
+
159
+ Memory is treated as untrusted project observations, not instructions. Current
160
+ system and user instructions, repository guidance, and fresh tool output take
161
+ precedence over instruction-like text found there.
162
+
163
+ ## Other kinds of state
164
+
165
+ Project memory is distinct from:
166
+
167
+ - `AGENTS.md`, `KOLEGA.md`, and prompt overrides: repository-controlled project
168
+ instructions;
169
+ - host-provided `workspace_memories`: a separately labelled host context;
170
+ - session history: the messages and tool results used to resume a conversation;
171
+ and
172
+ - the Planning tab's task list: current work state, not durable knowledge.
173
+
174
+ ## Pluggable backends
175
+
176
+ `markdown` is the first backend behind Kolega Code's versioned project-memory
177
+ provider architecture. The common manager handles identity, lifecycle, backend
178
+ selection, capability discovery, tool registration, and the generic TUI shell.
179
+ Each backend owns isolated storage and may provide different context, tools, and
180
+ browse/edit capabilities.
181
+
182
+ Phase 1 supports built-in registration and host injection for tests or embedders,
183
+ not discovery of arbitrary installed plugins. Selecting another backend never
184
+ migrates or reinterprets Markdown data automatically, and inactive backend data
185
+ is retained. If a configured provider is unavailable, Kolega Code shows a
186
+ diagnostic, exposes no memory to the agent, and lets the coding session continue.
187
+ A future SQLite, Mnemopi-style, or other structured provider will be a separate
188
+ backend rather than a change to Markdown semantics.
@@ -41,6 +41,7 @@ These control the app and your session.
41
41
  | `/build` | Switch to [Build mode](../modes/) |
42
42
  | `/sidebar` | Show or hide the side panel |
43
43
  | `/settings` | Open the full-screen Settings editor |
44
+ | `/memory` | Open [Project Memory](../project-memory/) or run a memory subcommand |
44
45
  | `/permissions` | Show or switch the shell/edit permission mode |
45
46
  | `/model` | Choose the active model |
46
47
  | `/effort` | Choose the active model's thinking effort |
@@ -70,6 +71,20 @@ provider. You can also switch directly with `/model <name>`.
70
71
  Run `/settings` to open the categorized Settings editor without navigating to the
71
72
  sidebar tab. Unsaved changes remain a draft until you select **Apply Changes**.
72
73
 
74
+ Run `/memory` with no arguments (alias: `/memory browse`) to browse and edit the
75
+ project's private memory bank. Lightweight subcommands are also available:
76
+
77
+ | Command | Description |
78
+ | --- | --- |
79
+ | `/memory status` | Show enabled/backend/identity state, sizes, and the exact bounded startup context the agent receives |
80
+ | `/memory on` / `/memory off` | Enable agent access or disable it without deleting data |
81
+ | `/memory files` | List entries and sizes |
82
+ | `/memory show [path]` | Show bounded content; defaults to `MEMORY.md` |
83
+ | `/memory path` | Show the private local backend directory |
84
+
85
+ See [Project Memory](../project-memory/) for project identity, limits,
86
+ concurrency, privacy, and model-exposure details.
87
+
73
88
  Run `/effort` to open a selectable list of supported effort values for the
74
89
  active model. You can also switch directly with `/effort <level>`.
75
90
 
@@ -151,4 +151,4 @@ __all__ = [
151
151
  "parse_git_status_output",
152
152
  ]
153
153
 
154
- __version__ = "0.18.0"
154
+ __version__ = "0.19.0"
@@ -48,4 +48,4 @@ __all__ = [
48
48
  "ToolExtension",
49
49
  ]
50
50
 
51
- __version__ = "0.18.0"
51
+ __version__ = "0.19.0"
@@ -53,7 +53,7 @@ from kolega_code.permissions import (
53
53
  from .prompt_provider import PromptProvider, AgentMode, AgentType, PromptContext, PromptExtension
54
54
  from .prompt_overrides import ProjectPromptOverrides, format_prompt_override_error, render_prompt_override_source
55
55
  from kolega_code.services.base import TerminalManager, BrowserManager
56
- from kolega_code.services.file_system import FileSystem
56
+ from kolega_code.services.file_system import FileSystem, LocalFileSystem
57
57
  from .tools import ToolCollection # noqa: F401 - kept for tests and downstream monkeypatch compatibility
58
58
  from kolega_code.tools import ToolError
59
59
  from .utils.commands import CommandProcessor
@@ -67,7 +67,6 @@ if TYPE_CHECKING:
67
67
  logger = logging.getLogger(__name__)
68
68
 
69
69
  PROJECT_GUIDANCE_FILES = ("AGENTS.md", "KOLEGA.md")
70
- AGENT_MEMORY_FILE = "AGENT_MEMORY.md"
71
70
 
72
71
  # System prompt for `prompt`/`agent` lifecycle hooks: the model's only job is a
73
72
  # yes/no decision returned as a compact JSON object.
@@ -149,6 +148,7 @@ class BaseAgent(LogMixin):
149
148
  context: Optional[AgentContext] = None,
150
149
  max_iterations: Optional[int] = None,
151
150
  custom_agent_catalog: Optional[Any] = None,
151
+ memory_manager: Optional[Any] = None,
152
152
  ) -> None:
153
153
  """
154
154
  Initialize a new BaseAgent instance.
@@ -205,6 +205,7 @@ class BaseAgent(LogMixin):
205
205
  filesystem=filesystem or defaults.filesystem,
206
206
  terminal_manager=terminal_manager or defaults.terminal_manager,
207
207
  browser_manager=browser_manager or defaults.browser_manager,
208
+ memory_manager=memory_manager,
208
209
  )
209
210
 
210
211
  context = AgentContext(
@@ -226,8 +227,11 @@ class BaseAgent(LogMixin):
226
227
  permission_mode=normalize_permission_mode(permission_mode, default=PermissionMode.AUTO),
227
228
  permission_callback=permission_callback or auto_allow_permission_callback,
228
229
  )
229
- elif prompt_provider is not None:
230
- context.prompt_provider = prompt_provider
230
+ else:
231
+ if memory_manager is not None:
232
+ context.services.memory_manager = memory_manager
233
+ if prompt_provider is not None:
234
+ context.prompt_provider = prompt_provider
231
235
  if permission_mode is not None:
232
236
  context.permission_mode = normalize_permission_mode(permission_mode, default=context.permission_mode)
233
237
  if permission_callback is not None:
@@ -277,6 +281,20 @@ class BaseAgent(LogMixin):
277
281
  self.sub_agent_recorder = context.telemetry.sub_agent_recorder
278
282
  self.session_recorder = None if sub_agent else session_recorder
279
283
  self.custom_agent_catalog = custom_agent_catalog
284
+ self.memory_manager = context.services.memory_manager
285
+ self._owns_memory_manager = False
286
+ if self.memory_manager is not None and sub_agent:
287
+ from kolega_code.memory import MemoryAccessScope
288
+
289
+ self.memory_manager = self.memory_manager.with_scope(MemoryAccessScope.SUBAGENT)
290
+ if self.memory_manager is None and not sub_agent and isinstance(self.filesystem, LocalFileSystem):
291
+ # Keep non-local/sandbox hosts unchanged unless they inject a manager.
292
+ from kolega_code.cli.session_store import default_state_dir
293
+ from kolega_code.memory import ProjectMemoryManager
294
+
295
+ self.memory_manager = ProjectMemoryManager(self.project_path, default_state_dir())
296
+ self.context.services.memory_manager = self.memory_manager
297
+ self._owns_memory_manager = True
280
298
 
281
299
  # gigacode (workflow orchestration) opt-in. Off by default; the host toggles
282
300
  # it via apply_gigacode(). The run_workflow tool gate reads this live, so
@@ -547,15 +565,6 @@ class BaseAgent(LogMixin):
547
565
  return guidance_file, ""
548
566
  return "", ""
549
567
 
550
- def _load_agent_memory(self) -> tuple[str, str]:
551
- """Return agent memory content when AGENT_MEMORY.md exists."""
552
- if not self.filesystem.exists(AGENT_MEMORY_FILE):
553
- return "", ""
554
- try:
555
- return AGENT_MEMORY_FILE, self.filesystem.read_text(AGENT_MEMORY_FILE)
556
- except Exception:
557
- return AGENT_MEMORY_FILE, ""
558
-
559
568
  def build_prompt_context(self) -> PromptContext:
560
569
  """Build PromptContext from agent state."""
561
570
  import platform
@@ -564,7 +573,13 @@ class BaseAgent(LogMixin):
564
573
  is_git_repo = self.filesystem.exists(".git") and self.filesystem.is_dir(".git")
565
574
 
566
575
  project_guidance_file, project_guidance = self._load_project_guidance()
567
- agent_memory_file, agent_memory = self._load_agent_memory()
576
+ private_memory = ""
577
+ if self.memory_manager is not None:
578
+ try:
579
+ private_memory = self.memory_manager.prompt_context().text
580
+ except Exception:
581
+ # Disabled/unavailable memory is intentionally invisible to the model.
582
+ private_memory = ""
568
583
 
569
584
  return PromptContext(
570
585
  system_name=os.getenv("KOLEGA_CODE_SYSTEM_NAME", "Kolega Code"),
@@ -576,12 +591,11 @@ class BaseAgent(LogMixin):
576
591
  available_ports=self.available_ports,
577
592
  project_guidance=project_guidance,
578
593
  project_guidance_file=project_guidance_file,
579
- agent_memory=agent_memory,
580
- agent_memory_file=agent_memory_file,
581
594
  kolega_md=project_guidance,
582
595
  workspace_id=self.workspace_id,
583
596
  workspace_environment_variables=self.workspace_env_var_descriptions,
584
597
  memories=self.workspace_memories,
598
+ private_memory=private_memory,
585
599
  )
586
600
 
587
601
  def _prompt_override_error_message(self, path: str, detail: object) -> str:
@@ -1020,9 +1034,6 @@ class BaseAgent(LogMixin):
1020
1034
  if isinstance(output, list):
1021
1035
  chat_message_content = "\n\n".join(item.to_markdown() for item in output)
1022
1036
 
1023
- if tool_name == "write_memory":
1024
- self._initialize_system_prompt()
1025
-
1026
1037
  # Send tool_result message for successful execution
1027
1038
  await self.send_chat_message(
1028
1039
  message_type="tool_result",
@@ -1561,6 +1572,13 @@ class BaseAgent(LogMixin):
1561
1572
  return
1562
1573
  await asyncio.to_thread(recorder.finish_turn, status, error=error)
1563
1574
 
1575
+ def refresh_memory_context(self) -> None:
1576
+ """Refresh private memory and rebuild the system prompt without a full agent rebuild."""
1577
+ if self.memory_manager is None:
1578
+ return
1579
+ self.memory_manager.refresh()
1580
+ self._initialize_system_prompt()
1581
+
1564
1582
  async def _process_message_stream_impl(
1565
1583
  self, message: str, attachments: Optional[List[Dict[str, Any]]] = None
1566
1584
  ) -> AsyncGenerator[Dict[str, Any], None]:
@@ -1570,6 +1588,13 @@ class BaseAgent(LogMixin):
1570
1588
  Yields dicts of the form
1571
1589
  ``{"type": "response"|"thinking", "content": str, "complete": bool, "uuid": str}``.
1572
1590
  """
1591
+ if not self.sub_agent:
1592
+ try:
1593
+ self.refresh_memory_context()
1594
+ except Exception:
1595
+ # Keep the last valid prompt if memory or prompt refresh fails.
1596
+ pass
1597
+
1573
1598
  unsupported_attachment_message = self._unsupported_attachment_message(attachments)
1574
1599
  if unsupported_attachment_message:
1575
1600
  yield {
@@ -1834,9 +1859,13 @@ class BaseAgent(LogMixin):
1834
1859
  Clean up all agent resources.
1835
1860
  This should be called when the agent is being destroyed.
1836
1861
  """
1837
- # Clean up tool collection resources
1838
- if self.tool_collection is not None:
1839
- await self.tool_collection.cleanup()
1862
+ try:
1863
+ if self.tool_collection is not None:
1864
+ await self.tool_collection.cleanup()
1865
+ finally:
1866
+ if self._owns_memory_manager and self.memory_manager is not None:
1867
+ self.memory_manager.close()
1868
+ self.memory_manager = None
1840
1869
 
1841
1870
  # Log cleanup
1842
1871
  await self.log_info("Agent cleanup completed", sender=self.agent_name)
@@ -7,7 +7,7 @@ from kolega_code.events import AgentConnectionManager
7
7
  from kolega_code.llm.models import Message, TextBlock
8
8
  from kolega_code.llm.specs import supports_vision as model_supports_vision
9
9
  from .prompt_provider import AgentMode, AgentType, PromptExtension, PromptProvider
10
- from .tools import ToolCollection
10
+ from .tools import ToolCollection, ToolCollectionConfig
11
11
 
12
12
 
13
13
  class BrowserAgent(BaseAgent):
@@ -61,6 +61,7 @@ class BrowserAgent(BaseAgent):
61
61
  sub_agent_recorder: Optional[Any] = None,
62
62
  hook_dispatcher: Optional[Any] = None,
63
63
  max_iterations: Optional[int] = None,
64
+ memory_manager: Optional[Any] = None,
64
65
  ) -> None:
65
66
  """
66
67
  Initialize a new BrowserAgent instance.
@@ -116,6 +117,7 @@ class BrowserAgent(BaseAgent):
116
117
  sub_agent_recorder=sub_agent_recorder,
117
118
  hook_dispatcher=hook_dispatcher,
118
119
  max_iterations=max_iterations,
120
+ memory_manager=memory_manager,
119
121
  )
120
122
 
121
123
  self.tool_collection = ToolCollection(
@@ -125,7 +127,7 @@ class BrowserAgent(BaseAgent):
125
127
  self.connection_manager,
126
128
  self.config,
127
129
  caller=self,
128
- browser_only=True,
130
+ tool_config=ToolCollectionConfig(browser_only=True, include_memory_tools=True),
129
131
  filesystem=self.filesystem,
130
132
  terminal_manager=self.terminal_manager,
131
133
  browser_manager=self.browser_manager,
@@ -52,6 +52,7 @@ class CoderAgent(BaseAgent, LogMixin):
52
52
  hook_dispatcher: Optional[Any] = None,
53
53
  max_iterations: Optional[int] = None,
54
54
  custom_agent_catalog: Optional[Any] = None,
55
+ memory_manager: Optional[Any] = None,
55
56
  ) -> None:
56
57
  """
57
58
  Initialize a new CoderAgent instance.
@@ -114,12 +115,11 @@ class CoderAgent(BaseAgent, LogMixin):
114
115
  hook_dispatcher=hook_dispatcher,
115
116
  max_iterations=max_iterations,
116
117
  custom_agent_catalog=custom_agent_catalog,
118
+ memory_manager=memory_manager,
117
119
  )
118
120
 
119
121
  # Configure tool collection with custom coder agent tools
120
122
  tool_exclusions = [
121
- "read_memory",
122
- "write_memory",
123
123
  "execute_terminal_command",
124
124
  "get_tool_list",
125
125
  "log_error",
@@ -137,6 +137,8 @@ class CoderAgent(BaseAgent, LogMixin):
137
137
  tool_config = ToolCollectionConfig(
138
138
  custom_tool_groups=["coder_agent_tools"],
139
139
  tool_exclusions=tool_exclusions,
140
+ include_memory_tools=True,
141
+ memory_write_access=True,
140
142
  )
141
143
 
142
144
  self.tool_collection = ToolCollection(