klaude-code 1.4.1__tar.gz → 1.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 (210) hide show
  1. {klaude_code-1.4.1 → klaude_code-1.4.2}/PKG-INFO +1 -1
  2. {klaude_code-1.4.1 → klaude_code-1.4.2}/pyproject.toml +1 -1
  3. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/completers.py +65 -12
  4. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/input_prompt_toolkit.py +25 -0
  5. {klaude_code-1.4.1 → klaude_code-1.4.2}/README.md +0 -0
  6. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/__init__.py +0 -0
  7. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/auth/__init__.py +0 -0
  8. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/auth/codex/__init__.py +0 -0
  9. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/auth/codex/exceptions.py +0 -0
  10. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
  11. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/auth/codex/oauth.py +0 -0
  12. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/auth/codex/token_manager.py +0 -0
  13. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/__init__.py +0 -0
  14. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/auth_cmd.py +0 -0
  15. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/config_cmd.py +0 -0
  16. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/debug.py +0 -0
  17. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/list_model.py +0 -0
  18. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/main.py +0 -0
  19. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/runtime.py +0 -0
  20. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/self_update.py +0 -0
  21. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/cli/session_cmd.py +0 -0
  22. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/__init__.py +0 -0
  23. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/clear_cmd.py +0 -0
  24. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/command_abc.py +0 -0
  25. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/debug_cmd.py +0 -0
  26. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/export_cmd.py +0 -0
  27. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/export_online_cmd.py +0 -0
  28. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/fork_session_cmd.py +0 -0
  29. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/help_cmd.py +0 -0
  30. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/model_cmd.py +0 -0
  31. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/prompt-init.md +0 -0
  32. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/prompt-jj-describe.md +0 -0
  33. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/prompt_command.py +0 -0
  34. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/refresh_cmd.py +0 -0
  35. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/registry.py +0 -0
  36. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/release_notes_cmd.py +0 -0
  37. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/resume_cmd.py +0 -0
  38. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/status_cmd.py +0 -0
  39. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/terminal_setup_cmd.py +0 -0
  40. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/command/thinking_cmd.py +0 -0
  41. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/config/__init__.py +0 -0
  42. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/config/assets/__init__.py +0 -0
  43. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/config/assets/builtin_config.yaml +0 -0
  44. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/config/builtin_config.py +0 -0
  45. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/config/config.py +0 -0
  46. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/config/select_model.py +0 -0
  47. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/const.py +0 -0
  48. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/__init__.py +0 -0
  49. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/agent.py +0 -0
  50. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/executor.py +0 -0
  51. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/manager/__init__.py +0 -0
  52. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/manager/llm_clients.py +0 -0
  53. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/manager/llm_clients_builder.py +0 -0
  54. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/manager/sub_agent_manager.py +0 -0
  55. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompt.py +0 -0
  56. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-claude-code.md +0 -0
  57. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md +0 -0
  58. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md +0 -0
  59. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex.md +0 -0
  60. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-gemini.md +0 -0
  61. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-minimal.md +0 -0
  62. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
  63. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-oracle.md +0 -0
  64. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-web.md +0 -0
  65. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
  66. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/reminders.py +0 -0
  67. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/task.py +0 -0
  68. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/__init__.py +0 -0
  69. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/__init__.py +0 -0
  70. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/_utils.py +0 -0
  71. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
  72. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
  73. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/apply_patch_tool.py +0 -0
  74. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/diff_builder.py +0 -0
  75. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
  76. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/edit_tool.py +0 -0
  77. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/move_tool.md +0 -0
  78. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/move_tool.py +0 -0
  79. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/read_tool.md +0 -0
  80. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/read_tool.py +0 -0
  81. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/write_tool.md +0 -0
  82. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/write_tool.py +0 -0
  83. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/report_back_tool.py +0 -0
  84. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/__init__.py +0 -0
  85. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/bash_tool.md +0 -0
  86. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/bash_tool.py +0 -0
  87. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/command_safety.py +0 -0
  88. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/skill/__init__.py +0 -0
  89. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/skill/skill_tool.md +0 -0
  90. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/skill/skill_tool.py +0 -0
  91. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/sub_agent_tool.py +0 -0
  92. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/__init__.py +0 -0
  93. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool.md +0 -0
  94. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool.py +0 -0
  95. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
  96. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -0
  97. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -0
  98. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_abc.py +0 -0
  99. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_context.py +0 -0
  100. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_registry.py +0 -0
  101. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_runner.py +0 -0
  102. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/truncation.py +0 -0
  103. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/__init__.py +0 -0
  104. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/mermaid_tool.md +0 -0
  105. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/mermaid_tool.py +0 -0
  106. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
  107. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_fetch_tool.py +0 -0
  108. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
  109. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_search_tool.py +0 -0
  110. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/core/turn.py +0 -0
  111. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/__init__.py +0 -0
  112. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/anthropic/__init__.py +0 -0
  113. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/anthropic/client.py +0 -0
  114. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/anthropic/input.py +0 -0
  115. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/client.py +0 -0
  116. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/codex/__init__.py +0 -0
  117. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/codex/client.py +0 -0
  118. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/input_common.py +0 -0
  119. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
  120. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/client.py +0 -0
  121. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/input.py +0 -0
  122. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/stream.py +0 -0
  123. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/tool_call_accumulator.py +0 -0
  124. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/__init__.py +0 -0
  125. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/client.py +0 -0
  126. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/input.py +0 -0
  127. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/reasoning.py +0 -0
  128. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/registry.py +0 -0
  129. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/responses/__init__.py +0 -0
  130. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/responses/client.py +0 -0
  131. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/responses/input.py +0 -0
  132. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/llm/usage.py +0 -0
  133. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/__init__.py +0 -0
  134. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/commands.py +0 -0
  135. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/events.py +0 -0
  136. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/llm_param.py +0 -0
  137. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/model.py +0 -0
  138. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/op.py +0 -0
  139. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/op_handler.py +0 -0
  140. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
  141. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
  142. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/oracle.py +0 -0
  143. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/task.py +0 -0
  144. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/web.py +0 -0
  145. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/protocol/tools.py +0 -0
  146. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/__init__.py +0 -0
  147. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/codec.py +0 -0
  148. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/export.py +0 -0
  149. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/selector.py +0 -0
  150. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/session.py +0 -0
  151. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/store.py +0 -0
  152. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/templates/export_session.html +0 -0
  153. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/session/templates/mermaid_viewer.html +0 -0
  154. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/__init__.py +0 -0
  155. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
  156. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/assets/dev-docs/SKILL.md +0 -0
  157. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/assets/handoff/SKILL.md +0 -0
  158. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/assets/jj-workspace/SKILL.md +0 -0
  159. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
  160. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/loader.py +0 -0
  161. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/manager.py +0 -0
  162. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/skill/system_skills.py +0 -0
  163. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/trace/__init__.py +0 -0
  164. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/trace/log.py +0 -0
  165. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/__init__.py +0 -0
  166. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/core/__init__.py +0 -0
  167. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/core/display.py +0 -0
  168. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/core/input.py +0 -0
  169. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/core/stage_manager.py +0 -0
  170. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/__init__.py +0 -0
  171. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/debug/__init__.py +0 -0
  172. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/debug/display.py +0 -0
  173. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/exec/__init__.py +0 -0
  174. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/exec/display.py +0 -0
  175. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/__init__.py +0 -0
  176. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/clipboard.py +0 -0
  177. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/display.py +0 -0
  178. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/event_handler.py +0 -0
  179. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/key_bindings.py +0 -0
  180. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/renderer.py +0 -0
  181. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/__init__.py +0 -0
  182. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/assistant.py +0 -0
  183. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/bash_syntax.py +0 -0
  184. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/common.py +0 -0
  185. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/developer.py +0 -0
  186. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/diffs.py +0 -0
  187. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/errors.py +0 -0
  188. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/mermaid_viewer.py +0 -0
  189. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/metadata.py +0 -0
  190. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/sub_agent.py +0 -0
  191. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/thinking.py +0 -0
  192. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/tools.py +0 -0
  193. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/user_input.py +0 -0
  194. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/__init__.py +0 -0
  195. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/cjk_wrap.py +0 -0
  196. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/code_panel.py +0 -0
  197. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/live.py +0 -0
  198. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/markdown.py +0 -0
  199. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/quote.py +0 -0
  200. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/searchable_text.py +0 -0
  201. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/status.py +0 -0
  202. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/rich/theme.py +0 -0
  203. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/__init__.py +0 -0
  204. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/color.py +0 -0
  205. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/control.py +0 -0
  206. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/notifier.py +0 -0
  207. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/progress_bar.py +0 -0
  208. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/selector.py +0 -0
  209. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/utils/__init__.py +0 -0
  210. {klaude_code-1.4.1 → klaude_code-1.4.2}/src/klaude_code/ui/utils/common.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.4.1
3
+ Version: 1.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
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "klaude-code"
7
- version = "1.4.1"
7
+ version = "1.4.2"
8
8
  description = "Minimal code agent CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -107,9 +107,9 @@ class _SlashCommandCompleter(Completer):
107
107
  label_len = len(cmd_name) + len(hint)
108
108
  padding = " " * (align_width - label_len)
109
109
 
110
- # Using HTML for formatting: bold command name, normal hint, gray summary
110
+ # Using HTML for formatting: default color command name, normal hint, gray summary
111
111
  display_text = HTML(
112
- f"<b>{cmd_name}</b>{hint}{padding}<style color='ansibrightblack'>{cmd_obj.summary}</style>" # pyright: ignore[reportUnknownMemberType, reportAttributeAccessIssue]
112
+ f"<style color='ansidefault'>{cmd_name}</style>{hint}{padding}<style color='ansibrightblack'>{cmd_obj.summary}</style>" # pyright: ignore[reportUnknownMemberType, reportAttributeAccessIssue]
113
113
  )
114
114
  completion_text = f"/{cmd_name} "
115
115
  yield Completion(
@@ -181,9 +181,9 @@ class _SkillCompleter(Completer):
181
181
  padding_name = " " * (align_width - len(name))
182
182
  location_tag = f"[{location}]".ljust(9)
183
183
 
184
- # Using HTML for formatting: bold skill name, cyan location tag, gray description
184
+ # Using HTML for formatting: default color skill name, cyan location tag, gray description
185
185
  display_text = HTML(
186
- f"<b>{name}</b>{padding_name}<style color='ansicyan'>{location_tag}</style> "
186
+ f"<style color='ansidefault'>{name}</style>{padding_name}<style color='ansicyan'>{location_tag}</style> "
187
187
  f"<style color='ansibrightblack'>{desc}</style>"
188
188
  )
189
189
  completion_text = f"${name} "
@@ -318,11 +318,14 @@ class _AtFilesCompleter(Completer):
318
318
  if not suggestions:
319
319
  return [] # type: ignore[reportUnknownVariableType]
320
320
  start_position = token_start_in_input - len(text_before)
321
- for s in suggestions[: self._max_results]:
321
+ visible_suggestions = suggestions[: self._max_results]
322
+ display_align = self._display_align_width(visible_suggestions)
323
+
324
+ for s in visible_suggestions:
322
325
  yield Completion(
323
326
  text=self._format_completion_text(s, is_quoted=is_quoted),
324
327
  start_position=start_position,
325
- display=s,
328
+ display=self._format_display_label(s, display_align),
326
329
  )
327
330
  return [] # type: ignore[reportUnknownVariableType]
328
331
 
@@ -333,12 +336,15 @@ class _AtFilesCompleter(Completer):
333
336
 
334
337
  # Prepare Completion objects. Replace from the '@' character.
335
338
  start_position = token_start_in_input - len(text_before) # negative
336
- for s in suggestions[: self._max_results]:
339
+ visible_suggestions = suggestions[: self._max_results]
340
+ display_align = self._display_align_width(visible_suggestions)
341
+
342
+ for s in visible_suggestions:
337
343
  # Insert formatted text (with quoting when needed) so that subsequent typing does not keep triggering
338
344
  yield Completion(
339
345
  text=self._format_completion_text(s, is_quoted=is_quoted),
340
346
  start_position=start_position,
341
- display=s,
347
+ display=self._format_display_label(s, display_align),
342
348
  )
343
349
 
344
350
  # ---- Core logic ----
@@ -457,11 +463,13 @@ class _AtFilesCompleter(Completer):
457
463
  keyword_norm: str,
458
464
  ) -> list[str]:
459
465
  # Filter to keyword (case-insensitive) and rank by:
460
- # 1. Directory depth (shallower first)
461
- # 2. Basename hit first, then path hit position, then length
466
+ # 1. Hidden files (starting with .) are deprioritized
467
+ # 2. Paths containing "test" are deprioritized
468
+ # 3. Directory depth (shallower first)
469
+ # 4. Basename hit first, then path hit position, then length
462
470
  # Since both fd and rg now search from current directory, all paths are relative to cwd
463
471
  kn = keyword_norm
464
- out: list[tuple[str, tuple[int, int, int, int, int]]] = []
472
+ out: list[tuple[str, tuple[int, int, int, int, int, int, int]]] = []
465
473
  for p in paths_from_root:
466
474
  pl = p.lower()
467
475
  if kn not in pl:
@@ -477,7 +485,15 @@ class _AtFilesCompleter(Completer):
477
485
  base_pos = base.find(kn)
478
486
  path_pos = pl.find(kn)
479
487
  depth = rel_to_cwd.rstrip("/").count("/")
488
+
489
+ # Deprioritize hidden files/directories (any path segment starting with .)
490
+ is_hidden = any(seg.startswith(".") for seg in rel_to_cwd.split("/") if seg)
491
+ # Deprioritize paths containing "test"
492
+ has_test = "test" in pl
493
+
480
494
  score = (
495
+ 1 if is_hidden else 0,
496
+ 1 if has_test else 0,
481
497
  depth,
482
498
  0 if base_pos != -1 else 1,
483
499
  base_pos if base_pos != -1 else 10_000,
@@ -523,6 +539,34 @@ class _AtFilesCompleter(Completer):
523
539
  return f'@"{suggestion}" '
524
540
  return f"@{suggestion} "
525
541
 
542
+ def _format_display_label(self, suggestion: str, align_width: int) -> HTML:
543
+ """Format visible label for a completion option.
544
+
545
+ Shows the basename (or directory name) aligned, followed by the full path in gray.
546
+ """
547
+
548
+ name = self._display_name(suggestion)
549
+ padding = " " * (max(align_width - len(name), 0) + 2)
550
+ return HTML(f"<style color='ansidefault'>{name}</style>{padding}<style color='ansibrightblack'>{suggestion}</style>")
551
+
552
+ def _display_align_width(self, suggestions: list[str]) -> int:
553
+ """Calculate alignment width for display labels."""
554
+
555
+ return max((len(self._display_name(s)) for s in suggestions), default=0)
556
+
557
+ def _display_name(self, suggestion: str) -> str:
558
+ """Return the basename (with trailing slash for directories) for display."""
559
+
560
+ if not suggestion:
561
+ return suggestion
562
+
563
+ is_dir = suggestion.endswith("/")
564
+ stripped = suggestion.rstrip("/")
565
+ base = stripped.split("/")[-1] if stripped else suggestion
566
+ if is_dir:
567
+ return f"{base}/"
568
+ return base
569
+
526
570
  def _same_scope(self, prev_key: str, cur_key: str) -> bool:
527
571
  # Consider same scope if they share the same base directory and one prefix startswith the other
528
572
  try:
@@ -677,11 +721,20 @@ class _AtFilesCompleter(Completer):
677
721
 
678
722
  Avoids running external tools; shows immediate directories first, then files.
679
723
  Filters out .git, .venv, and node_modules to reduce noise.
724
+ Hidden files and paths containing "test" are deprioritized.
680
725
  """
681
726
  excluded = {".git", ".venv", "node_modules"}
682
727
  items: list[str] = []
683
728
  try:
684
- for p in sorted(cwd.iterdir(), key=lambda x: (not x.is_dir(), x.name.lower())):
729
+ # Sort by: hidden files last, test paths last, directories first, then name
730
+ def sort_key(p: Path) -> tuple[int, int, int, str]:
731
+ name = p.name
732
+ is_hidden = name.startswith(".")
733
+ has_test = "test" in name.lower()
734
+ is_file = not p.is_dir()
735
+ return (1 if is_hidden else 0, 1 if has_test else 0, 1 if is_file else 0, name.lower())
736
+
737
+ for p in sorted(cwd.iterdir(), key=sort_key):
685
738
  name = p.name
686
739
  if name in excluded:
687
740
  continue
@@ -11,6 +11,8 @@ from prompt_toolkit.completion import ThreadedCompleter
11
11
  from prompt_toolkit.cursor_shapes import CursorShape
12
12
  from prompt_toolkit.formatted_text import FormattedText
13
13
  from prompt_toolkit.history import FileHistory
14
+ from prompt_toolkit.layout.containers import Container, FloatContainer
15
+ from prompt_toolkit.layout.menus import CompletionsMenu, MultiColumnCompletionsMenu
14
16
  from prompt_toolkit.patch_stdout import patch_stdout
15
17
  from prompt_toolkit.styles import Style
16
18
 
@@ -42,6 +44,25 @@ PLACEHOLDER_SYMBOL_STYLE_LIGHT_BG = "bg:#e6e6e6 fg:#7a7a7a"
42
44
  PLACEHOLDER_SYMBOL_STYLE_UNKNOWN_BG = "bg:#2a2a2a fg:#8a8a8a"
43
45
 
44
46
 
47
+ def _left_align_completion_menus(container: Container) -> None:
48
+ """Force completion menus to render at column 0.
49
+
50
+ prompt_toolkit's default completion menu floats are positioned relative to the
51
+ cursor (`xcursor=True`). That makes the popup indent as the caret moves.
52
+ We walk the layout tree and rewrite the Float positioning for completion menus
53
+ to keep them fixed at the left edge.
54
+ """
55
+
56
+ if isinstance(container, FloatContainer):
57
+ for flt in container.floats:
58
+ if isinstance(flt.content, (CompletionsMenu, MultiColumnCompletionsMenu)):
59
+ flt.xcursor = False
60
+ flt.left = 0
61
+
62
+ for child in container.get_children():
63
+ _left_align_completion_menus(child)
64
+
65
+
45
66
  class PromptToolkitInput(InputProviderABC):
46
67
  def __init__(
47
68
  self,
@@ -106,6 +127,10 @@ class PromptToolkitInput(InputProviderABC):
106
127
  ),
107
128
  )
108
129
 
130
+ # Keep completion popups left-aligned instead of shifting with the caret.
131
+ with contextlib.suppress(Exception):
132
+ _left_align_completion_menus(self._session.app.layout.container)
133
+
109
134
  def _select_first_completion_on_open(buf) -> None: # type: ignore[no-untyped-def]
110
135
  """Default to selecting the first completion without inserting it."""
111
136
 
File without changes