klaude-code 1.2.11__tar.gz → 2.8.0__tar.gz

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