klaude-code 2.4.1__tar.gz → 2.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. {klaude_code-2.4.1 → klaude_code-2.4.2}/PKG-INFO +2 -2
  2. {klaude_code-2.4.1 → klaude_code-2.4.2}/pyproject.toml +2 -2
  3. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/turn.py +1 -0
  4. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/streaming.py +1 -0
  5. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/sub_agent.py +9 -1
  6. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/machine.py +38 -7
  7. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/renderer.py +1 -0
  8. {klaude_code-2.4.1 → klaude_code-2.4.2}/README.md +0 -0
  9. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/__init__.py +0 -0
  10. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/app/__init__.py +0 -0
  11. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/app/runtime.py +0 -0
  12. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/__init__.py +0 -0
  13. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/base.py +0 -0
  14. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/claude/__init__.py +0 -0
  15. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/claude/exceptions.py +0 -0
  16. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/claude/oauth.py +0 -0
  17. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/claude/token_manager.py +0 -0
  18. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/codex/__init__.py +0 -0
  19. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/codex/exceptions.py +0 -0
  20. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
  21. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/codex/oauth.py +0 -0
  22. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/auth/codex/token_manager.py +0 -0
  23. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/__init__.py +0 -0
  24. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/auth_cmd.py +0 -0
  25. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/config_cmd.py +0 -0
  26. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/cost_cmd.py +0 -0
  27. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/debug.py +0 -0
  28. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/list_model.py +0 -0
  29. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/main.py +0 -0
  30. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/self_update.py +0 -0
  31. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/cli/session_cmd.py +0 -0
  32. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/__init__.py +0 -0
  33. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/assets/__init__.py +0 -0
  34. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/assets/builtin_config.yaml +0 -0
  35. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/builtin_config.py +0 -0
  36. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/config.py +0 -0
  37. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/model_matcher.py +0 -0
  38. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/sub_agent_model_helper.py +0 -0
  39. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/config/thinking.py +0 -0
  40. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/const.py +0 -0
  41. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/__init__.py +0 -0
  42. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/agent.py +0 -0
  43. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/agent_profile.py +0 -0
  44. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/executor.py +0 -0
  45. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/manager/__init__.py +0 -0
  46. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/manager/llm_clients.py +0 -0
  47. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/manager/llm_clients_builder.py +0 -0
  48. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/manager/sub_agent_manager.py +0 -0
  49. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-claude-code.md +0 -0
  50. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md +0 -0
  51. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md +0 -0
  52. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-codex.md +0 -0
  53. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-gemini.md +0 -0
  54. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-minimal.md +0 -0
  55. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-nano-banana.md +0 -0
  56. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
  57. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-image-gen.md +0 -0
  58. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-web.md +0 -0
  59. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
  60. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/reminders.py +0 -0
  61. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/task.py +0 -0
  62. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/__init__.py +0 -0
  63. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/context.py +0 -0
  64. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/__init__.py +0 -0
  65. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/_utils.py +0 -0
  66. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
  67. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
  68. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/apply_patch_tool.py +0 -0
  69. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/diff_builder.py +0 -0
  70. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
  71. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/edit_tool.py +0 -0
  72. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/read_tool.md +0 -0
  73. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/read_tool.py +0 -0
  74. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/write_tool.md +0 -0
  75. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/file/write_tool.py +0 -0
  76. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/report_back_tool.py +0 -0
  77. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/shell/__init__.py +0 -0
  78. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/shell/bash_tool.md +0 -0
  79. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/shell/bash_tool.py +0 -0
  80. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/shell/command_safety.py +0 -0
  81. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/sub_agent_tool.py +0 -0
  82. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/todo/__init__.py +0 -0
  83. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/todo/todo_write_tool.md +0 -0
  84. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/todo/todo_write_tool.py +0 -0
  85. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
  86. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -0
  87. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -0
  88. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/tool_abc.py +0 -0
  89. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/tool_registry.py +0 -0
  90. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/tool_runner.py +0 -0
  91. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/truncation.py +0 -0
  92. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/__init__.py +0 -0
  93. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/mermaid_tool.md +0 -0
  94. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/mermaid_tool.py +0 -0
  95. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
  96. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/web_fetch_tool.py +0 -0
  97. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
  98. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/core/tool/web/web_search_tool.py +0 -0
  99. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/__init__.py +0 -0
  100. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/anthropic/__init__.py +0 -0
  101. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/anthropic/client.py +0 -0
  102. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/anthropic/input.py +0 -0
  103. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/bedrock/__init__.py +0 -0
  104. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/bedrock/client.py +0 -0
  105. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/claude/__init__.py +0 -0
  106. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/claude/client.py +0 -0
  107. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/client.py +0 -0
  108. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/codex/__init__.py +0 -0
  109. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/codex/client.py +0 -0
  110. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/google/__init__.py +0 -0
  111. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/google/client.py +0 -0
  112. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/google/input.py +0 -0
  113. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/image.py +0 -0
  114. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/input_common.py +0 -0
  115. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
  116. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openai_compatible/client.py +0 -0
  117. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openai_compatible/input.py +0 -0
  118. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openai_compatible/stream.py +0 -0
  119. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openai_compatible/tool_call_accumulator.py +0 -0
  120. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openrouter/__init__.py +0 -0
  121. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openrouter/client.py +0 -0
  122. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openrouter/input.py +0 -0
  123. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/openrouter/reasoning.py +0 -0
  124. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/registry.py +0 -0
  125. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/responses/__init__.py +0 -0
  126. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/responses/client.py +0 -0
  127. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/responses/input.py +0 -0
  128. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/llm/usage.py +0 -0
  129. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/log.py +0 -0
  130. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/__init__.py +0 -0
  131. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/commands.py +0 -0
  132. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/__init__.py +0 -0
  133. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/base.py +0 -0
  134. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/chat.py +0 -0
  135. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/lifecycle.py +0 -0
  136. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/metadata.py +0 -0
  137. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/system.py +0 -0
  138. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/events/tools.py +0 -0
  139. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/llm_param.py +0 -0
  140. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/message.py +0 -0
  141. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/model.py +0 -0
  142. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/op.py +0 -0
  143. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/op_handler.py +0 -0
  144. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/sub_agent/AGENTS.md +0 -0
  145. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
  146. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
  147. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/sub_agent/image_gen.py +0 -0
  148. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/sub_agent/task.py +0 -0
  149. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/sub_agent/web.py +0 -0
  150. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/protocol/tools.py +0 -0
  151. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/__init__.py +0 -0
  152. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/codec.py +0 -0
  153. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/export.py +0 -0
  154. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/selector.py +0 -0
  155. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/session.py +0 -0
  156. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/store.py +0 -0
  157. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/templates/export_session.html +0 -0
  158. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/session/templates/mermaid_viewer.html +0 -0
  159. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/__init__.py +0 -0
  160. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/assets/create-plan/SKILL.md +0 -0
  161. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
  162. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/assets/handoff/SKILL.md +0 -0
  163. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/assets/jj-workspace/SKILL.md +0 -0
  164. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
  165. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/loader.py +0 -0
  166. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/manager.py +0 -0
  167. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/skill/system_skills.py +0 -0
  168. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/__init__.py +0 -0
  169. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/__init__.py +0 -0
  170. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/clear_cmd.py +0 -0
  171. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/command_abc.py +0 -0
  172. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/copy_cmd.py +0 -0
  173. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/debug_cmd.py +0 -0
  174. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/export_cmd.py +0 -0
  175. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/export_online_cmd.py +0 -0
  176. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/fork_session_cmd.py +0 -0
  177. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/model_cmd.py +0 -0
  178. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/model_picker.py +0 -0
  179. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/prompt-init.md +0 -0
  180. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/prompt_command.py +0 -0
  181. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/refresh_cmd.py +0 -0
  182. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/registry.py +0 -0
  183. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/resume_cmd.py +0 -0
  184. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/status_cmd.py +0 -0
  185. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/sub_agent_model_cmd.py +0 -0
  186. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/terminal_setup_cmd.py +0 -0
  187. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/command/thinking_cmd.py +0 -0
  188. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/commands.py +0 -0
  189. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/__init__.py +0 -0
  190. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/assistant.py +0 -0
  191. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/bash_syntax.py +0 -0
  192. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/command_output.py +0 -0
  193. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/common.py +0 -0
  194. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/developer.py +0 -0
  195. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/diffs.py +0 -0
  196. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/errors.py +0 -0
  197. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/mermaid_viewer.py +0 -0
  198. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/metadata.py +0 -0
  199. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/__init__.py +0 -0
  200. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/cjk_wrap.py +0 -0
  201. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/code_panel.py +0 -0
  202. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/live.py +0 -0
  203. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/markdown.py +0 -0
  204. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/quote.py +0 -0
  205. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/searchable_text.py +0 -0
  206. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/status.py +0 -0
  207. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/rich/theme.py +0 -0
  208. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/thinking.py +0 -0
  209. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/tools.py +0 -0
  210. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/user_input.py +0 -0
  211. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/components/welcome.py +0 -0
  212. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/display.py +0 -0
  213. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/input/__init__.py +0 -0
  214. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/input/clipboard.py +0 -0
  215. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/input/completers.py +0 -0
  216. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/input/key_bindings.py +0 -0
  217. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/input/prompt_toolkit.py +0 -0
  218. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/runner.py +0 -0
  219. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/__init__.py +0 -0
  220. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/color.py +0 -0
  221. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/control.py +0 -0
  222. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/image.py +0 -0
  223. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/notifier.py +0 -0
  224. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/progress_bar.py +0 -0
  225. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/tui/terminal/selector.py +0 -0
  226. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/__init__.py +0 -0
  227. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/common.py +0 -0
  228. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/core/__init__.py +0 -0
  229. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/core/display.py +0 -0
  230. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/core/input.py +0 -0
  231. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/debug_mode.py +0 -0
  232. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/terminal/__init__.py +0 -0
  233. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/ui/terminal/title.py +0 -0
  234. {klaude_code-2.4.1 → klaude_code-2.4.2}/src/klaude_code/update.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 2.4.1
3
+ Version: 2.4.2
4
4
  Summary: Minimal code agent CLI
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: chardet>=5.2.0
@@ -17,7 +17,7 @@ Requires-Dist: rich>=14.1.0
17
17
  Requires-Dist: term-image>=0.7.2
18
18
  Requires-Dist: trafilatura>=2.0.0
19
19
  Requires-Dist: typer>=0.17.3
20
- Requires-Python: >=3.13
20
+ Requires-Python: >=3.13, <3.14
21
21
  Description-Content-Type: text/markdown
22
22
 
23
23
  # Klaude Code
@@ -4,10 +4,10 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "klaude-code"
7
- version = "2.4.1"
7
+ version = "2.4.2"
8
8
  description = "Minimal code agent CLI"
9
9
  readme = "README.md"
10
- requires-python = ">=3.13"
10
+ requires-python = ">=3.13,<3.14"
11
11
  dependencies = [
12
12
  "anthropic>=0.66.0",
13
13
  "chardet>=5.2.0",
@@ -366,6 +366,7 @@ class TurnExecutor:
366
366
  response_id=msg.response_id,
367
367
  tool_call_id=msg.call_id,
368
368
  tool_name=msg.name,
369
+ model_id=ctx.llm_client.model_name,
369
370
  )
370
371
  case _:
371
372
  continue
@@ -34,6 +34,7 @@ class AssistantImageDeltaEvent(ResponseEvent):
34
34
  class ToolCallStartEvent(ResponseEvent):
35
35
  tool_call_id: str
36
36
  tool_name: str
37
+ model_id: str | None = None
37
38
 
38
39
 
39
40
  class ResponseCompleteEvent(ResponseEvent):
@@ -81,6 +81,7 @@ def render_sub_agent_result(
81
81
  *,
82
82
  has_structured_output: bool = False,
83
83
  description: str | None = None,
84
+ sub_agent_color: Style | None = None,
84
85
  ) -> RenderableType:
85
86
  stripped_result = result.strip()
86
87
  main_content, agent_id_footer = _extract_agent_id_footer(stripped_result)
@@ -88,7 +89,14 @@ def render_sub_agent_result(
88
89
 
89
90
  elements: list[RenderableType] = []
90
91
  if description:
91
- elements.append(Text(f"---\n{description}", style=ThemeKey.TOOL_RESULT))
92
+ elements.append(
93
+ Text(
94
+ f"---\n{description}",
95
+ style=Style(bold=True, color=sub_agent_color.color, frame=True)
96
+ if sub_agent_color
97
+ else ThemeKey.TOOL_RESULT_BOLD,
98
+ )
99
+ )
92
100
 
93
101
  # Try structured JSON output first
94
102
  use_text_rendering = True
@@ -10,7 +10,7 @@ from klaude_code.const import (
10
10
  STATUS_DEFAULT_TEXT,
11
11
  STATUS_THINKING_TEXT,
12
12
  )
13
- from klaude_code.protocol import events, model
13
+ from klaude_code.protocol import events, model, tools
14
14
  from klaude_code.tui.commands import (
15
15
  AppendAssistant,
16
16
  AppendThinking,
@@ -48,6 +48,33 @@ from klaude_code.tui.components.rich.theme import ThemeKey
48
48
  from klaude_code.tui.components.thinking import extract_last_bold_header, normalize_thinking_content
49
49
  from klaude_code.tui.components.tools import get_tool_active_form, is_sub_agent_tool
50
50
 
51
+ # Tools that complete quickly and don't benefit from streaming activity display.
52
+ # For models without fine-grained tool JSON streaming (e.g., Gemini), showing these
53
+ # in the activity state causes a flash-and-disappear effect.
54
+ FAST_TOOLS: frozenset[str] = frozenset(
55
+ {
56
+ tools.READ,
57
+ tools.EDIT,
58
+ tools.WRITE,
59
+ tools.BASH,
60
+ tools.TODO_WRITE,
61
+ tools.UPDATE_PLAN,
62
+ tools.APPLY_PATCH,
63
+ tools.REPORT_BACK,
64
+ }
65
+ )
66
+
67
+
68
+ def _should_skip_tool_activity(tool_name: str, model_id: str | None) -> bool:
69
+ """Check if tool activity should be skipped for non-streaming models."""
70
+ if model_id is None:
71
+ return False
72
+ if tool_name not in FAST_TOOLS:
73
+ return False
74
+ # Gemini and Grok models don't stream tool JSON at fine granularity
75
+ model_lower = model_id.lower()
76
+ return "gemini" in model_lower or "grok" in model_lower
77
+
51
78
 
52
79
  @dataclass
53
80
  class SubAgentThinkingHeaderState:
@@ -142,7 +169,8 @@ class ActivityState:
142
169
 
143
170
  if self._sub_agent_tool_calls:
144
171
  _append_counts(self._sub_agent_tool_calls)
145
- activity_text.append(" | ")
172
+ if self._tool_calls:
173
+ activity_text.append(" , ")
146
174
 
147
175
  if self._tool_calls:
148
176
  _append_counts(self._tool_calls)
@@ -497,11 +525,14 @@ class DisplayStateMachine:
497
525
 
498
526
  self._spinner.set_composing(False)
499
527
 
500
- tool_active_form = get_tool_active_form(e.tool_name)
501
- if is_sub_agent_tool(e.tool_name):
502
- self._spinner.add_sub_agent_tool_call(e.tool_call_id, tool_active_form)
503
- else:
504
- self._spinner.add_tool_call(tool_active_form)
528
+ # Skip activity state for fast tools on non-streaming models (e.g., Gemini)
529
+ # to avoid flash-and-disappear effect
530
+ if not _should_skip_tool_activity(e.tool_name, e.model_id):
531
+ tool_active_form = get_tool_active_form(e.tool_name)
532
+ if is_sub_agent_tool(e.tool_name):
533
+ self._spinner.add_sub_agent_tool_call(e.tool_call_id, tool_active_form)
534
+ else:
535
+ self._spinner.add_tool_call(tool_active_form)
505
536
 
506
537
  cmds.extend(self._spinner_update_commands())
507
538
  return cmds
@@ -569,6 +569,7 @@ class TUICommandRenderer:
569
569
  event.task_result,
570
570
  has_structured_output=event.has_structured_output,
571
571
  description=description,
572
+ sub_agent_color=self._current_sub_agent_color,
572
573
  )
573
574
  )
574
575
 
File without changes