kolega-code 0.26.6__tar.gz → 0.26.7__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 (361) hide show
  1. {kolega_code-0.26.6 → kolega_code-0.26.7}/CHANGELOG.md +11 -0
  2. {kolega_code-0.26.6 → kolega_code-0.26.7}/PKG-INFO +1 -1
  3. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/__init__.py +1 -1
  4. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/__init__.py +1 -1
  5. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/memory_screen.py +25 -9
  6. kolega_code-0.26.7/kolega_code/llm/providers/_token_encoding.py +44 -0
  7. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/anthropic.py +4 -2
  8. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/openai.py +6 -2
  9. {kolega_code-0.26.6 → kolega_code-0.26.7}/pyproject.toml +1 -1
  10. {kolega_code-0.26.6 → kolega_code-0.26.7}/.gitignore +0 -0
  11. {kolega_code-0.26.6 → kolega_code-0.26.7}/CONTRIBUTING.md +0 -0
  12. {kolega_code-0.26.6 → kolega_code-0.26.7}/LICENSE +0 -0
  13. {kolega_code-0.26.6 → kolega_code-0.26.7}/MIGRATION.md +0 -0
  14. {kolega_code-0.26.6 → kolega_code-0.26.7}/README.md +0 -0
  15. {kolega_code-0.26.6 → kolega_code-0.26.7}/RELEASING.md +0 -0
  16. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/LICENSE +0 -0
  17. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/manifest.json +0 -0
  18. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/deep-research/SKILL.md +0 -0
  19. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/deep-research/references/evidence-and-reporting.md +0 -0
  20. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/deep-research/references/gigacode-workflow.md +0 -0
  21. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/deep-research/scripts/deep-research.workflow +0 -0
  22. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/deep-research/scripts/materialize_report.py +0 -0
  23. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/LICENSE +0 -0
  24. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/SKILL.md +0 -0
  25. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/references/examples.md +0 -0
  26. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/references/limitations.md +0 -0
  27. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/references/operations.md +0 -0
  28. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/references/quality.md +0 -0
  29. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/requirements.txt +0 -0
  30. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/scripts/docx_tool.py +0 -0
  31. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/docx/scripts/smoke_test.py +0 -0
  32. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/humanizer/LICENSE +0 -0
  33. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/humanizer/SKILL.md +0 -0
  34. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/LICENSE +0 -0
  35. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/SKILL.md +0 -0
  36. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/references/examples.md +0 -0
  37. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/references/limitations.md +0 -0
  38. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/references/ocr.md +0 -0
  39. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/references/operations.md +0 -0
  40. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/references/quality.md +0 -0
  41. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/references/redaction.md +0 -0
  42. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-paddle.txt +0 -0
  43. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/requirements-ocr-surya.txt +0 -0
  44. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/requirements.txt +0 -0
  45. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/scripts/pdf_tool.py +0 -0
  46. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pdf/scripts/smoke_test.py +0 -0
  47. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/LICENSE +0 -0
  48. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/SKILL.md +0 -0
  49. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/references/examples.md +0 -0
  50. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/references/limitations.md +0 -0
  51. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/references/operations.md +0 -0
  52. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/requirements.txt +0 -0
  53. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/scripts/pptx_tool.py +0 -0
  54. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/pptx/scripts/smoke_test.py +0 -0
  55. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/review/SKILL.md +0 -0
  56. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/review/references/github-publishing.md +0 -0
  57. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/skill-authoring/SKILL.md +0 -0
  58. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/skill-authoring/references/review-checklist.md +0 -0
  59. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/LICENSE +0 -0
  60. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/SKILL.md +0 -0
  61. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/references/examples.md +0 -0
  62. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/references/limitations.md +0 -0
  63. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/references/operations.md +0 -0
  64. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/references/quality.md +0 -0
  65. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/requirements.txt +0 -0
  66. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/scripts/smoke_test.py +0 -0
  67. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/_bundled_skills/skills/xlsx/scripts/xlsx_tool.py +0 -0
  68. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/baseagent.py +0 -0
  69. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/browseragent.py +0 -0
  70. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/coder.py +0 -0
  71. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/common.py +0 -0
  72. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/compression.py +0 -0
  73. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/context.py +0 -0
  74. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/conversation.py +0 -0
  75. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/custom_agents.py +0 -0
  76. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/edit_protocols.py +0 -0
  77. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/errors.py +0 -0
  78. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/__init__.py +0 -0
  79. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/bridge.py +0 -0
  80. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/bundle-requirements.in +0 -0
  81. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/bundle-requirements.txt +0 -0
  82. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/env.py +0 -0
  83. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/js_kernel.py +0 -0
  84. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/kernel.py +0 -0
  85. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/prelude.js +0 -0
  86. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/prelude.py +0 -0
  87. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/protocol.py +0 -0
  88. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/py_kernel.py +0 -0
  89. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/runner.js +0 -0
  90. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/eval/runner.py +0 -0
  91. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/generalagent.py +0 -0
  92. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/goal.py +0 -0
  93. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/investigationagent.py +0 -0
  94. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/model_routing.py +0 -0
  95. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/__init__.py +0 -0
  96. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/accounting.py +0 -0
  97. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/budget.py +0 -0
  98. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/context.py +0 -0
  99. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/errors.py +0 -0
  100. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/executor.py +0 -0
  101. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/guide.py +0 -0
  102. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/journal.py +0 -0
  103. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/runtime.py +0 -0
  104. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/orchestration/types.py +0 -0
  105. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/planningagent.py +0 -0
  106. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_dump.py +0 -0
  107. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_overrides.py +0 -0
  108. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_provider.py +0 -0
  109. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.system.md +0 -0
  110. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/auxiliary/compression/summary.user.md.j2 +0 -0
  111. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/auxiliary/terminal/output_summary.system.md +0 -0
  112. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/auxiliary/terminal/safety.system.md +0 -0
  113. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/auxiliary/tools/think_hard.system.md +0 -0
  114. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/build_questions.md +0 -0
  115. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/current_plan_artifact.md.j2 +0 -0
  116. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/planning_questions.md +0 -0
  117. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/scratchpad.md.j2 +0 -0
  118. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list.md +0 -0
  119. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/shared_task_list_readonly.md +0 -0
  120. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/cli/worktree_control.md.j2 +0 -0
  121. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/extensions/skills/catalog.md.j2 +0 -0
  122. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/agents/browser.md.j2 +0 -0
  123. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/agents/coder_ask.md.j2 +0 -0
  124. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/agents/coder_cli.md.j2 +0 -0
  125. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/agents/general.md.j2 +0 -0
  126. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/agents/investigation.md.j2 +0 -0
  127. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/agents/planning.md.j2 +0 -0
  128. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/agents_md_instructions.md +0 -0
  129. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/context_updates.md +0 -0
  130. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/environment_variables/workspace_env_vars.md +0 -0
  131. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/frontend_guidance.md +0 -0
  132. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/starter_templates/expo.md +0 -0
  133. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/starter_templates/html_website.md +0 -0
  134. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/starter_templates/mern_stack.md +0 -0
  135. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/system/includes/starter_templates/react_vite_shadcdn.md +0 -0
  136. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/user_tasks/cli/implement_plan.md.j2 +0 -0
  137. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompt_templates/user_tasks/cli/init_agents.md.j2 +0 -0
  138. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/prompts.py +0 -0
  139. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/agent_tool.py +0 -0
  140. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/base_tool.py +0 -0
  141. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/browser_tool.py +0 -0
  142. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/build_tool.py +0 -0
  143. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/codex_patch.py +0 -0
  144. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/edit_preview.py +0 -0
  145. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/edit_tool.py +0 -0
  146. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/eval_tool.py +0 -0
  147. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/glob_tool.py +0 -0
  148. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/hashline_v2.py +0 -0
  149. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/list_directory_tool.py +0 -0
  150. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/lsp_tool.py +0 -0
  151. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/memory_tool.py +0 -0
  152. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/read_file_tool.py +0 -0
  153. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/read_image_tool.py +0 -0
  154. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/__init__.py +0 -0
  155. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/base.py +0 -0
  156. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/duckduckgo.py +0 -0
  157. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/errors.py +0 -0
  158. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/firecrawl.py +0 -0
  159. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/models.py +0 -0
  160. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/searxng.py +0 -0
  161. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_backends/tavily.py +0 -0
  162. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/search_codebase_tool.py +0 -0
  163. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/snapshot_tool.py +0 -0
  164. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/streaming_tool.py +0 -0
  165. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/terminal_tool.py +0 -0
  166. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/think_hard_tool.py +0 -0
  167. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch/__init__.py +0 -0
  168. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch/answering.py +0 -0
  169. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch/documents.py +0 -0
  170. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch/extractors.py +0 -0
  171. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch/pipeline.py +0 -0
  172. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch/retrieval.py +0 -0
  173. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_fetch_tool.py +0 -0
  174. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/web_search_tool.py +0 -0
  175. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tool_backend/workflow_tool.py +0 -0
  176. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/tools.py +0 -0
  177. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/utils/commands.py +0 -0
  178. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/agent/volatile_context.py +0 -0
  179. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/auth/__init__.py +0 -0
  180. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/auth/_jwt.py +0 -0
  181. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/auth/chatgpt_oauth.py +0 -0
  182. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/auth/constants.py +0 -0
  183. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/auth/tokens.py +0 -0
  184. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/__init__.py +0 -0
  185. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/framing.py +0 -0
  186. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/installer.py +0 -0
  187. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/manager.py +0 -0
  188. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/multiplex.py +0 -0
  189. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/native_host.py +0 -0
  190. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/protocol.py +0 -0
  191. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/registry.py +0 -0
  192. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/browser_extension/runtime.py +0 -0
  193. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/__init__.py +0 -0
  194. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/app.py +0 -0
  195. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/browser_backend.py +0 -0
  196. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/clipboard_image.py +0 -0
  197. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/config.py +0 -0
  198. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/connection.py +0 -0
  199. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/cron.py +0 -0
  200. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/diagnostics.py +0 -0
  201. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/file_index.py +0 -0
  202. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/goal.py +0 -0
  203. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/loop.py +0 -0
  204. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/main.py +0 -0
  205. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/mentions.py +0 -0
  206. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/messages.py +0 -0
  207. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/model_catalog.py +0 -0
  208. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/model_connection.py +0 -0
  209. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/plan_artifacts.py +0 -0
  210. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/provider_registry.py +0 -0
  211. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/session_event_store.py +0 -0
  212. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/session_journal.py +0 -0
  213. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/session_store.py +0 -0
  214. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/settings.py +0 -0
  215. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/skills.py +0 -0
  216. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/slash_commands.py +0 -0
  217. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/theme.py +0 -0
  218. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/__init__.py +0 -0
  219. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/agent_runtime.py +0 -0
  220. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/app_base.py +0 -0
  221. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/changes_screen.py +0 -0
  222. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/command_handlers.py +0 -0
  223. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/constants.py +0 -0
  224. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/custom_model.py +0 -0
  225. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/loop_runtime.py +0 -0
  226. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/onboarding_screen.py +0 -0
  227. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/prompt_flows.py +0 -0
  228. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/session_diff.py +0 -0
  229. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/settings_panel.py +0 -0
  230. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/settings_screen.py +0 -0
  231. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/state.py +0 -0
  232. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/status_dashboard.py +0 -0
  233. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/styles.tcss +0 -0
  234. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/sub_agent_screen.py +0 -0
  235. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/terminal_display.py +0 -0
  236. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/transcript.py +0 -0
  237. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/tui/widgets.py +0 -0
  238. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/cli/updater.py +0 -0
  239. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/config.py +0 -0
  240. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/events.py +0 -0
  241. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/git_env.py +0 -0
  242. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/__init__.py +0 -0
  243. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/backends.py +0 -0
  244. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/config.py +0 -0
  245. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/dispatcher.py +0 -0
  246. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/events.py +0 -0
  247. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/matcher.py +0 -0
  248. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/hooks/outcome.py +0 -0
  249. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/client.py +0 -0
  250. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/exceptions.py +0 -0
  251. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/instrumented_client.py +0 -0
  252. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/models.py +0 -0
  253. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/__init__.py +0 -0
  254. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/base.py +0 -0
  255. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/chatgpt_oauth.py +0 -0
  256. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/deepseek_responses.py +0 -0
  257. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/google.py +0 -0
  258. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/models.py +0 -0
  259. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/openai_responses.py +0 -0
  260. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/providers/responses_common.py +0 -0
  261. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/ratelimit.py +0 -0
  262. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/__init__.py +0 -0
  263. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/accessors.py +0 -0
  264. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/__init__.py +0 -0
  265. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/anthropic.py +0 -0
  266. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/dashscope.py +0 -0
  267. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/deepseek.py +0 -0
  268. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/fireworks.py +0 -0
  269. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/google.py +0 -0
  270. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/kimi_coding.py +0 -0
  271. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/moonshot.py +0 -0
  272. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/ollama_cloud.py +0 -0
  273. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/openai.py +0 -0
  274. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/openai_chatgpt.py +0 -0
  275. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/openrouter.py +0 -0
  276. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/together.py +0 -0
  277. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/xai.py +0 -0
  278. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/catalog/zai.py +0 -0
  279. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/openrouter_catalog.py +0 -0
  280. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/thinking.py +0 -0
  281. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/specs/types.py +0 -0
  282. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/timeouts.py +0 -0
  283. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/llm/tool_execution_ids.py +0 -0
  284. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/local_state.py +0 -0
  285. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/__init__.py +0 -0
  286. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/config.py +0 -0
  287. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/oauth.py +0 -0
  288. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/service.py +0 -0
  289. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/state.py +0 -0
  290. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/tools.py +0 -0
  291. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/mcp/transport.py +0 -0
  292. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/__init__.py +0 -0
  293. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/identity.py +0 -0
  294. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/manager.py +0 -0
  295. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/manifest.py +0 -0
  296. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/markdown.py +0 -0
  297. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/models.py +0 -0
  298. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/protocol.py +0 -0
  299. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/memory/registry.py +0 -0
  300. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/models/__init__.py +0 -0
  301. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/models/sandbox_terminal_state.py +0 -0
  302. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/permissions.py +0 -0
  303. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/runtime.py +0 -0
  304. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/README.md +0 -0
  305. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/__init__.py +0 -0
  306. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/async_filesystem.py +0 -0
  307. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/base.py +0 -0
  308. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/browser.py +0 -0
  309. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/event_loop.py +0 -0
  310. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/filesystem.py +0 -0
  311. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/local.py +0 -0
  312. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/serializer.py +0 -0
  313. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/terminal.py +0 -0
  314. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/sandbox/utils.py +0 -0
  315. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/scratchpad.py +0 -0
  316. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/security/__init__.py +0 -0
  317. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/security/secrets.py +0 -0
  318. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/base.py +0 -0
  319. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/browser.py +0 -0
  320. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/file_system.py +0 -0
  321. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/html.py +0 -0
  322. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/__init__.py +0 -0
  323. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/client.py +0 -0
  324. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/config.py +0 -0
  325. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/detector.py +0 -0
  326. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/diagnostics.py +0 -0
  327. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/edits.py +0 -0
  328. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/manager.py +0 -0
  329. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/registry.py +0 -0
  330. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/lsp/registry.yaml +0 -0
  331. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/snapshots.py +0 -0
  332. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/terminal.py +0 -0
  333. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/terminal_buffer.py +0 -0
  334. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/services/workspace_scan.py +0 -0
  335. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/__init__.py +0 -0
  336. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/control.py +0 -0
  337. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/inmemory.py +0 -0
  338. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/projection.py +0 -0
  339. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/recording.py +0 -0
  340. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/runtime.py +0 -0
  341. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/session/store.py +0 -0
  342. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/testing/__init__.py +0 -0
  343. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/testing/store_conformance.py +0 -0
  344. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/tools/__init__.py +0 -0
  345. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/tools/core.py +0 -0
  346. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/tools/definitions.py +0 -0
  347. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/tools/registry.py +0 -0
  348. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/utils/__init__.py +0 -0
  349. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/utils/images.py +0 -0
  350. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/__init__.py +0 -0
  351. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/assets/fold.js +0 -0
  352. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/assets/player.css +0 -0
  353. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/assets/player.html +0 -0
  354. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/assets/player.js +0 -0
  355. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/bundle.py +0 -0
  356. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/hosting.py +0 -0
  357. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/redaction.py +0 -0
  358. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/server.py +0 -0
  359. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/singlefile.py +0 -0
  360. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/web/theme_css.py +0 -0
  361. {kolega_code-0.26.6 → kolega_code-0.26.7}/kolega_code/worktrees.py +0 -0
@@ -6,6 +6,17 @@ This project uses GitHub Releases for detailed generated release notes. This fil
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.26.7 - 2026-08-03
10
+
11
+ ### Fixed
12
+
13
+ - Local token counting no longer crashes on content that contains a tokenizer
14
+ special-token literal (for example `<|endoftext|>` or `<|im_start|>`, common in
15
+ ML/tokenizer files and chat-format prompts); those strings are now counted as
16
+ ordinary text instead of aborting the run.
17
+ - The Private Project Memory screen no longer crashes with an internal
18
+ "NoMatches" error when it is closed while still loading.
19
+
9
20
  ## 0.26.6 - 2026-08-03
10
21
 
11
22
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kolega-code
3
- Version: 0.26.6
3
+ Version: 0.26.7
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/
@@ -151,4 +151,4 @@ __all__ = [
151
151
  "parse_git_status_output",
152
152
  ]
153
153
 
154
- __version__ = "0.26.6"
154
+ __version__ = "0.26.7"
@@ -51,4 +51,4 @@ __all__ = [
51
51
  "ToolExtension",
52
52
  ]
53
53
 
54
- __version__ = "0.26.6"
54
+ __version__ = "0.26.7"
@@ -115,6 +115,22 @@ class MemoryScreen(ModalScreen[None]):
115
115
  if self._owner._memory_screen is self:
116
116
  self._owner._memory_screen = None
117
117
 
118
+ def _work_current(self, generation: int) -> bool:
119
+ """Whether a worker may still render — not superseded, and still attached.
120
+
121
+ A worker finishes its threaded load asynchronously, by which point the
122
+ screen may have been replaced by a newer refresh or torn down. Rendering
123
+ then calls ``query_one`` on detached widgets and raises ``NoMatches``
124
+ *inside the worker* (surfacing as ``WorkerFailed``). ``_work_generation``
125
+ covers supersede; ``is_attached`` additionally closes the teardown race
126
+ where child widgets detach before ``on_unmount`` bumps the generation.
127
+ (``is_mounted`` is the wrong signal here: it stays True after the screen
128
+ is popped, while ``is_attached`` flips exactly when ``query_one`` starts
129
+ raising.) The render after this check is synchronous, so ``is_attached``
130
+ cannot flip mid-render.
131
+ """
132
+ return generation == self._work_generation and self.is_attached
133
+
118
134
  # ---- loading -------------------------------------------------------------
119
135
 
120
136
  def _start_refresh(self, *, select_reference: str | None = None, from_disk: bool = False) -> None:
@@ -148,17 +164,17 @@ class MemoryScreen(ModalScreen[None]):
148
164
  allow_disabled=True,
149
165
  )
150
166
  except Exception as error:
151
- if generation == self._work_generation:
167
+ if self._work_current(generation):
152
168
  self._status = None
153
169
  self._all_entries = []
154
170
  self._entries = []
155
171
  self._render_error(str(error))
156
172
  return
157
173
  finally:
158
- if generation == self._work_generation:
174
+ if self._work_current(generation):
159
175
  self._set_busy(False)
160
176
 
161
- if generation != self._work_generation:
177
+ if not self._work_current(generation):
162
178
  return
163
179
  self._status = status
164
180
  self._all_entries = entries
@@ -189,13 +205,13 @@ class MemoryScreen(ModalScreen[None]):
189
205
  allow_disabled=True,
190
206
  )
191
207
  except Exception as error:
192
- if generation == self._work_generation:
208
+ if self._work_current(generation):
193
209
  self._render_error(str(error))
194
210
  return
195
211
  finally:
196
- if generation == self._work_generation:
212
+ if self._work_current(generation):
197
213
  self._set_busy(False)
198
- if generation != self._work_generation:
214
+ if not self._work_current(generation):
199
215
  return
200
216
  self._loaded_entry = entry
201
217
  self._render_entry(entry)
@@ -448,7 +464,7 @@ class MemoryScreen(ModalScreen[None]):
448
464
  try:
449
465
  context = await asyncio.to_thread(self._manager.prompt_context)
450
466
  except MemoryUnavailableError as error:
451
- if generation != self._work_generation:
467
+ if not self._work_current(generation):
452
468
  return
453
469
  self._set_busy(False)
454
470
  self._enter_agent_view(
@@ -458,11 +474,11 @@ class MemoryScreen(ModalScreen[None]):
458
474
  )
459
475
  return
460
476
  except Exception as error:
461
- if generation == self._work_generation:
477
+ if self._work_current(generation):
462
478
  self._set_busy(False)
463
479
  self.query_one("#memory_notice", Static).update(str(error))
464
480
  return
465
- if generation != self._work_generation:
481
+ if not self._work_current(generation):
466
482
  return
467
483
  self._set_busy(False)
468
484
  truncated = " · truncated" if context.truncated else ""
@@ -0,0 +1,44 @@
1
+ """Shared tiktoken helpers for local token *counting*.
2
+
3
+ Local token counting must never crash on content that merely contains a tiktoken
4
+ special-token literal — e.g. ``<|endoftext|>`` in a GPT-2 / tokenizer file, or
5
+ ``<|im_start|>`` in a chat-format prompt. By default ``Encoding.encode`` uses
6
+ ``disallowed_special="all"`` and raises a ``ValueError`` the moment it sees such
7
+ a string in ordinary text. That is the right default for *building a request*
8
+ (you don't want to smuggle real control tokens into a prompt), but here we only
9
+ want an approximate size for context management, so those strings should be
10
+ counted as normal text. Passing ``disallowed_special=()`` disables the check —
11
+ exactly what tiktoken's own error message recommends.
12
+ """
13
+
14
+ from typing import List
15
+
16
+ import tiktoken
17
+
18
+
19
+ class CountingEncoding:
20
+ """A tiktoken ``Encoding`` wrapper whose ``encode`` never raises on special
21
+ tokens.
22
+
23
+ It forwards to the wrapped encoding with ``disallowed_special=()`` so
24
+ special-token literals in the text are counted as ordinary text instead of
25
+ raising. Only ``encode`` is exposed because counting is the only thing this
26
+ is used for.
27
+ """
28
+
29
+ __slots__ = ("_encoding",)
30
+
31
+ def __init__(self, encoding: "tiktoken.Encoding") -> None:
32
+ self._encoding = encoding
33
+
34
+ def encode(self, text: str) -> List[int]:
35
+ return self._encoding.encode(text, disallowed_special=())
36
+
37
+
38
+ def get_counting_encoding(name: str) -> CountingEncoding:
39
+ """Return a :class:`CountingEncoding` for the named tiktoken encoding.
40
+
41
+ ``tiktoken.get_encoding`` caches the underlying BPE table in its own registry,
42
+ so repeated calls are cheap; the wrapper is a trivial object around it.
43
+ """
44
+ return CountingEncoding(tiktoken.get_encoding(name))
@@ -5,13 +5,13 @@ import threading
5
5
  from typing import Any, AsyncContextManager, Dict, List, Optional, cast
6
6
  from weakref import WeakKeyDictionary
7
7
 
8
- import tiktoken
9
8
  from anthropic import AsyncAnthropic
10
9
 
11
10
  from ..models import ContentBlock, Message, MessageChunk, MessageHistory, ToolDefinition
12
11
  from ..specs import build_thinking_request_params, get_model_specs
13
12
  from ..timeouts import streaming_timeout
14
13
  from ..tool_execution_ids import ToolExecutionIdRegistry
14
+ from ._token_encoding import get_counting_encoding
15
15
  from .base import BaseLLMProvider
16
16
  from .models import GenerationParams, TokenCount
17
17
 
@@ -241,7 +241,9 @@ class AnthropicProvider(BaseLLMProvider):
241
241
  Returns:
242
242
  TokenCount object with estimated input token count
243
243
  """
244
- encoding = tiktoken.get_encoding("p50k_base")
244
+ # CountingEncoding so special-token literals (e.g. <|endoftext|>) in the
245
+ # content are counted as text instead of raising — see _token_encoding.
246
+ encoding = get_counting_encoding("p50k_base")
245
247
  self._ensure_local_token_memos()
246
248
  tools = tools or []
247
249
 
@@ -8,7 +8,6 @@ import os
8
8
  import threading
9
9
  import uuid
10
10
 
11
- import tiktoken
12
11
  from openai import AsyncOpenAI
13
12
 
14
13
  from ..models import (
@@ -26,6 +25,7 @@ from ..models import (
26
25
  from ..specs import MODEL_SPECS, build_thinking_request_params
27
26
  from ..timeouts import streaming_timeout
28
27
  from ..tool_execution_ids import ToolExecutionIdRegistry
28
+ from ._token_encoding import get_counting_encoding
29
29
  from .base import BaseLLMProvider
30
30
  from .models import GenerationParams, TokenCount
31
31
 
@@ -35,6 +35,10 @@ from .models import GenerationParams, TokenCount
35
35
  # de-facto encoding for every OpenAI-compatible provider (DeepSeek, xAI, Fireworks,
36
36
  # ... have no native tiktoken table); the count is an estimate for context
37
37
  # management, not billing.
38
+ #
39
+ # CountingEncoding treats special-token literals (e.g. ``<|endoftext|>`` in a
40
+ # tokenizer file) as ordinary text instead of raising, so counting never crashes
41
+ # on such content — see _token_encoding for the rationale.
38
42
  _ENCODING_NAME = "cl100k_base"
39
43
  _encoding = None
40
44
 
@@ -46,7 +50,7 @@ OPENROUTER_PROVIDER = "openrouter"
46
50
  def _get_encoding():
47
51
  global _encoding
48
52
  if _encoding is None:
49
- _encoding = tiktoken.get_encoding(_ENCODING_NAME)
53
+ _encoding = get_counting_encoding(_ENCODING_NAME)
50
54
  return _encoding
51
55
 
52
56
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "kolega-code"
7
- version = "0.26.6"
7
+ version = "0.26.7"
8
8
  description = "Multi-agent coding in the terminal"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
File without changes
File without changes
File without changes
File without changes
File without changes