klaude-code 1.2.11__tar.gz → 2.10.1__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 (375) hide show
  1. klaude_code-2.10.1/PKG-INFO +270 -0
  2. klaude_code-2.10.1/README.md +249 -0
  3. {klaude_code-1.2.11 → klaude_code-2.10.1}/pyproject.toml +34 -5
  4. klaude_code-2.10.1/src/klaude_code/.DS_Store +0 -0
  5. klaude_code-2.10.1/src/klaude_code/app/__init__.py +11 -0
  6. klaude_code-2.10.1/src/klaude_code/app/runtime.py +188 -0
  7. klaude_code-2.10.1/src/klaude_code/auth/AGENTS.md +325 -0
  8. klaude_code-2.10.1/src/klaude_code/auth/__init__.py +50 -0
  9. klaude_code-2.10.1/src/klaude_code/auth/antigravity/__init__.py +20 -0
  10. klaude_code-2.10.1/src/klaude_code/auth/antigravity/exceptions.py +17 -0
  11. klaude_code-2.10.1/src/klaude_code/auth/antigravity/oauth.py +315 -0
  12. klaude_code-2.10.1/src/klaude_code/auth/antigravity/pkce.py +25 -0
  13. klaude_code-2.10.1/src/klaude_code/auth/antigravity/token_manager.py +27 -0
  14. klaude_code-2.10.1/src/klaude_code/auth/base.py +154 -0
  15. klaude_code-2.10.1/src/klaude_code/auth/claude/__init__.py +6 -0
  16. klaude_code-2.10.1/src/klaude_code/auth/claude/exceptions.py +9 -0
  17. klaude_code-2.10.1/src/klaude_code/auth/claude/oauth.py +177 -0
  18. klaude_code-2.10.1/src/klaude_code/auth/claude/token_manager.py +26 -0
  19. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/auth/codex/oauth.py +35 -31
  20. klaude_code-2.10.1/src/klaude_code/auth/codex/token_manager.py +26 -0
  21. klaude_code-2.10.1/src/klaude_code/auth/env.py +81 -0
  22. klaude_code-2.10.1/src/klaude_code/cli/auth_cmd.py +272 -0
  23. klaude_code-2.10.1/src/klaude_code/cli/config_cmd.py +93 -0
  24. klaude_code-2.10.1/src/klaude_code/cli/cost_cmd.py +454 -0
  25. klaude_code-2.10.1/src/klaude_code/cli/debug.py +54 -0
  26. klaude_code-2.10.1/src/klaude_code/cli/list_model.py +446 -0
  27. klaude_code-2.10.1/src/klaude_code/cli/main.py +371 -0
  28. klaude_code-2.10.1/src/klaude_code/cli/self_update.py +87 -0
  29. klaude_code-2.10.1/src/klaude_code/config/__init__.py +19 -0
  30. klaude_code-2.10.1/src/klaude_code/config/assets/__init__.py +1 -0
  31. klaude_code-2.10.1/src/klaude_code/config/assets/builtin_config.yaml +372 -0
  32. klaude_code-2.10.1/src/klaude_code/config/builtin_config.py +57 -0
  33. klaude_code-2.10.1/src/klaude_code/config/config.py +676 -0
  34. klaude_code-2.10.1/src/klaude_code/config/model_matcher.py +156 -0
  35. klaude_code-2.10.1/src/klaude_code/config/sub_agent_model_helper.py +213 -0
  36. klaude_code-2.10.1/src/klaude_code/config/thinking.py +261 -0
  37. klaude_code-2.10.1/src/klaude_code/const.py +244 -0
  38. klaude_code-2.10.1/src/klaude_code/core/agent.py +108 -0
  39. klaude_code-2.10.1/src/klaude_code/core/agent_profile.py +330 -0
  40. klaude_code-2.10.1/src/klaude_code/core/bash_mode.py +276 -0
  41. klaude_code-2.10.1/src/klaude_code/core/compaction/AGENTS.md +112 -0
  42. klaude_code-2.10.1/src/klaude_code/core/compaction/__init__.py +11 -0
  43. klaude_code-2.10.1/src/klaude_code/core/compaction/compaction.py +705 -0
  44. klaude_code-2.10.1/src/klaude_code/core/compaction/overflow.py +26 -0
  45. klaude_code-2.10.1/src/klaude_code/core/compaction/prompts.py +97 -0
  46. klaude_code-2.10.1/src/klaude_code/core/executor.py +1038 -0
  47. klaude_code-2.10.1/src/klaude_code/core/loaded_skills.py +36 -0
  48. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/manager/__init__.py +2 -4
  49. klaude_code-2.10.1/src/klaude_code/core/manager/llm_clients.py +42 -0
  50. klaude_code-2.10.1/src/klaude_code/core/manager/llm_clients_builder.py +66 -0
  51. klaude_code-2.10.1/src/klaude_code/core/manager/sub_agent_manager.py +184 -0
  52. klaude_code-2.10.1/src/klaude_code/core/memory.py +140 -0
  53. klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-antigravity.md +80 -0
  54. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/prompts/prompt-claude-code.md +5 -5
  55. klaude_code-1.2.11/src/klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md → klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md +3 -3
  56. klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-codex-gpt-5-2.md +335 -0
  57. klaude_code-1.2.11/src/klaude_code/core/prompts/prompt-codex-gpt-5-1.md → klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-codex.md +9 -42
  58. klaude_code-1.2.11/src/klaude_code/core/prompts/prompt-subagent-explore.md → klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +14 -3
  59. klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-sub-agent-image-gen.md +1 -0
  60. klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-sub-agent-web.md +77 -0
  61. klaude_code-2.10.1/src/klaude_code/core/reminders.py +550 -0
  62. klaude_code-2.10.1/src/klaude_code/core/task.py +450 -0
  63. klaude_code-2.10.1/src/klaude_code/core/tool/__init__.py +48 -0
  64. klaude_code-2.10.1/src/klaude_code/core/tool/context.py +93 -0
  65. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/_utils.py +7 -1
  66. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/apply_patch.py +15 -50
  67. klaude_code-2.10.1/src/klaude_code/core/tool/file/apply_patch_tool.py +181 -0
  68. klaude_code-2.10.1/src/klaude_code/core/tool/file/diff_builder.py +156 -0
  69. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/edit_tool.py +70 -61
  70. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/read_tool.md +4 -3
  71. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/read_tool.py +152 -106
  72. klaude_code-2.10.1/src/klaude_code/core/tool/file/write_tool.py +135 -0
  73. klaude_code-2.10.1/src/klaude_code/core/tool/offload.py +276 -0
  74. klaude_code-2.10.1/src/klaude_code/core/tool/report_back_tool.py +87 -0
  75. klaude_code-2.10.1/src/klaude_code/core/tool/shell/bash_tool.md +1 -0
  76. klaude_code-2.10.1/src/klaude_code/core/tool/shell/bash_tool.py +361 -0
  77. klaude_code-2.10.1/src/klaude_code/core/tool/shell/command_safety.py +175 -0
  78. klaude_code-2.10.1/src/klaude_code/core/tool/sub_agent/__init__.py +6 -0
  79. klaude_code-2.10.1/src/klaude_code/core/tool/sub_agent/image_gen.md +16 -0
  80. klaude_code-2.10.1/src/klaude_code/core/tool/sub_agent/image_gen.py +146 -0
  81. klaude_code-2.10.1/src/klaude_code/core/tool/sub_agent/task.md +20 -0
  82. klaude_code-2.10.1/src/klaude_code/core/tool/sub_agent/task.py +205 -0
  83. klaude_code-2.10.1/src/klaude_code/core/tool/todo/todo_write_tool.md +2 -0
  84. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/todo/todo_write_tool.py +10 -17
  85. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/todo/update_plan_tool.py +7 -9
  86. klaude_code-2.10.1/src/klaude_code/core/tool/tool_abc.py +44 -0
  87. klaude_code-2.10.1/src/klaude_code/core/tool/tool_registry.py +31 -0
  88. klaude_code-2.10.1/src/klaude_code/core/tool/tool_runner.py +314 -0
  89. klaude_code-2.10.1/src/klaude_code/core/tool/web/mermaid_tool.md +64 -0
  90. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/web/mermaid_tool.py +10 -9
  91. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/web/web_fetch_tool.md +2 -1
  92. klaude_code-2.10.1/src/klaude_code/core/tool/web/web_fetch_tool.py +264 -0
  93. klaude_code-2.10.1/src/klaude_code/core/tool/web/web_search_tool.md +23 -0
  94. klaude_code-2.10.1/src/klaude_code/core/tool/web/web_search_tool.py +130 -0
  95. klaude_code-2.10.1/src/klaude_code/core/turn.py +433 -0
  96. klaude_code-2.10.1/src/klaude_code/llm/anthropic/client.py +427 -0
  97. klaude_code-2.10.1/src/klaude_code/llm/anthropic/input.py +269 -0
  98. klaude_code-2.10.1/src/klaude_code/llm/antigravity/__init__.py +3 -0
  99. klaude_code-2.10.1/src/klaude_code/llm/antigravity/client.py +558 -0
  100. klaude_code-2.10.1/src/klaude_code/llm/antigravity/input.py +268 -0
  101. klaude_code-2.10.1/src/klaude_code/llm/bedrock_anthropic/__init__.py +3 -0
  102. klaude_code-2.10.1/src/klaude_code/llm/bedrock_anthropic/client.py +59 -0
  103. klaude_code-2.10.1/src/klaude_code/llm/claude/__init__.py +3 -0
  104. klaude_code-2.10.1/src/klaude_code/llm/claude/client.py +101 -0
  105. klaude_code-2.10.1/src/klaude_code/llm/client.py +63 -0
  106. klaude_code-2.10.1/src/klaude_code/llm/google/__init__.py +3 -0
  107. klaude_code-2.10.1/src/klaude_code/llm/google/client.py +541 -0
  108. klaude_code-2.10.1/src/klaude_code/llm/google/input.py +238 -0
  109. klaude_code-2.10.1/src/klaude_code/llm/image.py +130 -0
  110. klaude_code-2.10.1/src/klaude_code/llm/input_common.py +206 -0
  111. klaude_code-2.10.1/src/klaude_code/llm/json_stable.py +37 -0
  112. {klaude_code-1.2.11/src/klaude_code/llm/codex → klaude_code-2.10.1/src/klaude_code/llm/openai_codex}/__init__.py +1 -1
  113. klaude_code-2.10.1/src/klaude_code/llm/openai_codex/client.py +173 -0
  114. klaude_code-2.10.1/src/klaude_code/llm/openai_codex/prompt_sync.py +237 -0
  115. klaude_code-2.10.1/src/klaude_code/llm/openai_compatible/client.py +126 -0
  116. klaude_code-2.10.1/src/klaude_code/llm/openai_compatible/input.py +80 -0
  117. klaude_code-2.10.1/src/klaude_code/llm/openai_compatible/stream.py +426 -0
  118. klaude_code-2.10.1/src/klaude_code/llm/openai_responses/client.py +375 -0
  119. klaude_code-2.10.1/src/klaude_code/llm/openai_responses/input.py +238 -0
  120. klaude_code-2.10.1/src/klaude_code/llm/openrouter/client.py +149 -0
  121. klaude_code-2.10.1/src/klaude_code/llm/openrouter/input.py +157 -0
  122. klaude_code-2.10.1/src/klaude_code/llm/openrouter/reasoning.py +91 -0
  123. klaude_code-2.10.1/src/klaude_code/llm/partial_message.py +5 -0
  124. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/llm/registry.py +19 -12
  125. klaude_code-2.10.1/src/klaude_code/llm/stream_parts.py +96 -0
  126. klaude_code-2.10.1/src/klaude_code/llm/usage.py +163 -0
  127. klaude_code-2.10.1/src/klaude_code/log.py +375 -0
  128. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/protocol/__init__.py +1 -0
  129. klaude_code-2.10.1/src/klaude_code/protocol/commands.py +33 -0
  130. klaude_code-2.10.1/src/klaude_code/protocol/events.py +249 -0
  131. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/protocol/llm_param.py +35 -13
  132. klaude_code-2.10.1/src/klaude_code/protocol/message.py +265 -0
  133. klaude_code-2.10.1/src/klaude_code/protocol/model.py +362 -0
  134. klaude_code-2.10.1/src/klaude_code/protocol/op.py +235 -0
  135. klaude_code-2.10.1/src/klaude_code/protocol/op_handler.py +82 -0
  136. klaude_code-2.10.1/src/klaude_code/protocol/sub_agent/AGENTS.md +28 -0
  137. klaude_code-2.10.1/src/klaude_code/protocol/sub_agent/__init__.py +92 -0
  138. klaude_code-2.10.1/src/klaude_code/protocol/sub_agent/explore.py +21 -0
  139. klaude_code-2.10.1/src/klaude_code/protocol/sub_agent/image_gen.py +38 -0
  140. klaude_code-2.10.1/src/klaude_code/protocol/sub_agent/task.py +17 -0
  141. klaude_code-2.10.1/src/klaude_code/protocol/sub_agent/web.py +21 -0
  142. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/protocol/tools.py +5 -3
  143. klaude_code-2.10.1/src/klaude_code/session/__init__.py +4 -0
  144. klaude_code-2.10.1/src/klaude_code/session/codec.py +67 -0
  145. klaude_code-2.10.1/src/klaude_code/session/export.py +1207 -0
  146. klaude_code-2.10.1/src/klaude_code/session/selector.py +81 -0
  147. klaude_code-2.10.1/src/klaude_code/session/session.py +693 -0
  148. klaude_code-2.10.1/src/klaude_code/session/store.py +189 -0
  149. klaude_code-2.10.1/src/klaude_code/session/templates/export_session.html +2324 -0
  150. klaude_code-2.10.1/src/klaude_code/session/templates/mermaid_viewer.html +1011 -0
  151. klaude_code-2.10.1/src/klaude_code/skill/.DS_Store +0 -0
  152. klaude_code-2.10.1/src/klaude_code/skill/__init__.py +27 -0
  153. klaude_code-2.10.1/src/klaude_code/skill/assets/.DS_Store +0 -0
  154. klaude_code-2.10.1/src/klaude_code/skill/assets/create-plan/SKILL.md +74 -0
  155. klaude_code-2.10.1/src/klaude_code/skill/assets/deslop/SKILL.md +26 -0
  156. klaude_code-2.10.1/src/klaude_code/skill/assets/handoff/SKILL.md +39 -0
  157. klaude_code-2.10.1/src/klaude_code/skill/assets/skill-creator/SKILL.md +139 -0
  158. klaude_code-1.2.11/src/klaude_code/core/tool/memory/skill_loader.py → klaude_code-2.10.1/src/klaude_code/skill/loader.py +83 -100
  159. klaude_code-2.10.1/src/klaude_code/skill/manager.py +109 -0
  160. klaude_code-2.10.1/src/klaude_code/skill/system_skills.py +172 -0
  161. klaude_code-2.10.1/src/klaude_code/tui/__init__.py +8 -0
  162. klaude_code-2.10.1/src/klaude_code/tui/command/__init__.py +107 -0
  163. klaude_code-2.10.1/src/klaude_code/tui/command/clear_cmd.py +25 -0
  164. klaude_code-2.10.1/src/klaude_code/tui/command/command_abc.py +93 -0
  165. klaude_code-2.10.1/src/klaude_code/tui/command/compact_cmd.py +32 -0
  166. klaude_code-2.10.1/src/klaude_code/tui/command/continue_cmd.py +34 -0
  167. klaude_code-2.10.1/src/klaude_code/tui/command/copy_cmd.py +52 -0
  168. klaude_code-2.10.1/src/klaude_code/tui/command/debug_cmd.py +81 -0
  169. klaude_code-2.10.1/src/klaude_code/tui/command/export_cmd.py +53 -0
  170. klaude_code-2.10.1/src/klaude_code/tui/command/export_online_cmd.py +150 -0
  171. klaude_code-2.10.1/src/klaude_code/tui/command/fork_session_cmd.py +360 -0
  172. klaude_code-2.10.1/src/klaude_code/tui/command/model_cmd.py +55 -0
  173. klaude_code-2.10.1/src/klaude_code/tui/command/model_picker.py +131 -0
  174. {klaude_code-1.2.11/src/klaude_code → klaude_code-2.10.1/src/klaude_code/tui}/command/prompt_command.py +18 -14
  175. {klaude_code-1.2.11/src/klaude_code → klaude_code-2.10.1/src/klaude_code/tui}/command/refresh_cmd.py +9 -13
  176. klaude_code-2.10.1/src/klaude_code/tui/command/registry.py +215 -0
  177. klaude_code-2.10.1/src/klaude_code/tui/command/resume_cmd.py +100 -0
  178. {klaude_code-1.2.11/src/klaude_code → klaude_code-2.10.1/src/klaude_code/tui}/command/status_cmd.py +22 -31
  179. klaude_code-2.10.1/src/klaude_code/tui/command/sub_agent_model_cmd.py +238 -0
  180. klaude_code-2.10.1/src/klaude_code/tui/command/thinking_cmd.py +85 -0
  181. klaude_code-2.10.1/src/klaude_code/tui/commands.py +185 -0
  182. klaude_code-2.10.1/src/klaude_code/tui/components/bash_syntax.py +214 -0
  183. klaude_code-2.10.1/src/klaude_code/tui/components/command_output.py +97 -0
  184. klaude_code-2.10.1/src/klaude_code/tui/components/common.py +146 -0
  185. klaude_code-2.10.1/src/klaude_code/tui/components/developer.py +120 -0
  186. klaude_code-2.10.1/src/klaude_code/tui/components/diffs.py +91 -0
  187. klaude_code-2.10.1/src/klaude_code/tui/components/errors.py +25 -0
  188. klaude_code-2.10.1/src/klaude_code/tui/components/mermaid_viewer.py +104 -0
  189. klaude_code-2.10.1/src/klaude_code/tui/components/metadata.py +177 -0
  190. klaude_code-2.10.1/src/klaude_code/tui/components/rich/__init__.py +10 -0
  191. klaude_code-2.10.1/src/klaude_code/tui/components/rich/cjk_wrap.py +229 -0
  192. klaude_code-2.10.1/src/klaude_code/tui/components/rich/code_panel.py +146 -0
  193. {klaude_code-1.2.11/src/klaude_code/ui → klaude_code-2.10.1/src/klaude_code/tui/components}/rich/live.py +20 -1
  194. klaude_code-2.10.1/src/klaude_code/tui/components/rich/markdown.py +657 -0
  195. klaude_code-2.10.1/src/klaude_code/tui/components/rich/quote.py +137 -0
  196. klaude_code-2.10.1/src/klaude_code/tui/components/rich/status.py +433 -0
  197. klaude_code-2.10.1/src/klaude_code/tui/components/rich/theme.py +419 -0
  198. klaude_code-2.10.1/src/klaude_code/tui/components/sub_agent.py +126 -0
  199. klaude_code-2.10.1/src/klaude_code/tui/components/thinking.py +28 -0
  200. klaude_code-2.10.1/src/klaude_code/tui/components/tools.py +727 -0
  201. klaude_code-2.10.1/src/klaude_code/tui/components/user_input.py +99 -0
  202. klaude_code-2.10.1/src/klaude_code/tui/components/welcome.py +145 -0
  203. klaude_code-2.10.1/src/klaude_code/tui/display.py +103 -0
  204. klaude_code-2.10.1/src/klaude_code/tui/input/AGENTS.md +44 -0
  205. klaude_code-2.10.1/src/klaude_code/tui/input/__init__.py +9 -0
  206. klaude_code-2.10.1/src/klaude_code/tui/input/completers.py +809 -0
  207. klaude_code-2.10.1/src/klaude_code/tui/input/drag_drop.py +146 -0
  208. klaude_code-2.10.1/src/klaude_code/tui/input/images.py +230 -0
  209. klaude_code-2.10.1/src/klaude_code/tui/input/key_bindings.py +627 -0
  210. klaude_code-2.10.1/src/klaude_code/tui/input/paste.py +71 -0
  211. klaude_code-2.10.1/src/klaude_code/tui/input/prompt_toolkit.py +727 -0
  212. klaude_code-2.10.1/src/klaude_code/tui/machine.py +795 -0
  213. klaude_code-2.10.1/src/klaude_code/tui/renderer.py +822 -0
  214. klaude_code-2.10.1/src/klaude_code/tui/runner.py +354 -0
  215. {klaude_code-1.2.11/src/klaude_code/ui → klaude_code-2.10.1/src/klaude_code/tui}/terminal/color.py +2 -2
  216. {klaude_code-1.2.11/src/klaude_code/ui → klaude_code-2.10.1/src/klaude_code/tui}/terminal/control.py +12 -21
  217. klaude_code-2.10.1/src/klaude_code/tui/terminal/image.py +120 -0
  218. {klaude_code-1.2.11/src/klaude_code/ui → klaude_code-2.10.1/src/klaude_code/tui}/terminal/notifier.py +58 -18
  219. {klaude_code-1.2.11/src/klaude_code/ui → klaude_code-2.10.1/src/klaude_code/tui}/terminal/progress_bar.py +4 -4
  220. klaude_code-2.10.1/src/klaude_code/tui/terminal/selector.py +901 -0
  221. klaude_code-2.10.1/src/klaude_code/ui/__init__.py +18 -0
  222. klaude_code-2.10.1/src/klaude_code/ui/common.py +76 -0
  223. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/ui/core/display.py +4 -4
  224. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/ui/core/input.py +3 -2
  225. klaude_code-1.2.11/src/klaude_code/ui/modes/debug/display.py → klaude_code-2.10.1/src/klaude_code/ui/debug_mode.py +4 -3
  226. klaude_code-2.10.1/src/klaude_code/ui/terminal/__init__.py +8 -0
  227. klaude_code-2.10.1/src/klaude_code/ui/terminal/title.py +33 -0
  228. klaude_code-1.2.11/src/klaude_code/version.py → klaude_code-2.10.1/src/klaude_code/update.py +28 -28
  229. klaude_code-1.2.11/PKG-INFO +0 -175
  230. klaude_code-1.2.11/README.md +0 -158
  231. klaude_code-1.2.11/src/klaude_code/auth/__init__.py +0 -24
  232. klaude_code-1.2.11/src/klaude_code/auth/codex/token_manager.py +0 -84
  233. klaude_code-1.2.11/src/klaude_code/cli/main.py +0 -367
  234. klaude_code-1.2.11/src/klaude_code/cli/runtime.py +0 -331
  235. klaude_code-1.2.11/src/klaude_code/cli/session_cmd.py +0 -80
  236. klaude_code-1.2.11/src/klaude_code/command/__init__.py +0 -90
  237. klaude_code-1.2.11/src/klaude_code/command/clear_cmd.py +0 -24
  238. klaude_code-1.2.11/src/klaude_code/command/command_abc.py +0 -95
  239. klaude_code-1.2.11/src/klaude_code/command/diff_cmd.py +0 -141
  240. klaude_code-1.2.11/src/klaude_code/command/export_cmd.py +0 -89
  241. klaude_code-1.2.11/src/klaude_code/command/help_cmd.py +0 -55
  242. klaude_code-1.2.11/src/klaude_code/command/model_cmd.py +0 -46
  243. klaude_code-1.2.11/src/klaude_code/command/prompt-deslop.md +0 -14
  244. klaude_code-1.2.11/src/klaude_code/command/prompt-dev-docs-update.md +0 -56
  245. klaude_code-1.2.11/src/klaude_code/command/prompt-dev-docs.md +0 -46
  246. klaude_code-1.2.11/src/klaude_code/command/registry.py +0 -122
  247. klaude_code-1.2.11/src/klaude_code/command/release_notes_cmd.py +0 -89
  248. klaude_code-1.2.11/src/klaude_code/command/terminal_setup_cmd.py +0 -255
  249. klaude_code-1.2.11/src/klaude_code/config/__init__.py +0 -11
  250. klaude_code-1.2.11/src/klaude_code/config/config.py +0 -177
  251. klaude_code-1.2.11/src/klaude_code/config/list_model.py +0 -215
  252. klaude_code-1.2.11/src/klaude_code/config/select_model.py +0 -67
  253. klaude_code-1.2.11/src/klaude_code/const/__init__.py +0 -133
  254. klaude_code-1.2.11/src/klaude_code/core/agent.py +0 -212
  255. klaude_code-1.2.11/src/klaude_code/core/executor.py +0 -482
  256. klaude_code-1.2.11/src/klaude_code/core/manager/agent_manager.py +0 -132
  257. klaude_code-1.2.11/src/klaude_code/core/manager/llm_clients.py +0 -67
  258. klaude_code-1.2.11/src/klaude_code/core/manager/llm_clients_builder.py +0 -58
  259. klaude_code-1.2.11/src/klaude_code/core/manager/sub_agent_manager.py +0 -90
  260. klaude_code-1.2.11/src/klaude_code/core/prompt.py +0 -95
  261. klaude_code-1.2.11/src/klaude_code/core/prompts/prompt-subagent-oracle.md +0 -23
  262. klaude_code-1.2.11/src/klaude_code/core/prompts/prompt-subagent-webfetch.md +0 -46
  263. klaude_code-1.2.11/src/klaude_code/core/reminders.py +0 -451
  264. klaude_code-1.2.11/src/klaude_code/core/task.py +0 -257
  265. klaude_code-1.2.11/src/klaude_code/core/tool/__init__.py +0 -77
  266. klaude_code-1.2.11/src/klaude_code/core/tool/file/apply_patch_tool.py +0 -204
  267. klaude_code-1.2.11/src/klaude_code/core/tool/file/multi_edit_tool.md +0 -42
  268. klaude_code-1.2.11/src/klaude_code/core/tool/file/multi_edit_tool.py +0 -174
  269. klaude_code-1.2.11/src/klaude_code/core/tool/file/write_tool.py +0 -121
  270. klaude_code-1.2.11/src/klaude_code/core/tool/memory/__init__.py +0 -5
  271. klaude_code-1.2.11/src/klaude_code/core/tool/memory/memory_tool.md +0 -20
  272. klaude_code-1.2.11/src/klaude_code/core/tool/memory/memory_tool.py +0 -462
  273. klaude_code-1.2.11/src/klaude_code/core/tool/memory/skill_tool.md +0 -24
  274. klaude_code-1.2.11/src/klaude_code/core/tool/memory/skill_tool.py +0 -110
  275. klaude_code-1.2.11/src/klaude_code/core/tool/shell/bash_tool.md +0 -43
  276. klaude_code-1.2.11/src/klaude_code/core/tool/shell/bash_tool.py +0 -123
  277. klaude_code-1.2.11/src/klaude_code/core/tool/shell/command_safety.py +0 -363
  278. klaude_code-1.2.11/src/klaude_code/core/tool/sub_agent_tool.py +0 -84
  279. klaude_code-1.2.11/src/klaude_code/core/tool/todo/todo_write_tool.md +0 -25
  280. klaude_code-1.2.11/src/klaude_code/core/tool/tool_abc.py +0 -25
  281. klaude_code-1.2.11/src/klaude_code/core/tool/tool_context.py +0 -123
  282. klaude_code-1.2.11/src/klaude_code/core/tool/tool_registry.py +0 -77
  283. klaude_code-1.2.11/src/klaude_code/core/tool/tool_runner.py +0 -249
  284. klaude_code-1.2.11/src/klaude_code/core/tool/truncation.py +0 -174
  285. klaude_code-1.2.11/src/klaude_code/core/tool/web/mermaid_tool.md +0 -21
  286. klaude_code-1.2.11/src/klaude_code/core/tool/web/web_fetch_tool.py +0 -159
  287. klaude_code-1.2.11/src/klaude_code/core/turn.py +0 -248
  288. klaude_code-1.2.11/src/klaude_code/llm/anthropic/client.py +0 -191
  289. klaude_code-1.2.11/src/klaude_code/llm/anthropic/input.py +0 -215
  290. klaude_code-1.2.11/src/klaude_code/llm/client.py +0 -49
  291. klaude_code-1.2.11/src/klaude_code/llm/codex/client.py +0 -130
  292. klaude_code-1.2.11/src/klaude_code/llm/input_common.py +0 -233
  293. klaude_code-1.2.11/src/klaude_code/llm/openai_compatible/client.py +0 -168
  294. klaude_code-1.2.11/src/klaude_code/llm/openai_compatible/input.py +0 -111
  295. klaude_code-1.2.11/src/klaude_code/llm/openai_compatible/stream_processor.py +0 -82
  296. klaude_code-1.2.11/src/klaude_code/llm/openai_compatible/tool_call_accumulator.py +0 -80
  297. klaude_code-1.2.11/src/klaude_code/llm/openrouter/client.py +0 -170
  298. klaude_code-1.2.11/src/klaude_code/llm/openrouter/input.py +0 -137
  299. klaude_code-1.2.11/src/klaude_code/llm/openrouter/reasoning_handler.py +0 -209
  300. klaude_code-1.2.11/src/klaude_code/llm/responses/client.py +0 -202
  301. klaude_code-1.2.11/src/klaude_code/llm/responses/input.py +0 -167
  302. klaude_code-1.2.11/src/klaude_code/llm/usage.py +0 -162
  303. klaude_code-1.2.11/src/klaude_code/protocol/commands.py +0 -22
  304. klaude_code-1.2.11/src/klaude_code/protocol/events.py +0 -173
  305. klaude_code-1.2.11/src/klaude_code/protocol/model.py +0 -412
  306. klaude_code-1.2.11/src/klaude_code/protocol/op.py +0 -93
  307. klaude_code-1.2.11/src/klaude_code/protocol/op_handler.py +0 -28
  308. klaude_code-1.2.11/src/klaude_code/protocol/sub_agent.py +0 -354
  309. klaude_code-1.2.11/src/klaude_code/session/__init__.py +0 -4
  310. klaude_code-1.2.11/src/klaude_code/session/export.py +0 -653
  311. klaude_code-1.2.11/src/klaude_code/session/selector.py +0 -76
  312. klaude_code-1.2.11/src/klaude_code/session/session.py +0 -497
  313. klaude_code-1.2.11/src/klaude_code/session/templates/export_session.html +0 -1597
  314. klaude_code-1.2.11/src/klaude_code/trace/__init__.py +0 -3
  315. klaude_code-1.2.11/src/klaude_code/trace/log.py +0 -168
  316. klaude_code-1.2.11/src/klaude_code/ui/__init__.py +0 -91
  317. klaude_code-1.2.11/src/klaude_code/ui/core/stage_manager.py +0 -55
  318. klaude_code-1.2.11/src/klaude_code/ui/modes/__init__.py +0 -1
  319. klaude_code-1.2.11/src/klaude_code/ui/modes/debug/__init__.py +0 -1
  320. klaude_code-1.2.11/src/klaude_code/ui/modes/exec/__init__.py +0 -1
  321. klaude_code-1.2.11/src/klaude_code/ui/modes/exec/display.py +0 -63
  322. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/__init__.py +0 -47
  323. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/clipboard.py +0 -152
  324. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/completers.py +0 -462
  325. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/display.py +0 -60
  326. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/event_handler.py +0 -462
  327. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/input_prompt_toolkit.py +0 -167
  328. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/key_bindings.py +0 -170
  329. klaude_code-1.2.11/src/klaude_code/ui/modes/repl/renderer.py +0 -283
  330. klaude_code-1.2.11/src/klaude_code/ui/renderers/assistant.py +0 -21
  331. klaude_code-1.2.11/src/klaude_code/ui/renderers/common.py +0 -8
  332. klaude_code-1.2.11/src/klaude_code/ui/renderers/developer.py +0 -169
  333. klaude_code-1.2.11/src/klaude_code/ui/renderers/diffs.py +0 -215
  334. klaude_code-1.2.11/src/klaude_code/ui/renderers/errors.py +0 -16
  335. klaude_code-1.2.11/src/klaude_code/ui/renderers/metadata.py +0 -253
  336. klaude_code-1.2.11/src/klaude_code/ui/renderers/sub_agent.py +0 -71
  337. klaude_code-1.2.11/src/klaude_code/ui/renderers/thinking.py +0 -39
  338. klaude_code-1.2.11/src/klaude_code/ui/renderers/tools.py +0 -528
  339. klaude_code-1.2.11/src/klaude_code/ui/renderers/user_input.py +0 -78
  340. klaude_code-1.2.11/src/klaude_code/ui/rich/__init__.py +0 -1
  341. klaude_code-1.2.11/src/klaude_code/ui/rich/markdown.py +0 -311
  342. klaude_code-1.2.11/src/klaude_code/ui/rich/quote.py +0 -34
  343. klaude_code-1.2.11/src/klaude_code/ui/rich/searchable_text.py +0 -71
  344. klaude_code-1.2.11/src/klaude_code/ui/rich/status.py +0 -240
  345. klaude_code-1.2.11/src/klaude_code/ui/rich/theme.py +0 -276
  346. klaude_code-1.2.11/src/klaude_code/ui/utils/__init__.py +0 -1
  347. klaude_code-1.2.11/src/klaude_code/ui/utils/common.py +0 -108
  348. klaude_code-1.2.11/src/klaude_code/ui/utils/debouncer.py +0 -42
  349. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/__init__.py +0 -0
  350. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/auth/codex/__init__.py +0 -0
  351. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/auth/codex/exceptions.py +0 -0
  352. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
  353. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/cli/__init__.py +0 -0
  354. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/__init__.py +0 -0
  355. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/prompts/prompt-gemini.md +0 -0
  356. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/prompts/prompt-minimal.md +0 -0
  357. /klaude_code-1.2.11/src/klaude_code/core/prompts/prompt-subagent.md → /klaude_code-2.10.1/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
  358. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/__init__.py +0 -0
  359. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
  360. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
  361. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/file/write_tool.md +0 -0
  362. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/shell/__init__.py +0 -0
  363. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/todo/__init__.py +0 -0
  364. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
  365. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -0
  366. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/core/tool/web/__init__.py +0 -0
  367. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/llm/__init__.py +0 -0
  368. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/llm/anthropic/__init__.py +0 -0
  369. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
  370. {klaude_code-1.2.11/src/klaude_code/llm/responses → klaude_code-2.10.1/src/klaude_code/llm/openai_responses}/__init__.py +0 -0
  371. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/llm/openrouter/__init__.py +0 -0
  372. {klaude_code-1.2.11/src/klaude_code → klaude_code-2.10.1/src/klaude_code/tui}/command/prompt-init.md +0 -0
  373. {klaude_code-1.2.11/src/klaude_code/ui/renderers → klaude_code-2.10.1/src/klaude_code/tui/components}/__init__.py +0 -0
  374. {klaude_code-1.2.11/src/klaude_code/ui → klaude_code-2.10.1/src/klaude_code/tui}/terminal/__init__.py +0 -0
  375. {klaude_code-1.2.11 → klaude_code-2.10.1}/src/klaude_code/ui/core/__init__.py +0 -0
@@ -0,0 +1,270 @@
1
+ Metadata-Version: 2.3
2
+ Name: klaude-code
3
+ Version: 2.10.1
4
+ Summary: Minimal code agent CLI
5
+ Requires-Dist: anthropic>=0.66.0
6
+ Requires-Dist: chardet>=5.2.0
7
+ Requires-Dist: ddgs>=9.9.3
8
+ Requires-Dist: diff-match-patch>=20241021
9
+ Requires-Dist: filelock>=3.20.3
10
+ Requires-Dist: google-genai>=1.56.0
11
+ Requires-Dist: markdown-it-py>=4.0.0
12
+ Requires-Dist: openai>=1.102.0
13
+ Requires-Dist: prompt-toolkit>=3.0.52
14
+ Requires-Dist: pydantic>=2.11.7
15
+ Requires-Dist: pyyaml>=6.0.2
16
+ Requires-Dist: rich>=14.1.0
17
+ Requires-Dist: trafilatura>=2.0.0
18
+ Requires-Dist: typer>=0.17.3
19
+ Requires-Python: >=3.13
20
+ Description-Content-Type: text/markdown
21
+
22
+ # Klaude Code
23
+
24
+ Minimal code agent CLI.
25
+
26
+ ## Features
27
+ - **Multi-provider**: Anthropic Message API, OpenAI Responses API, OpenRouter, ChatGPT Codex OAuth etc.
28
+ - **Keep reasoning item in context**: Interleaved thinking support
29
+ - **Model-aware tools**: Claude Code tool set for Opus, `apply_patch` for GPT-5/Codex
30
+ - **Reminders**: Cooldown-based todo tracking, instruction reinforcement and external file change reminder
31
+ - **Sub-agents**: Task, Explore, Web, ImageGen
32
+ - **Structured sub-agent output**: Main agent defines JSON schema and get schema-compliant responses via constrained decoding
33
+ - **Recursive `@file` mentions**: Circular dependency protection, relative path resolution
34
+ - **External file sync**: Monitoring for external edits (linter, manual)
35
+ - **Interrupt handling**: Ctrl+C preserves partial responses and synthesizes tool cancellation results
36
+ - **Output truncation**: Large outputs saved to file system with snapshot links
37
+ - **Agent Skills**: Built-in + user + project Agent Skills (with implicit invocation by Skill tool or explicit invocation by typing `$`)
38
+ - **Sessions**: Resumable with `--continue`
39
+ - **Mermaid diagrams**: Terminal image preview and Interactive local HTML viewer with zoom, pan, and SVG export
40
+ - **Extras**: Slash commands, sub-agents, image paste, terminal notifications, auto-theming
41
+
42
+ ## Installation
43
+
44
+ ```bash
45
+ uv tool install klaude-code
46
+ ```
47
+
48
+ To update:
49
+
50
+ ```bash
51
+ uv tool upgrade klaude-code
52
+ ```
53
+
54
+ Or use the built-in command:
55
+
56
+ ```bash
57
+ klaude upgrade
58
+ ```
59
+
60
+ ## Usage
61
+
62
+ ```bash
63
+ klaude [--model [<name>]] [--continue] [--resume [<id>]]
64
+ ```
65
+
66
+ **Options:**
67
+ - `--model`/`-m`: Choose a model.
68
+ - `--model` (no value): opens the interactive selector.
69
+ - `--model <value>`: resolves `<value>` to a single model; if it can't, it opens the interactive selector filtered by `<value>`.
70
+ - `--continue`/`-c`: Resume the most recent session.
71
+ - `--resume`/`-r`: Resume a session.
72
+ - `--resume` (no value): select a session to resume for this project.
73
+ - `--resume <id>`: resume a session by its ID directly.
74
+ - `--vanilla`: Minimal mode with only basic tools (Bash, Read, Edit, Write) and no system prompts.
75
+
76
+ **Model selection behavior:**
77
+ - Default: uses `main_model` from config.
78
+ - `--model` (no value): always prompts you to pick.
79
+ - `--model <value>`: tries to resolve `<value>` to a single model; if it can't, it prompts with a filtered list (and falls back to showing all models if there are no matches).
80
+
81
+ **Debug Options:**
82
+ - `--debug`/`-d`: Enable debug mode with verbose logging and LLM trace.
83
+ - `--debug-filter`: Filter debug output by type (comma-separated).
84
+
85
+
86
+ ### Configuration
87
+
88
+ #### Quick Start (Zero Config)
89
+
90
+ Klaude comes with built-in provider configurations. Just set an API key environment variable and start using it:
91
+
92
+ ```bash
93
+ # Pick one (or more) of these:
94
+ export ANTHROPIC_API_KEY=sk-ant-xxx # Claude models
95
+ export OPENAI_API_KEY=sk-xxx # GPT models
96
+ export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
97
+ export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
98
+ export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
99
+
100
+ # Then just run:
101
+ klaude
102
+ ```
103
+
104
+ On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
105
+
106
+ #### Built-in Providers
107
+
108
+ | Provider | Env Variable | Models |
109
+ |-------------|-----------------------|-------------------------------------------------------------------------------|
110
+ | anthropic | `ANTHROPIC_API_KEY` | sonnet, opus |
111
+ | openai | `OPENAI_API_KEY` | gpt-5.2 |
112
+ | openrouter | `OPENROUTER_API_KEY` | gpt-5.2, gpt-5.2-fast, gpt-5.1-codex-max, sonnet, opus, haiku, kimi, gemini-* |
113
+ | deepseek | `DEEPSEEK_API_KEY` | deepseek |
114
+ | moonshot | `MOONSHOT_API_KEY` | kimi@moonshot |
115
+ | codex | N/A (OAuth) | gpt-5.2-codex (requires ChatGPT Pro subscription) |
116
+
117
+ List all configured providers and models:
118
+
119
+ ```bash
120
+ klaude list
121
+ ```
122
+
123
+ Models from providers without a valid API key are shown as dimmed/unavailable.
124
+
125
+ #### Authentication
126
+
127
+ Use the auth command to configure API keys or login to subscription-based providers:
128
+
129
+ ```bash
130
+ # Interactive provider selection
131
+ klaude auth login
132
+
133
+ # Configure API keys
134
+ klaude auth login anthropic # Set ANTHROPIC_API_KEY
135
+ klaude auth login openai # Set OPENAI_API_KEY
136
+ klaude auth login google # Set GOOGLE_API_KEY
137
+ klaude auth login openrouter # Set OPENROUTER_API_KEY
138
+ klaude auth login deepseek # Set DEEPSEEK_API_KEY
139
+ klaude auth login moonshot # Set MOONSHOT_API_KEY
140
+
141
+ # OAuth login for subscription-based providers
142
+ klaude auth login codex # ChatGPT Pro subscription
143
+ ```
144
+
145
+ API keys are stored in `~/.klaude/klaude-auth.json` and used as fallback when environment variables are not set.
146
+
147
+ To logout from OAuth providers:
148
+
149
+ ```bash
150
+ klaude auth logout codex
151
+ ```
152
+
153
+ #### Custom Configuration
154
+
155
+ User config file: `~/.klaude/klaude-config.yaml`
156
+
157
+ Open in editor:
158
+
159
+ ```bash
160
+ klaude conf
161
+ ```
162
+
163
+ ##### Model Configuration
164
+
165
+ You can add custom models to built-in providers or define new ones. Configuration is inherited from built-in providers by matching `provider_name`.
166
+
167
+ ```yaml
168
+ # ~/.klaude/klaude-config.yaml
169
+ provider_list:
170
+ # Add/Override models for built-in OpenRouter provider
171
+ - provider_name: openrouter
172
+ model_list:
173
+ - model_name: qwen-coder
174
+ model_id: qwen/qwen-2.5-coder-32b-instruct
175
+ context_limit: 131072
176
+ cost: { input: 0.3, output: 0.9 }
177
+ - model_name: sonnet # Override built-in sonnet params
178
+ model_id: anthropic/claude-3.5-sonnet
179
+ context_limit: 200000
180
+
181
+ # Add a completely new provider
182
+ - provider_name: my-azure
183
+ protocol: openai
184
+ api_key: ${AZURE_OPENAI_KEY}
185
+ base_url: https://my-instance.openai.azure.com/
186
+ is_azure: true
187
+ azure_api_version: "2024-02-15-preview"
188
+ model_list:
189
+ - model_name: gpt-4
190
+ model_id: gpt-4-deploy-name
191
+ context_limit: 128000
192
+ ```
193
+
194
+ **Key Tips:**
195
+ - **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
196
+ - **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
197
+ - **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
198
+
199
+ ##### Supported Protocols
200
+
201
+ - `anthropic` - Anthropic Messages API
202
+ - `openai` - OpenAI Chat Completion API
203
+ - `responses` - OpenAI Responses API (for o-series, GPT-5, Codex)
204
+ - `codex_oauth` - OpenAI Codex CLI (OAuth-based, for ChatGPT Pro subscribers)
205
+ - `openrouter` - OpenRouter API (handling `reasoning_details` for interleaved thinking)
206
+ - `google` - Google Gemini API
207
+ - `bedrock` - AWS Bedrock for Claude(uses AWS credentials instead of api_key)
208
+
209
+ List configured providers and models:
210
+
211
+ ```bash
212
+ klaude list
213
+ ```
214
+
215
+ ### Cost Tracking
216
+
217
+ View aggregated usage statistics across all sessions:
218
+
219
+ ```bash
220
+ # Show all historical usage data
221
+ klaude cost
222
+
223
+ # Show usage for the last 7 days only
224
+ klaude cost --days 7
225
+ ```
226
+
227
+ ### Slash Commands
228
+
229
+ Inside the interactive session (`klaude`), use these commands to streamline your workflow:
230
+
231
+ - `/model` - Switch the active LLM during the session.
232
+ - `/thinking` - Configure model thinking/reasoning level.
233
+ - `/clear` - Clear the current conversation context.
234
+ - `/copy` - Copy last assistant message.
235
+ - `/status` - Show session usage statistics (cost, tokens, model breakdown).
236
+ - `/resume` - Select and resume a previous session.
237
+ - `/fork-session` - Fork current session to a new session ID (supports interactive fork point selection).
238
+ - `/export` - Export last assistant message to a temp Markdown file.
239
+ - `/export-online` - Export and deploy session to surge.sh as a static webpage.
240
+ - `/debug [filters]` - Toggle debug mode and configure debug filters.
241
+ - `/init` - Bootstrap a new project structure or module.
242
+ - `/dev-doc [feature]` - Generate a comprehensive execution plan for a feature.
243
+ - `/terminal-setup` - Configure terminal for Shift+Enter support.
244
+ - `/help` - List all available commands.
245
+
246
+
247
+ ### Input Shortcuts
248
+
249
+ | Key | Action |
250
+ | -------------------- | ------------------------------------------- |
251
+ | `Enter` | Submit input |
252
+ | `Shift+Enter` | Insert newline (requires `/terminal-setup`) |
253
+ | `Ctrl+J` | Insert newline |
254
+ | `Ctrl+L` | Open model picker overlay |
255
+ | `Ctrl+T` | Open thinking level picker overlay |
256
+ | `Ctrl+V` | Paste image from clipboard |
257
+ | `Left/Right` | Move cursor (wraps across lines) |
258
+ | `Backspace` | Delete character or selected text |
259
+ | `c` (with selection) | Copy selected text to clipboard |
260
+
261
+ ### Sub-Agents
262
+
263
+ The main agent can spawn specialized sub-agents for specific tasks:
264
+
265
+ | Sub-Agent | Purpose |
266
+ |-----------|---------|
267
+ | **Explore** | Fast codebase exploration - find files, search code, answer questions about the codebase |
268
+ | **Task** | Handle complex multi-step tasks autonomously |
269
+ | **WebAgent** | Search the web, fetch pages, and analyze content |
270
+ | **ImageGen** | Generate images from text prompts via OpenRouter Nano Banana Pro |
@@ -0,0 +1,249 @@
1
+ # Klaude Code
2
+
3
+ Minimal code agent CLI.
4
+
5
+ ## Features
6
+ - **Multi-provider**: Anthropic Message API, OpenAI Responses API, OpenRouter, ChatGPT Codex OAuth etc.
7
+ - **Keep reasoning item in context**: Interleaved thinking support
8
+ - **Model-aware tools**: Claude Code tool set for Opus, `apply_patch` for GPT-5/Codex
9
+ - **Reminders**: Cooldown-based todo tracking, instruction reinforcement and external file change reminder
10
+ - **Sub-agents**: Task, Explore, Web, ImageGen
11
+ - **Structured sub-agent output**: Main agent defines JSON schema and get schema-compliant responses via constrained decoding
12
+ - **Recursive `@file` mentions**: Circular dependency protection, relative path resolution
13
+ - **External file sync**: Monitoring for external edits (linter, manual)
14
+ - **Interrupt handling**: Ctrl+C preserves partial responses and synthesizes tool cancellation results
15
+ - **Output truncation**: Large outputs saved to file system with snapshot links
16
+ - **Agent Skills**: Built-in + user + project Agent Skills (with implicit invocation by Skill tool or explicit invocation by typing `$`)
17
+ - **Sessions**: Resumable with `--continue`
18
+ - **Mermaid diagrams**: Terminal image preview and Interactive local HTML viewer with zoom, pan, and SVG export
19
+ - **Extras**: Slash commands, sub-agents, image paste, terminal notifications, auto-theming
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ uv tool install klaude-code
25
+ ```
26
+
27
+ To update:
28
+
29
+ ```bash
30
+ uv tool upgrade klaude-code
31
+ ```
32
+
33
+ Or use the built-in command:
34
+
35
+ ```bash
36
+ klaude upgrade
37
+ ```
38
+
39
+ ## Usage
40
+
41
+ ```bash
42
+ klaude [--model [<name>]] [--continue] [--resume [<id>]]
43
+ ```
44
+
45
+ **Options:**
46
+ - `--model`/`-m`: Choose a model.
47
+ - `--model` (no value): opens the interactive selector.
48
+ - `--model <value>`: resolves `<value>` to a single model; if it can't, it opens the interactive selector filtered by `<value>`.
49
+ - `--continue`/`-c`: Resume the most recent session.
50
+ - `--resume`/`-r`: Resume a session.
51
+ - `--resume` (no value): select a session to resume for this project.
52
+ - `--resume <id>`: resume a session by its ID directly.
53
+ - `--vanilla`: Minimal mode with only basic tools (Bash, Read, Edit, Write) and no system prompts.
54
+
55
+ **Model selection behavior:**
56
+ - Default: uses `main_model` from config.
57
+ - `--model` (no value): always prompts you to pick.
58
+ - `--model <value>`: tries to resolve `<value>` to a single model; if it can't, it prompts with a filtered list (and falls back to showing all models if there are no matches).
59
+
60
+ **Debug Options:**
61
+ - `--debug`/`-d`: Enable debug mode with verbose logging and LLM trace.
62
+ - `--debug-filter`: Filter debug output by type (comma-separated).
63
+
64
+
65
+ ### Configuration
66
+
67
+ #### Quick Start (Zero Config)
68
+
69
+ Klaude comes with built-in provider configurations. Just set an API key environment variable and start using it:
70
+
71
+ ```bash
72
+ # Pick one (or more) of these:
73
+ export ANTHROPIC_API_KEY=sk-ant-xxx # Claude models
74
+ export OPENAI_API_KEY=sk-xxx # GPT models
75
+ export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
76
+ export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
77
+ export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
78
+
79
+ # Then just run:
80
+ klaude
81
+ ```
82
+
83
+ On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
84
+
85
+ #### Built-in Providers
86
+
87
+ | Provider | Env Variable | Models |
88
+ |-------------|-----------------------|-------------------------------------------------------------------------------|
89
+ | anthropic | `ANTHROPIC_API_KEY` | sonnet, opus |
90
+ | openai | `OPENAI_API_KEY` | gpt-5.2 |
91
+ | openrouter | `OPENROUTER_API_KEY` | gpt-5.2, gpt-5.2-fast, gpt-5.1-codex-max, sonnet, opus, haiku, kimi, gemini-* |
92
+ | deepseek | `DEEPSEEK_API_KEY` | deepseek |
93
+ | moonshot | `MOONSHOT_API_KEY` | kimi@moonshot |
94
+ | codex | N/A (OAuth) | gpt-5.2-codex (requires ChatGPT Pro subscription) |
95
+
96
+ List all configured providers and models:
97
+
98
+ ```bash
99
+ klaude list
100
+ ```
101
+
102
+ Models from providers without a valid API key are shown as dimmed/unavailable.
103
+
104
+ #### Authentication
105
+
106
+ Use the auth command to configure API keys or login to subscription-based providers:
107
+
108
+ ```bash
109
+ # Interactive provider selection
110
+ klaude auth login
111
+
112
+ # Configure API keys
113
+ klaude auth login anthropic # Set ANTHROPIC_API_KEY
114
+ klaude auth login openai # Set OPENAI_API_KEY
115
+ klaude auth login google # Set GOOGLE_API_KEY
116
+ klaude auth login openrouter # Set OPENROUTER_API_KEY
117
+ klaude auth login deepseek # Set DEEPSEEK_API_KEY
118
+ klaude auth login moonshot # Set MOONSHOT_API_KEY
119
+
120
+ # OAuth login for subscription-based providers
121
+ klaude auth login codex # ChatGPT Pro subscription
122
+ ```
123
+
124
+ API keys are stored in `~/.klaude/klaude-auth.json` and used as fallback when environment variables are not set.
125
+
126
+ To logout from OAuth providers:
127
+
128
+ ```bash
129
+ klaude auth logout codex
130
+ ```
131
+
132
+ #### Custom Configuration
133
+
134
+ User config file: `~/.klaude/klaude-config.yaml`
135
+
136
+ Open in editor:
137
+
138
+ ```bash
139
+ klaude conf
140
+ ```
141
+
142
+ ##### Model Configuration
143
+
144
+ You can add custom models to built-in providers or define new ones. Configuration is inherited from built-in providers by matching `provider_name`.
145
+
146
+ ```yaml
147
+ # ~/.klaude/klaude-config.yaml
148
+ provider_list:
149
+ # Add/Override models for built-in OpenRouter provider
150
+ - provider_name: openrouter
151
+ model_list:
152
+ - model_name: qwen-coder
153
+ model_id: qwen/qwen-2.5-coder-32b-instruct
154
+ context_limit: 131072
155
+ cost: { input: 0.3, output: 0.9 }
156
+ - model_name: sonnet # Override built-in sonnet params
157
+ model_id: anthropic/claude-3.5-sonnet
158
+ context_limit: 200000
159
+
160
+ # Add a completely new provider
161
+ - provider_name: my-azure
162
+ protocol: openai
163
+ api_key: ${AZURE_OPENAI_KEY}
164
+ base_url: https://my-instance.openai.azure.com/
165
+ is_azure: true
166
+ azure_api_version: "2024-02-15-preview"
167
+ model_list:
168
+ - model_name: gpt-4
169
+ model_id: gpt-4-deploy-name
170
+ context_limit: 128000
171
+ ```
172
+
173
+ **Key Tips:**
174
+ - **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
175
+ - **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
176
+ - **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
177
+
178
+ ##### Supported Protocols
179
+
180
+ - `anthropic` - Anthropic Messages API
181
+ - `openai` - OpenAI Chat Completion API
182
+ - `responses` - OpenAI Responses API (for o-series, GPT-5, Codex)
183
+ - `codex_oauth` - OpenAI Codex CLI (OAuth-based, for ChatGPT Pro subscribers)
184
+ - `openrouter` - OpenRouter API (handling `reasoning_details` for interleaved thinking)
185
+ - `google` - Google Gemini API
186
+ - `bedrock` - AWS Bedrock for Claude(uses AWS credentials instead of api_key)
187
+
188
+ List configured providers and models:
189
+
190
+ ```bash
191
+ klaude list
192
+ ```
193
+
194
+ ### Cost Tracking
195
+
196
+ View aggregated usage statistics across all sessions:
197
+
198
+ ```bash
199
+ # Show all historical usage data
200
+ klaude cost
201
+
202
+ # Show usage for the last 7 days only
203
+ klaude cost --days 7
204
+ ```
205
+
206
+ ### Slash Commands
207
+
208
+ Inside the interactive session (`klaude`), use these commands to streamline your workflow:
209
+
210
+ - `/model` - Switch the active LLM during the session.
211
+ - `/thinking` - Configure model thinking/reasoning level.
212
+ - `/clear` - Clear the current conversation context.
213
+ - `/copy` - Copy last assistant message.
214
+ - `/status` - Show session usage statistics (cost, tokens, model breakdown).
215
+ - `/resume` - Select and resume a previous session.
216
+ - `/fork-session` - Fork current session to a new session ID (supports interactive fork point selection).
217
+ - `/export` - Export last assistant message to a temp Markdown file.
218
+ - `/export-online` - Export and deploy session to surge.sh as a static webpage.
219
+ - `/debug [filters]` - Toggle debug mode and configure debug filters.
220
+ - `/init` - Bootstrap a new project structure or module.
221
+ - `/dev-doc [feature]` - Generate a comprehensive execution plan for a feature.
222
+ - `/terminal-setup` - Configure terminal for Shift+Enter support.
223
+ - `/help` - List all available commands.
224
+
225
+
226
+ ### Input Shortcuts
227
+
228
+ | Key | Action |
229
+ | -------------------- | ------------------------------------------- |
230
+ | `Enter` | Submit input |
231
+ | `Shift+Enter` | Insert newline (requires `/terminal-setup`) |
232
+ | `Ctrl+J` | Insert newline |
233
+ | `Ctrl+L` | Open model picker overlay |
234
+ | `Ctrl+T` | Open thinking level picker overlay |
235
+ | `Ctrl+V` | Paste image from clipboard |
236
+ | `Left/Right` | Move cursor (wraps across lines) |
237
+ | `Backspace` | Delete character or selected text |
238
+ | `c` (with selection) | Copy selected text to clipboard |
239
+
240
+ ### Sub-Agents
241
+
242
+ The main agent can spawn specialized sub-agents for specific tasks:
243
+
244
+ | Sub-Agent | Purpose |
245
+ |-----------|---------|
246
+ | **Explore** | Fast codebase exploration - find files, search code, answer questions about the codebase |
247
+ | **Task** | Handle complex multi-step tasks autonomously |
248
+ | **WebAgent** | Search the web, fetch pages, and analyze content |
249
+ | **ImageGen** | Generate images from text prompts via OpenRouter Nano Banana Pro |
@@ -4,18 +4,22 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "klaude-code"
7
- version = "1.2.11"
8
- description = "Add your description here"
7
+ version = "2.10.1"
8
+ description = "Minimal code agent CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
11
11
  dependencies = [
12
12
  "anthropic>=0.66.0",
13
+ "chardet>=5.2.0",
14
+ "ddgs>=9.9.3",
15
+ "diff-match-patch>=20241021",
16
+ "filelock>=3.20.3",
17
+ "google-genai>=1.56.0",
18
+ "markdown-it-py>=4.0.0",
13
19
  "openai>=1.102.0",
14
- "pillow>=12.0.0",
15
20
  "prompt-toolkit>=3.0.52",
16
21
  "pydantic>=2.11.7",
17
22
  "pyyaml>=6.0.2",
18
- "questionary>=2.1.1",
19
23
  "rich>=14.1.0",
20
24
  "trafilatura>=2.0.0",
21
25
  "typer>=0.17.3",
@@ -23,17 +27,19 @@ dependencies = [
23
27
 
24
28
  [project.scripts]
25
29
  klaude = "klaude_code.cli.main:app"
30
+ klaude-code = "klaude_code.cli.main:app"
26
31
 
27
32
  [tool.uv.build-backend]
28
33
  module-name = "klaude_code"
29
34
 
30
35
  [dependency-groups]
31
36
  dev = [
37
+ "hypothesis>=6.148.8",
32
38
  "import-linter>=2.6",
33
- "isort>=6.0.1",
34
39
  "pyright>=1.1.407",
35
40
  "pytest>=8.4.1",
36
41
  "pytest-cov>=7.0.0",
42
+ "ty>=0.0.8",
37
43
  ]
38
44
 
39
45
 
@@ -45,6 +51,14 @@ markers = [
45
51
 
46
52
  [tool.ruff]
47
53
  line-length = 120
54
+ src = ["src"]
55
+
56
+ [tool.ruff.lint]
57
+ select = ["E", "F", "B", "I", "UP", "SIM", "RUF"]
58
+ ignore = ["RUF001", "RUF002", "RUF003", "E501"]
59
+
60
+ [tool.ruff.lint.isort]
61
+ known-first-party = ["klaude_code"]
48
62
 
49
63
  [tool.pyright]
50
64
  typeCheckingMode = "strict"
@@ -60,6 +74,15 @@ exclude = [".venv/"]
60
74
  root = "."
61
75
  extraPaths = ["src"]
62
76
 
77
+ [tool.ty.environment]
78
+ python-version = "3.13"
79
+
80
+ [tool.ty.src]
81
+ include = [
82
+ "src",
83
+ "tests",
84
+ ]
85
+
63
86
  [tool.importlinter]
64
87
  root_packages = ["klaude_code"]
65
88
  include_external_packages = false
@@ -69,10 +92,16 @@ name = "Layered architecture"
69
92
  type = "layers"
70
93
  layers = [
71
94
  "klaude_code.cli",
95
+ "klaude_code.tui",
96
+ "klaude_code.app",
97
+ "klaude_code.ui",
72
98
  "klaude_code.core",
99
+ "klaude_code.skill",
73
100
  "klaude_code.session",
74
101
  "klaude_code.config",
75
102
  "klaude_code.llm",
76
103
  "klaude_code.protocol",
104
+ "klaude_code.auth",
105
+ "klaude_code.log",
77
106
  "klaude_code.const",
78
107
  ]
@@ -0,0 +1,11 @@
1
+ """Application-layer runtime helpers.
2
+
3
+ This package coordinates core execution (Executor) with frontend displays.
4
+ Terminal-specific rendering and input handling live in `klaude_code.tui`.
5
+ """
6
+
7
+ from .runtime import AppInitConfig
8
+
9
+ __all__ = [
10
+ "AppInitConfig",
11
+ ]