klaude-code 2.22.0__tar.gz → 2.24.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 (716) hide show
  1. {klaude_code-2.22.0 → klaude_code-2.24.0}/PKG-INFO +69 -11
  2. {klaude_code-2.22.0 → klaude_code-2.24.0}/README.md +64 -9
  3. {klaude_code-2.22.0 → klaude_code-2.24.0}/pyproject.toml +15 -4
  4. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/app/__init__.py +1 -1
  5. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/app/log_viewer.html +30 -4
  6. klaude_code-2.24.0/src/klaude_code/app/ports/__init__.py +5 -0
  7. klaude_code-2.24.0/src/klaude_code/app/ports/display.py +36 -0
  8. klaude_code-2.24.0/src/klaude_code/app/ports/input.py +21 -0
  9. klaude_code-2.24.0/src/klaude_code/app/ports/interaction.py +14 -0
  10. klaude_code-2.24.0/src/klaude_code/app/runtime.py +348 -0
  11. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/auth_cmd.py +25 -7
  12. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/config_cmd.py +6 -5
  13. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/cost_cmd.py +1 -6
  14. klaude_code-2.24.0/src/klaude_code/cli/list_model.py +304 -0
  15. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/main.py +95 -43
  16. klaude_code-2.24.0/src/klaude_code/cli/self_update.py +181 -0
  17. klaude_code-2.24.0/src/klaude_code/cli/web_cmd.py +66 -0
  18. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/__init__.py +2 -0
  19. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/assets/builtin_config.yaml +344 -195
  20. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/builtin_config.py +2 -2
  21. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/config.py +81 -19
  22. klaude_code-2.22.0/src/klaude_code/ui/common.py → klaude_code-2.24.0/src/klaude_code/config/formatters.py +8 -22
  23. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/sub_agent_model_helper.py +18 -7
  24. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/const.py +9 -11
  25. klaude_code-2.24.0/src/klaude_code/core/agent/__init__.py +3 -0
  26. {klaude_code-2.22.0/src/klaude_code/core → klaude_code-2.24.0/src/klaude_code/core/agent}/agent.py +3 -2
  27. {klaude_code-2.22.0/src/klaude_code/core → klaude_code-2.24.0/src/klaude_code/core/agent}/reminders.py +86 -132
  28. klaude_code-2.24.0/src/klaude_code/core/agent/runtime_agent_ops.py +895 -0
  29. klaude_code-2.24.0/src/klaude_code/core/agent/runtime_config_ops.py +576 -0
  30. klaude_code-2.24.0/src/klaude_code/core/agent/runtime_dispatcher.py +313 -0
  31. klaude_code-2.24.0/src/klaude_code/core/agent/runtime_llm.py +131 -0
  32. klaude_code-2.22.0/src/klaude_code/core/manager/sub_agent_manager.py → klaude_code-2.24.0/src/klaude_code/core/agent/runtime_sub_agent.py +73 -90
  33. klaude_code-2.24.0/src/klaude_code/core/agent/session_title.py +98 -0
  34. {klaude_code-2.22.0/src/klaude_code/core → klaude_code-2.24.0/src/klaude_code/core/agent}/task.py +18 -3
  35. {klaude_code-2.22.0/src/klaude_code/core → klaude_code-2.24.0/src/klaude_code/core/agent}/turn.py +80 -50
  36. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/agent_profile.py +11 -5
  37. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/compaction.py +95 -12
  38. klaude_code-2.24.0/src/klaude_code/core/control/__init__.py +16 -0
  39. klaude_code-2.24.0/src/klaude_code/core/control/event_bus.py +213 -0
  40. klaude_code-2.24.0/src/klaude_code/core/control/event_relay.py +182 -0
  41. klaude_code-2.24.0/src/klaude_code/core/control/runtime_facade.py +514 -0
  42. klaude_code-2.24.0/src/klaude_code/core/control/session_actor.py +541 -0
  43. klaude_code-2.24.0/src/klaude_code/core/control/session_meta_relay.py +217 -0
  44. klaude_code-2.24.0/src/klaude_code/core/control/session_registry.py +420 -0
  45. klaude_code-2.24.0/src/klaude_code/core/control/user_interaction.py +16 -0
  46. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/memory.py +57 -37
  47. klaude_code-2.24.0/src/klaude_code/core/prompts/auto-memory-prompt.md +111 -0
  48. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/system_prompt.py +48 -18
  49. klaude_code-2.22.0/src/klaude_code/tui/command/status_cmd.py → klaude_code-2.24.0/src/klaude_code/core/session_stats.py +20 -51
  50. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/__init__.py +0 -4
  51. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/agent_tool.md +1 -3
  52. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/agent_tool.py +12 -60
  53. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/ask_user_question_tool.md +2 -1
  54. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/ask_user_question_tool.py +57 -14
  55. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/context.py +9 -22
  56. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch_tool.py +57 -5
  57. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/diff_builder.py +16 -1
  58. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/edit_tool.py +7 -0
  59. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/read_tool.py +82 -2
  60. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/write_tool.py +13 -1
  61. klaude_code-2.24.0/src/klaude_code/core/tool/shell/bash_tool.md +5 -0
  62. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/bash_tool.py +57 -10
  63. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/command_safety.py +12 -14
  64. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool.md +1 -0
  65. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool.py +10 -3
  66. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_runner.py +50 -12
  67. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_fetch_tool.py +103 -9
  68. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_search_tool.py +70 -53
  69. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/client.py +7 -8
  70. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/bedrock_anthropic/client.py +0 -1
  71. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/claude/client.py +0 -1
  72. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/copilot/client.py +0 -2
  73. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/client.py +13 -9
  74. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/google_vertex/client.py +7 -2
  75. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/image.py +43 -18
  76. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/input_common.py +1 -6
  77. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_codex/client.py +0 -4
  78. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/client.py +0 -2
  79. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/stream.py +2 -5
  80. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/client.py +61 -25
  81. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/input.py +4 -1
  82. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/client.py +0 -2
  83. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/input.py +9 -0
  84. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/reasoning.py +1 -1
  85. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/stream_parts.py +8 -2
  86. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/log.py +3 -6
  87. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/__init__.py +0 -1
  88. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/events.py +208 -6
  89. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/message.py +25 -2
  90. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/model.py +69 -7
  91. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/model_id.py +8 -0
  92. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/op.py +77 -28
  93. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/op_handler.py +28 -3
  94. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/tools.py +0 -1
  95. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/user_interaction.py +28 -3
  96. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/session/codec.py +12 -4
  97. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/session/selector.py +5 -2
  98. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/session/session.py +277 -123
  99. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/session/store.py +116 -9
  100. klaude_code-2.24.0/src/klaude_code/skill/AGENTS.md +28 -0
  101. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/__init__.py +8 -1
  102. klaude_code-2.24.0/src/klaude_code/skill/assets/.git +1 -0
  103. klaude_code-2.24.0/src/klaude_code/skill/assets/.gitignore +2 -0
  104. klaude_code-2.24.0/src/klaude_code/skill/assets/SOURCES.md +3 -0
  105. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/SKILL.md +567 -0
  106. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/authentication.md +202 -0
  107. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/commands.md +264 -0
  108. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/profiling.md +120 -0
  109. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/proxy-support.md +194 -0
  110. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/session-management.md +193 -0
  111. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/snapshot-refs.md +194 -0
  112. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/references/video-recording.md +173 -0
  113. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/templates/authenticated-session.sh +105 -0
  114. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/templates/capture-workflow.sh +69 -0
  115. klaude_code-2.24.0/src/klaude_code/skill/assets/agent-browser/templates/form-automation.sh +62 -0
  116. klaude_code-2.24.0/src/klaude_code/skill/assets/download-yt-sub/SKILL.md +27 -0
  117. klaude_code-2.24.0/src/klaude_code/skill/assets/download-yt-sub/scripts/download_subtitles.sh +77 -0
  118. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/SKILL.md +61 -0
  119. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/3d.md +86 -0
  120. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/animations.md +27 -0
  121. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  122. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  123. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  124. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets.md +78 -0
  125. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/audio-visualization.md +198 -0
  126. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/audio.md +169 -0
  127. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/calculate-metadata.md +134 -0
  128. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/can-decode.md +75 -0
  129. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/charts.md +120 -0
  130. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/compositions.md +154 -0
  131. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/display-captions.md +184 -0
  132. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/extract-frames.md +229 -0
  133. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/ffmpeg.md +38 -0
  134. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/fonts.md +152 -0
  135. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/get-audio-duration.md +58 -0
  136. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  137. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-duration.md +60 -0
  138. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/gifs.md +141 -0
  139. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/images.md +134 -0
  140. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/import-srt-captions.md +69 -0
  141. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/light-leaks.md +73 -0
  142. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/lottie.md +70 -0
  143. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/maps.md +412 -0
  144. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  145. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-text.md +140 -0
  146. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/parameters.md +109 -0
  147. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/sequencing.md +118 -0
  148. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/sfx.md +30 -0
  149. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/subtitles.md +36 -0
  150. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/tailwind.md +11 -0
  151. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/text-animations.md +20 -0
  152. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/timing.md +179 -0
  153. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/transcribe-captions.md +70 -0
  154. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/transitions.md +197 -0
  155. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/transparent-videos.md +106 -0
  156. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/trimming.md +51 -0
  157. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/videos.md +171 -0
  158. klaude_code-2.24.0/src/klaude_code/skill/assets/remotion-best-practices/rules/voiceover.md +99 -0
  159. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/SKILL.md +9 -2
  160. klaude_code-2.24.0/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +431 -0
  161. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/loader.py +51 -3
  162. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/manager.py +28 -2
  163. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/__init__.py +0 -3
  164. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/__init__.py +6 -7
  165. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/command_abc.py +21 -4
  166. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/compact_cmd.py +5 -4
  167. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/continue_cmd.py +5 -5
  168. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/copy_cmd.py +6 -8
  169. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/debug_cmd.py +5 -5
  170. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/fork_session_cmd.py +29 -47
  171. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/login_cmd.py +9 -13
  172. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/logout_cmd.py +9 -13
  173. klaude_code-2.24.0/src/klaude_code/tui/command/model_cmd.py +40 -0
  174. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/new_cmd.py +4 -3
  175. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/refresh_cmd.py +4 -3
  176. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/registry.py +14 -36
  177. klaude_code-2.24.0/src/klaude_code/tui/command/status_cmd.py +20 -0
  178. klaude_code-2.24.0/src/klaude_code/tui/command/sub_agent_model_cmd.py +28 -0
  179. klaude_code-2.24.0/src/klaude_code/tui/command/thinking_cmd.py +24 -0
  180. klaude_code-2.22.0/src/klaude_code/protocol/commands.py → klaude_code-2.24.0/src/klaude_code/tui/command/types.py +1 -1
  181. klaude_code-2.24.0/src/klaude_code/tui/command/web_cmd.py +107 -0
  182. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/commands.py +19 -7
  183. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/command_output.py +57 -65
  184. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/developer.py +10 -22
  185. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/metadata.py +73 -49
  186. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/markdown.py +23 -0
  187. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/status.py +11 -16
  188. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/theme.py +7 -1
  189. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/sub_agent.py +4 -26
  190. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/tools.py +37 -9
  191. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/welcome.py +58 -24
  192. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/display.py +9 -4
  193. klaude_code-2.24.0/src/klaude_code/tui/input/__init__.py +0 -0
  194. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/completers.py +6 -3
  195. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/prompt_toolkit.py +81 -130
  196. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/machine.py +333 -142
  197. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/renderer.py +89 -55
  198. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/runner.py +306 -195
  199. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/ask_user_question.py +80 -15
  200. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/progress_bar.py +11 -5
  201. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/selector.py +6 -2
  202. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/session_selector.py +6 -2
  203. klaude_code-2.24.0/src/klaude_code/tui/terminal/title.py +118 -0
  204. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/update.py +154 -162
  205. klaude_code-2.24.0/src/klaude_code/web/__init__.py +5 -0
  206. klaude_code-2.24.0/src/klaude_code/web/app.py +146 -0
  207. klaude_code-2.24.0/src/klaude_code/web/display.py +21 -0
  208. klaude_code-2.24.0/src/klaude_code/web/dist/assets/abap-BdImnpbu.js +1 -0
  209. klaude_code-2.24.0/src/klaude_code/web/dist/assets/actionscript-3-CoDkCxhg.js +1 -0
  210. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ada-bCR0ucgS.js +1 -0
  211. klaude_code-2.24.0/src/klaude_code/web/dist/assets/andromeeda-C4gqWexZ.js +1 -0
  212. klaude_code-2.24.0/src/klaude_code/web/dist/assets/angular-html-CU67Zn6k.js +1 -0
  213. klaude_code-2.24.0/src/klaude_code/web/dist/assets/angular-ts-BwZT4LLn.js +1 -0
  214. klaude_code-2.24.0/src/klaude_code/web/dist/assets/apache-Pmp26Uib.js +1 -0
  215. klaude_code-2.24.0/src/klaude_code/web/dist/assets/apex-D8_7TLub.js +1 -0
  216. klaude_code-2.24.0/src/klaude_code/web/dist/assets/apl-dKokRX4l.js +1 -0
  217. klaude_code-2.24.0/src/klaude_code/web/dist/assets/applescript-Co6uUVPk.js +1 -0
  218. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ara-BRHolxvo.js +1 -0
  219. klaude_code-2.24.0/src/klaude_code/web/dist/assets/asciidoc-Ve4PFQV2.js +1 -0
  220. klaude_code-2.24.0/src/klaude_code/web/dist/assets/asm-D_Q5rh1f.js +1 -0
  221. klaude_code-2.24.0/src/klaude_code/web/dist/assets/astro-CbQHKStN.js +1 -0
  222. klaude_code-2.24.0/src/klaude_code/web/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
  223. klaude_code-2.24.0/src/klaude_code/web/dist/assets/awk-DMzUqQB5.js +1 -0
  224. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ayu-dark-DYE7WIF3.js +1 -0
  225. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ayu-light-BA47KaF1.js +1 -0
  226. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ayu-mirage-32ctXXKs.js +1 -0
  227. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ballerina-BFfxhgS-.js +1 -0
  228. klaude_code-2.24.0/src/klaude_code/web/dist/assets/bat-BkioyH1T.js +1 -0
  229. klaude_code-2.24.0/src/klaude_code/web/dist/assets/beancount-k_qm7-4y.js +1 -0
  230. klaude_code-2.24.0/src/klaude_code/web/dist/assets/berry-uYugtg8r.js +1 -0
  231. klaude_code-2.24.0/src/klaude_code/web/dist/assets/bibtex-CHM0blh-.js +1 -0
  232. klaude_code-2.24.0/src/klaude_code/web/dist/assets/bicep-Bmn6On1c.js +1 -0
  233. klaude_code-2.24.0/src/klaude_code/web/dist/assets/bird2-DPOp833l.js +1 -0
  234. klaude_code-2.24.0/src/klaude_code/web/dist/assets/blade-D4QpJJKB.js +1 -0
  235. klaude_code-2.24.0/src/klaude_code/web/dist/assets/bsl-BO_Y6i37.js +1 -0
  236. klaude_code-2.24.0/src/klaude_code/web/dist/assets/c-BIGW1oBm.js +1 -0
  237. klaude_code-2.24.0/src/klaude_code/web/dist/assets/c3-eo99z4R2.js +1 -0
  238. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cadence-Bv_4Rxtq.js +1 -0
  239. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cairo-KRGpt6FW.js +1 -0
  240. klaude_code-2.24.0/src/klaude_code/web/dist/assets/catppuccin-frappe-DFWUc33u.js +1 -0
  241. klaude_code-2.24.0/src/klaude_code/web/dist/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
  242. klaude_code-2.24.0/src/klaude_code/web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
  243. klaude_code-2.24.0/src/klaude_code/web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
  244. klaude_code-2.24.0/src/klaude_code/web/dist/assets/clarity-D53aC0YG.js +1 -0
  245. klaude_code-2.24.0/src/klaude_code/web/dist/assets/clojure-P80f7IUj.js +1 -0
  246. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cmake-D1j8_8rp.js +1 -0
  247. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cobol-nwyudZeR.js +1 -0
  248. klaude_code-2.24.0/src/klaude_code/web/dist/assets/codeowners-Bp6g37R7.js +1 -0
  249. klaude_code-2.24.0/src/klaude_code/web/dist/assets/codeql-DsOJ9woJ.js +1 -0
  250. klaude_code-2.24.0/src/klaude_code/web/dist/assets/coffee-Ch7k5sss.js +1 -0
  251. klaude_code-2.24.0/src/klaude_code/web/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
  252. klaude_code-2.24.0/src/klaude_code/web/dist/assets/coq-DkFqJrB1.js +1 -0
  253. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cpp-CofmeUqb.js +1 -0
  254. klaude_code-2.24.0/src/klaude_code/web/dist/assets/crystal-tKQVLTB8.js +1 -0
  255. klaude_code-2.24.0/src/klaude_code/web/dist/assets/csharp-COcwbKMJ.js +1 -0
  256. klaude_code-2.24.0/src/klaude_code/web/dist/assets/css-DPfMkruS.js +1 -0
  257. klaude_code-2.24.0/src/klaude_code/web/dist/assets/csv-fuZLfV_i.js +1 -0
  258. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cue-D82EKSYY.js +1 -0
  259. klaude_code-2.24.0/src/klaude_code/web/dist/assets/cypher-COkxafJQ.js +1 -0
  260. klaude_code-2.24.0/src/klaude_code/web/dist/assets/d-85-TOEBH.js +1 -0
  261. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dark-plus-C3mMm8J8.js +1 -0
  262. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dart-CF10PKvl.js +1 -0
  263. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dax-CEL-wOlO.js +1 -0
  264. klaude_code-2.24.0/src/klaude_code/web/dist/assets/desktop-BmXAJ9_W.js +1 -0
  265. klaude_code-2.24.0/src/klaude_code/web/dist/assets/diff-D97Zzqfu.js +1 -0
  266. klaude_code-2.24.0/src/klaude_code/web/dist/assets/docker-BcOcwvcX.js +1 -0
  267. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dotenv-Da5cRb03.js +1 -0
  268. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dracula-BzJJZx-M.js +1 -0
  269. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
  270. klaude_code-2.24.0/src/klaude_code/web/dist/assets/dream-maker-BtqSS_iP.js +1 -0
  271. klaude_code-2.24.0/src/klaude_code/web/dist/assets/edge-BkV0erSs.js +1 -0
  272. klaude_code-2.24.0/src/klaude_code/web/dist/assets/elixir-CDX3lj18.js +1 -0
  273. klaude_code-2.24.0/src/klaude_code/web/dist/assets/elm-DbKCFpqz.js +1 -0
  274. klaude_code-2.24.0/src/klaude_code/web/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
  275. klaude_code-2.24.0/src/klaude_code/web/dist/assets/erb-B12qg9BL.js +1 -0
  276. klaude_code-2.24.0/src/klaude_code/web/dist/assets/erlang-DsQrWhSR.js +1 -0
  277. klaude_code-2.24.0/src/klaude_code/web/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
  278. klaude_code-2.24.0/src/klaude_code/web/dist/assets/everforest-light-C8M2exoo.js +1 -0
  279. klaude_code-2.24.0/src/klaude_code/web/dist/assets/fennel-BYunw83y.js +1 -0
  280. klaude_code-2.24.0/src/klaude_code/web/dist/assets/fish-BvzEVeQv.js +1 -0
  281. klaude_code-2.24.0/src/klaude_code/web/dist/assets/fluent-C4IJs8-o.js +1 -0
  282. klaude_code-2.24.0/src/klaude_code/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  283. klaude_code-2.24.0/src/klaude_code/web/dist/assets/fortran-free-form-BxgE0vQu.js +1 -0
  284. klaude_code-2.24.0/src/klaude_code/web/dist/assets/fsharp-CXgrBDvD.js +1 -0
  285. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gdresource-BOOCDP_w.js +1 -0
  286. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gdscript-C5YyOfLZ.js +1 -0
  287. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gdshader-DkwncUOv.js +1 -0
  288. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-cyrillic-zHIGg2nG.woff2 +0 -0
  289. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-cyrillic-BAHUuRM7.woff2 +0 -0
  290. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-latin-DPcoTQLg.woff2 +0 -0
  291. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-latin-ext-E4_zqQR6.woff2 +0 -0
  292. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-latin-BSv3nOGs.woff2 +0 -0
  293. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-latin-ext-DavUKqbp.woff2 +0 -0
  294. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-cyrillic-BAE8rdXX.woff2 +0 -0
  295. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-cyrillic-2vK9sKgQ.woff2 +0 -0
  296. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-latin-Bq3uIZFr.woff2 +0 -0
  297. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-latin-ext-BVvsJehH.woff2 +0 -0
  298. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-latin-B9bzV8FE.woff2 +0 -0
  299. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-latin-ext-CtwMEpPj.woff2 +0 -0
  300. klaude_code-2.24.0/src/klaude_code/web/dist/assets/genie-D0YGMca9.js +1 -0
  301. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gherkin-DyxjwDmM.js +1 -0
  302. klaude_code-2.24.0/src/klaude_code/web/dist/assets/git-commit-F4YmCXRG.js +1 -0
  303. klaude_code-2.24.0/src/klaude_code/web/dist/assets/git-rebase-r7XF79zn.js +1 -0
  304. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-dark-DHJKELXO.js +1 -0
  305. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
  306. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  307. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  308. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-light-DAi9KRSo.js +1 -0
  309. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-light-default-D7oLnXFd.js +1 -0
  310. klaude_code-2.24.0/src/klaude_code/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  311. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gleam-BspZqrRM.js +1 -0
  312. klaude_code-2.24.0/src/klaude_code/web/dist/assets/glimmer-js-Rg0-pVw9.js +1 -0
  313. klaude_code-2.24.0/src/klaude_code/web/dist/assets/glimmer-ts-U6CK756n.js +1 -0
  314. klaude_code-2.24.0/src/klaude_code/web/dist/assets/glsl-DplSGwfg.js +1 -0
  315. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gn-n2N0HUVH.js +1 -0
  316. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gnuplot-DdkO51Og.js +1 -0
  317. klaude_code-2.24.0/src/klaude_code/web/dist/assets/go-CxLEBnE3.js +1 -0
  318. klaude_code-2.24.0/src/klaude_code/web/dist/assets/graphql-ChdNCCLP.js +1 -0
  319. klaude_code-2.24.0/src/klaude_code/web/dist/assets/groovy-gcz8RCvz.js +1 -0
  320. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  321. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  322. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  323. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  324. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  325. klaude_code-2.24.0/src/klaude_code/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  326. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hack-CaT9iCJl.js +1 -0
  327. klaude_code-2.24.0/src/klaude_code/web/dist/assets/haml-B8DHNrY2.js +1 -0
  328. klaude_code-2.24.0/src/klaude_code/web/dist/assets/handlebars-BL8al0AC.js +1 -0
  329. klaude_code-2.24.0/src/klaude_code/web/dist/assets/haskell-Df6bDoY_.js +1 -0
  330. klaude_code-2.24.0/src/klaude_code/web/dist/assets/haxe-CzTSHFRz.js +1 -0
  331. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hcl-BWvSN4gD.js +1 -0
  332. klaude_code-2.24.0/src/klaude_code/web/dist/assets/highlighted-body-B3W2YXNL-qIJJBbdQ.js +1 -0
  333. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hjson-D5-asLiD.js +1 -0
  334. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hlsl-D3lLCCz7.js +1 -0
  335. klaude_code-2.24.0/src/klaude_code/web/dist/assets/horizon-BUw7H-hv.js +1 -0
  336. klaude_code-2.24.0/src/klaude_code/web/dist/assets/horizon-bright-Cn-bp-IR.js +1 -0
  337. klaude_code-2.24.0/src/klaude_code/web/dist/assets/houston-DnULxvSX.js +1 -0
  338. klaude_code-2.24.0/src/klaude_code/web/dist/assets/html-GMplVEZG.js +1 -0
  339. klaude_code-2.24.0/src/klaude_code/web/dist/assets/html-derivative-BFtXZ54Q.js +1 -0
  340. klaude_code-2.24.0/src/klaude_code/web/dist/assets/http-jrhK8wxY.js +1 -0
  341. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hurl-irOxFIW8.js +1 -0
  342. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hxml-Bvhsp5Yf.js +1 -0
  343. klaude_code-2.24.0/src/klaude_code/web/dist/assets/hy-DFXneXwc.js +1 -0
  344. klaude_code-2.24.0/src/klaude_code/web/dist/assets/imba-DGztddWO.js +1 -0
  345. klaude_code-2.24.0/src/klaude_code/web/dist/assets/index-BL6qbKwg.css +1 -0
  346. klaude_code-2.24.0/src/klaude_code/web/dist/assets/index-DBqWrFD_.js +1895 -0
  347. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ini-BEwlwnbL.js +1 -0
  348. klaude_code-2.24.0/src/klaude_code/web/dist/assets/java-CylS5w8V.js +1 -0
  349. klaude_code-2.24.0/src/klaude_code/web/dist/assets/javascript-wDzz0qaB.js +1 -0
  350. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jinja-4LBKfQ-Z.js +1 -0
  351. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jison-wvAkD_A8.js +1 -0
  352. klaude_code-2.24.0/src/klaude_code/web/dist/assets/json-Cp-IABpG.js +1 -0
  353. klaude_code-2.24.0/src/klaude_code/web/dist/assets/json5-C9tS-k6U.js +1 -0
  354. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jsonc-Des-eS-w.js +1 -0
  355. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jsonl-DcaNXYhu.js +1 -0
  356. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jsonnet-DFQXde-d.js +1 -0
  357. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jssm-C2t-YnRu.js +1 -0
  358. klaude_code-2.24.0/src/klaude_code/web/dist/assets/jsx-g9-lgVsj.js +1 -0
  359. klaude_code-2.24.0/src/klaude_code/web/dist/assets/julia-CxzCAyBv.js +1 -0
  360. klaude_code-2.24.0/src/klaude_code/web/dist/assets/just-Cw27pwNe.js +1 -0
  361. klaude_code-2.24.0/src/klaude_code/web/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  362. klaude_code-2.24.0/src/klaude_code/web/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  363. klaude_code-2.24.0/src/klaude_code/web/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
  364. klaude_code-2.24.0/src/klaude_code/web/dist/assets/kdl-DV7GczEv.js +1 -0
  365. klaude_code-2.24.0/src/klaude_code/web/dist/assets/kotlin-BdnUsdx6.js +1 -0
  366. klaude_code-2.24.0/src/klaude_code/web/dist/assets/kusto-DZf3V79B.js +1 -0
  367. klaude_code-2.24.0/src/klaude_code/web/dist/assets/laserwave-DUszq2jm.js +1 -0
  368. klaude_code-2.24.0/src/klaude_code/web/dist/assets/latex-CWtU0Tv5.js +1 -0
  369. klaude_code-2.24.0/src/klaude_code/web/dist/assets/lean-BZvkOJ9d.js +1 -0
  370. klaude_code-2.24.0/src/klaude_code/web/dist/assets/less-B1dDrJ26.js +1 -0
  371. klaude_code-2.24.0/src/klaude_code/web/dist/assets/light-plus-B7mTdjB0.js +1 -0
  372. klaude_code-2.24.0/src/klaude_code/web/dist/assets/liquid-DYVedYrR.js +1 -0
  373. klaude_code-2.24.0/src/klaude_code/web/dist/assets/llvm-DjAJT7YJ.js +1 -0
  374. klaude_code-2.24.0/src/klaude_code/web/dist/assets/log-2UxHyX5q.js +1 -0
  375. klaude_code-2.24.0/src/klaude_code/web/dist/assets/logo-BtOb2qkB.js +1 -0
  376. klaude_code-2.24.0/src/klaude_code/web/dist/assets/lua-BaeVxFsk.js +1 -0
  377. klaude_code-2.24.0/src/klaude_code/web/dist/assets/luau-C-HG3fhB.js +1 -0
  378. klaude_code-2.24.0/src/klaude_code/web/dist/assets/make-CHLpvVh8.js +1 -0
  379. klaude_code-2.24.0/src/klaude_code/web/dist/assets/markdown-Cvjx9yec.js +1 -0
  380. klaude_code-2.24.0/src/klaude_code/web/dist/assets/marko-CnJfTvn9.js +1 -0
  381. klaude_code-2.24.0/src/klaude_code/web/dist/assets/material-theme-D5KoaKCx.js +1 -0
  382. klaude_code-2.24.0/src/klaude_code/web/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
  383. klaude_code-2.24.0/src/klaude_code/web/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  384. klaude_code-2.24.0/src/klaude_code/web/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
  385. klaude_code-2.24.0/src/klaude_code/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  386. klaude_code-2.24.0/src/klaude_code/web/dist/assets/matlab-D7o27uSR.js +1 -0
  387. klaude_code-2.24.0/src/klaude_code/web/dist/assets/mdc-BMNejdWA.js +1 -0
  388. klaude_code-2.24.0/src/klaude_code/web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
  389. klaude_code-2.24.0/src/klaude_code/web/dist/assets/mermaid-mWjccvbQ.js +1 -0
  390. klaude_code-2.24.0/src/klaude_code/web/dist/assets/min-dark-CafNBF8u.js +1 -0
  391. klaude_code-2.24.0/src/klaude_code/web/dist/assets/min-light-CTRr51gU.js +1 -0
  392. klaude_code-2.24.0/src/klaude_code/web/dist/assets/mipsasm-CKIfxQSi.js +1 -0
  393. klaude_code-2.24.0/src/klaude_code/web/dist/assets/mojo-rZm6bMo-.js +1 -0
  394. klaude_code-2.24.0/src/klaude_code/web/dist/assets/monokai-D4h5O-jR.js +1 -0
  395. klaude_code-2.24.0/src/klaude_code/web/dist/assets/moonbit-_H4v1dQx.js +1 -0
  396. klaude_code-2.24.0/src/klaude_code/web/dist/assets/move-IF9eRakj.js +1 -0
  397. klaude_code-2.24.0/src/klaude_code/web/dist/assets/narrat-DRg8JJMk.js +1 -0
  398. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nextflow-Zz6hmt5N.js +1 -0
  399. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nextflow-groovy-BeH2EWoN.js +1 -0
  400. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nginx-BpAMiNFr.js +1 -0
  401. klaude_code-2.24.0/src/klaude_code/web/dist/assets/night-owl-C39BiMTA.js +1 -0
  402. klaude_code-2.24.0/src/klaude_code/web/dist/assets/night-owl-light-CMTm3GFP.js +1 -0
  403. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nim-CVrawwO9.js +1 -0
  404. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nix-CwoSXNpI.js +1 -0
  405. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nord-Ddv68eIx.js +1 -0
  406. klaude_code-2.24.0/src/klaude_code/web/dist/assets/nushell-Cz2AlsmD.js +1 -0
  407. klaude_code-2.24.0/src/klaude_code/web/dist/assets/objective-c-DXmwc3jG.js +1 -0
  408. klaude_code-2.24.0/src/klaude_code/web/dist/assets/objective-cpp-CLxacb5B.js +1 -0
  409. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ocaml-C0hk2d4L.js +1 -0
  410. klaude_code-2.24.0/src/klaude_code/web/dist/assets/odin-BBf5iR-q.js +1 -0
  411. klaude_code-2.24.0/src/klaude_code/web/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  412. klaude_code-2.24.0/src/klaude_code/web/dist/assets/one-light-C3Wv6jpd.js +1 -0
  413. klaude_code-2.24.0/src/klaude_code/web/dist/assets/openscad-C4EeE6gA.js +1 -0
  414. klaude_code-2.24.0/src/klaude_code/web/dist/assets/pascal-D93ZcfNL.js +1 -0
  415. klaude_code-2.24.0/src/klaude_code/web/dist/assets/perl-C0TMdlhV.js +1 -0
  416. klaude_code-2.24.0/src/klaude_code/web/dist/assets/php-Dhbhpdrm.js +1 -0
  417. klaude_code-2.24.0/src/klaude_code/web/dist/assets/pierre-dark-BXuwtOqb.js +1 -0
  418. klaude_code-2.24.0/src/klaude_code/web/dist/assets/pierre-light-dckrK0oj.js +1 -0
  419. klaude_code-2.24.0/src/klaude_code/web/dist/assets/pkl-u5AG7uiY.js +1 -0
  420. klaude_code-2.24.0/src/klaude_code/web/dist/assets/plastic-3e1v2bzS.js +1 -0
  421. klaude_code-2.24.0/src/klaude_code/web/dist/assets/plsql-ChMvpjG-.js +1 -0
  422. klaude_code-2.24.0/src/klaude_code/web/dist/assets/po-BTJTHyun.js +1 -0
  423. klaude_code-2.24.0/src/klaude_code/web/dist/assets/poimandres-CS3Unz2-.js +1 -0
  424. klaude_code-2.24.0/src/klaude_code/web/dist/assets/polar-C0HS_06l.js +1 -0
  425. klaude_code-2.24.0/src/klaude_code/web/dist/assets/postcss-CXtECtnM.js +1 -0
  426. klaude_code-2.24.0/src/klaude_code/web/dist/assets/powerquery-CEu0bR-o.js +1 -0
  427. klaude_code-2.24.0/src/klaude_code/web/dist/assets/powershell-Dpen1YoG.js +1 -0
  428. klaude_code-2.24.0/src/klaude_code/web/dist/assets/prisma-Dd19v3D-.js +1 -0
  429. klaude_code-2.24.0/src/klaude_code/web/dist/assets/prolog-CbFg5uaA.js +1 -0
  430. klaude_code-2.24.0/src/klaude_code/web/dist/assets/proto-C7zT0LnQ.js +1 -0
  431. klaude_code-2.24.0/src/klaude_code/web/dist/assets/pug-CGlum2m_.js +1 -0
  432. klaude_code-2.24.0/src/klaude_code/web/dist/assets/puppet-BMWR74SV.js +1 -0
  433. klaude_code-2.24.0/src/klaude_code/web/dist/assets/purescript-CklMAg4u.js +1 -0
  434. klaude_code-2.24.0/src/klaude_code/web/dist/assets/python-B6aJPvgy.js +1 -0
  435. klaude_code-2.24.0/src/klaude_code/web/dist/assets/qml-3beO22l8.js +1 -0
  436. klaude_code-2.24.0/src/klaude_code/web/dist/assets/qmldir-C8lEn-DE.js +1 -0
  437. klaude_code-2.24.0/src/klaude_code/web/dist/assets/qss-IeuSbFQv.js +1 -0
  438. klaude_code-2.24.0/src/klaude_code/web/dist/assets/r-Dspwwk_N.js +1 -0
  439. klaude_code-2.24.0/src/klaude_code/web/dist/assets/racket-BqYA7rlc.js +1 -0
  440. klaude_code-2.24.0/src/klaude_code/web/dist/assets/raku-DXvB9xmW.js +1 -0
  441. klaude_code-2.24.0/src/klaude_code/web/dist/assets/razor-Uh8Bk_45.js +1 -0
  442. klaude_code-2.24.0/src/klaude_code/web/dist/assets/red-bN70gL4F.js +1 -0
  443. klaude_code-2.24.0/src/klaude_code/web/dist/assets/reg-C-SQnVFl.js +1 -0
  444. klaude_code-2.24.0/src/klaude_code/web/dist/assets/regexp-CDVJQ6XC.js +1 -0
  445. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rel-C3B-1QV4.js +1 -0
  446. klaude_code-2.24.0/src/klaude_code/web/dist/assets/riscv-BM1_JUlF.js +1 -0
  447. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ron-D8l8udqQ.js +1 -0
  448. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
  449. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rose-pine-moon-D4_iv3hh.js +1 -0
  450. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rose-pine-qdsjHGoJ.js +1 -0
  451. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rosmsg-BJDFO7_C.js +1 -0
  452. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rst-BrH8l1NY.js +1 -0
  453. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ruby-Dw2BHqvy.js +1 -0
  454. klaude_code-2.24.0/src/klaude_code/web/dist/assets/rust-B1yitclQ.js +1 -0
  455. klaude_code-2.24.0/src/klaude_code/web/dist/assets/sas-cz2c8ADy.js +1 -0
  456. klaude_code-2.24.0/src/klaude_code/web/dist/assets/sass-Cj5Yp3dK.js +1 -0
  457. klaude_code-2.24.0/src/klaude_code/web/dist/assets/scala-C151Ov-r.js +1 -0
  458. klaude_code-2.24.0/src/klaude_code/web/dist/assets/scheme-C98Dy4si.js +1 -0
  459. klaude_code-2.24.0/src/klaude_code/web/dist/assets/scss-OYdSNvt2.js +1 -0
  460. klaude_code-2.24.0/src/klaude_code/web/dist/assets/sdbl-DVxCFoDh.js +1 -0
  461. klaude_code-2.24.0/src/klaude_code/web/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
  462. klaude_code-2.24.0/src/klaude_code/web/dist/assets/shellscript-Yzrsuije.js +1 -0
  463. klaude_code-2.24.0/src/klaude_code/web/dist/assets/shellsession-BADoaaVG.js +1 -0
  464. klaude_code-2.24.0/src/klaude_code/web/dist/assets/slack-dark-BthQWCQV.js +1 -0
  465. klaude_code-2.24.0/src/klaude_code/web/dist/assets/slack-ochin-DqwNpetd.js +1 -0
  466. klaude_code-2.24.0/src/klaude_code/web/dist/assets/smalltalk-BERRCDM3.js +1 -0
  467. klaude_code-2.24.0/src/klaude_code/web/dist/assets/snazzy-light-Bw305WKR.js +1 -0
  468. klaude_code-2.24.0/src/klaude_code/web/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
  469. klaude_code-2.24.0/src/klaude_code/web/dist/assets/solarized-light-L9t79GZl.js +1 -0
  470. klaude_code-2.24.0/src/klaude_code/web/dist/assets/solidity-rGO070M0.js +1 -0
  471. klaude_code-2.24.0/src/klaude_code/web/dist/assets/soy-Brmx7dQM.js +1 -0
  472. klaude_code-2.24.0/src/klaude_code/web/dist/assets/sparql-rVzFXLq3.js +1 -0
  473. klaude_code-2.24.0/src/klaude_code/web/dist/assets/splunk-BtCnVYZw.js +1 -0
  474. klaude_code-2.24.0/src/klaude_code/web/dist/assets/sql-BLtJtn59.js +1 -0
  475. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ssh-config-_ykCGR6B.js +1 -0
  476. klaude_code-2.24.0/src/klaude_code/web/dist/assets/stata-BH5u7GGu.js +1 -0
  477. klaude_code-2.24.0/src/klaude_code/web/dist/assets/stylus-BEDo0Tqx.js +1 -0
  478. klaude_code-2.24.0/src/klaude_code/web/dist/assets/surrealql-Bq5Q-fJD.js +1 -0
  479. klaude_code-2.24.0/src/klaude_code/web/dist/assets/svelte-C_ipcX3V.js +1 -0
  480. klaude_code-2.24.0/src/klaude_code/web/dist/assets/swift-D82vCrfD.js +1 -0
  481. klaude_code-2.24.0/src/klaude_code/web/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
  482. klaude_code-2.24.0/src/klaude_code/web/dist/assets/system-verilog-CnnmHF94.js +1 -0
  483. klaude_code-2.24.0/src/klaude_code/web/dist/assets/systemd-4A_iFExJ.js +1 -0
  484. klaude_code-2.24.0/src/klaude_code/web/dist/assets/talonscript-CkByrt1z.js +1 -0
  485. klaude_code-2.24.0/src/klaude_code/web/dist/assets/tasl-QIJgUcNo.js +1 -0
  486. klaude_code-2.24.0/src/klaude_code/web/dist/assets/tcl-dwOrl1Do.js +1 -0
  487. klaude_code-2.24.0/src/klaude_code/web/dist/assets/templ-P3uqSqPl.js +1 -0
  488. klaude_code-2.24.0/src/klaude_code/web/dist/assets/terraform-BETggiCN.js +1 -0
  489. klaude_code-2.24.0/src/klaude_code/web/dist/assets/tex-idrVyKtj.js +1 -0
  490. klaude_code-2.24.0/src/klaude_code/web/dist/assets/tokyo-night-hegEt444.js +1 -0
  491. klaude_code-2.24.0/src/klaude_code/web/dist/assets/toml-vGWfd6FD.js +1 -0
  492. klaude_code-2.24.0/src/klaude_code/web/dist/assets/ts-tags-zn1MmPIZ.js +1 -0
  493. klaude_code-2.24.0/src/klaude_code/web/dist/assets/tsv-B_m7g4N7.js +1 -0
  494. klaude_code-2.24.0/src/klaude_code/web/dist/assets/tsx-COt5Ahok.js +1 -0
  495. klaude_code-2.24.0/src/klaude_code/web/dist/assets/turtle-BsS91CYL.js +1 -0
  496. klaude_code-2.24.0/src/klaude_code/web/dist/assets/twig-DNn4PbVi.js +1 -0
  497. klaude_code-2.24.0/src/klaude_code/web/dist/assets/typescript-BPQ3VLAy.js +1 -0
  498. klaude_code-2.24.0/src/klaude_code/web/dist/assets/typespec-BGHnOYBU.js +1 -0
  499. klaude_code-2.24.0/src/klaude_code/web/dist/assets/typst-DHCkPAjA.js +1 -0
  500. klaude_code-2.24.0/src/klaude_code/web/dist/assets/v-BcVCzyr7.js +1 -0
  501. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vala-CsfeWuGM.js +1 -0
  502. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vb-D17OF-Vu.js +1 -0
  503. klaude_code-2.24.0/src/klaude_code/web/dist/assets/verilog-BQ8w6xss.js +1 -0
  504. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vesper-DU1UobuO.js +1 -0
  505. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vhdl-CeAyd5Ju.js +1 -0
  506. klaude_code-2.24.0/src/klaude_code/web/dist/assets/viml-CJc9bBzg.js +1 -0
  507. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
  508. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
  509. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
  510. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vue-DN_0RTcg.js +1 -0
  511. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vue-html-AaS7Mt5G.js +1 -0
  512. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vue-vine-CQOfvN7w.js +1 -0
  513. klaude_code-2.24.0/src/klaude_code/web/dist/assets/vyper-CDx5xZoG.js +1 -0
  514. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wasm-CG6Dc4jp.js +1 -0
  515. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wasm-MzD3tlZU.js +1 -0
  516. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wenyan-BV7otONQ.js +1 -0
  517. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wgsl-Dx-B1_4e.js +1 -0
  518. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wikitext-BhOHFoWU.js +1 -0
  519. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wit-5i3qLPDT.js +1 -0
  520. klaude_code-2.24.0/src/klaude_code/web/dist/assets/wolfram-lXgVvXCa.js +1 -0
  521. klaude_code-2.24.0/src/klaude_code/web/dist/assets/xml-sdJ4AIDG.js +1 -0
  522. klaude_code-2.24.0/src/klaude_code/web/dist/assets/xsl-CtQFsRM5.js +1 -0
  523. klaude_code-2.24.0/src/klaude_code/web/dist/assets/yaml-Buea-lGh.js +1 -0
  524. klaude_code-2.24.0/src/klaude_code/web/dist/assets/zenscript-DVFEvuxE.js +1 -0
  525. klaude_code-2.24.0/src/klaude_code/web/dist/assets/zig-VOosw3JB.js +1 -0
  526. klaude_code-2.24.0/src/klaude_code/web/dist/favicon.svg +3 -0
  527. klaude_code-2.24.0/src/klaude_code/web/dist/index.html +14 -0
  528. klaude_code-2.24.0/src/klaude_code/web/file_access.py +52 -0
  529. klaude_code-2.24.0/src/klaude_code/web/interaction.py +56 -0
  530. klaude_code-2.24.0/src/klaude_code/web/live_events.py +51 -0
  531. klaude_code-2.24.0/src/klaude_code/web/routes/__init__.py +7 -0
  532. klaude_code-2.24.0/src/klaude_code/web/routes/config.py +84 -0
  533. klaude_code-2.24.0/src/klaude_code/web/routes/files.py +367 -0
  534. klaude_code-2.24.0/src/klaude_code/web/routes/sessions.py +469 -0
  535. klaude_code-2.24.0/src/klaude_code/web/routes/skills.py +37 -0
  536. klaude_code-2.24.0/src/klaude_code/web/routes/ws.py +649 -0
  537. klaude_code-2.24.0/src/klaude_code/web/server.py +329 -0
  538. klaude_code-2.24.0/src/klaude_code/web/session_access.py +75 -0
  539. klaude_code-2.24.0/src/klaude_code/web/session_index.py +396 -0
  540. klaude_code-2.24.0/src/klaude_code/web/session_live.py +212 -0
  541. klaude_code-2.24.0/src/klaude_code/web/state.py +41 -0
  542. klaude_code-2.22.0/src/klaude_code/app/runtime.py +0 -184
  543. klaude_code-2.22.0/src/klaude_code/cli/list_model.py +0 -650
  544. klaude_code-2.22.0/src/klaude_code/cli/self_update.py +0 -121
  545. klaude_code-2.22.0/src/klaude_code/core/executor.py +0 -1044
  546. klaude_code-2.22.0/src/klaude_code/core/manager/__init__.py +0 -17
  547. klaude_code-2.22.0/src/klaude_code/core/manager/llm_clients.py +0 -37
  548. klaude_code-2.22.0/src/klaude_code/core/manager/llm_clients_builder.py +0 -81
  549. klaude_code-2.22.0/src/klaude_code/core/prompts/auto-memory-prompt.md +0 -29
  550. klaude_code-2.22.0/src/klaude_code/core/tool/shell/bash_tool.md +0 -1
  551. klaude_code-2.22.0/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -3
  552. klaude_code-2.22.0/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -102
  553. klaude_code-2.22.0/src/klaude_code/core/user_interaction/__init__.py +0 -3
  554. klaude_code-2.22.0/src/klaude_code/core/user_interaction/manager.py +0 -114
  555. klaude_code-2.22.0/src/klaude_code/llm/partial_message.py +0 -5
  556. klaude_code-2.22.0/src/klaude_code/session/export.py +0 -1032
  557. klaude_code-2.22.0/src/klaude_code/session/templates/export_session.html +0 -2150
  558. klaude_code-2.22.0/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +0 -182
  559. klaude_code-2.22.0/src/klaude_code/tui/command/export_cmd.py +0 -53
  560. klaude_code-2.22.0/src/klaude_code/tui/command/model_cmd.py +0 -55
  561. klaude_code-2.22.0/src/klaude_code/tui/command/prompt-init.md +0 -45
  562. klaude_code-2.22.0/src/klaude_code/tui/command/prompt_command.py +0 -78
  563. klaude_code-2.22.0/src/klaude_code/tui/command/sub_agent_model_cmd.py +0 -238
  564. klaude_code-2.22.0/src/klaude_code/tui/command/thinking_cmd.py +0 -85
  565. klaude_code-2.22.0/src/klaude_code/tui/input/__init__.py +0 -9
  566. klaude_code-2.22.0/src/klaude_code/ui/__init__.py +0 -16
  567. klaude_code-2.22.0/src/klaude_code/ui/core/__init__.py +0 -1
  568. klaude_code-2.22.0/src/klaude_code/ui/core/display.py +0 -103
  569. klaude_code-2.22.0/src/klaude_code/ui/core/input.py +0 -72
  570. klaude_code-2.22.0/src/klaude_code/ui/terminal/__init__.py +0 -8
  571. klaude_code-2.22.0/src/klaude_code/ui/terminal/title.py +0 -38
  572. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/__init__.py +0 -0
  573. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/app/auth_flow.py +0 -0
  574. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/app/log_viewer.py +0 -0
  575. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/AGENTS.md +0 -0
  576. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/__init__.py +0 -0
  577. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/base.py +0 -0
  578. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/__init__.py +0 -0
  579. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/exceptions.py +0 -0
  580. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/oauth.py +0 -0
  581. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/token_manager.py +0 -0
  582. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/__init__.py +0 -0
  583. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/exceptions.py +0 -0
  584. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
  585. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/oauth.py +0 -0
  586. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/token_manager.py +0 -0
  587. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/__init__.py +0 -0
  588. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/exceptions.py +0 -0
  589. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/oauth.py +0 -0
  590. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/token_manager.py +0 -0
  591. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/auth/env.py +0 -0
  592. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/__init__.py +0 -0
  593. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/debug.py +0 -0
  594. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/cli/oauth_usage.py +0 -0
  595. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/assets/__init__.py +0 -0
  596. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/model_matcher.py +0 -0
  597. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/config/thinking.py +0 -0
  598. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/__init__.py +0 -0
  599. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/bash_mode.py +0 -0
  600. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/AGENTS.md +0 -0
  601. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/__init__.py +0 -0
  602. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/overflow.py +0 -0
  603. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/prompts.py +0 -0
  604. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/loaded_skills.py +0 -0
  605. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/base-system-prompt.md +0 -0
  606. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
  607. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
  608. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/rewind/__init__.py +0 -0
  609. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/rewind/manager.py +0 -0
  610. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/__init__.py +0 -0
  611. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/_utils.py +0 -0
  612. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
  613. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
  614. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
  615. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/read_tool.md +0 -0
  616. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/write_tool.md +0 -0
  617. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/offload.py +0 -0
  618. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/report_back_tool.py +0 -0
  619. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/rewind_tool.md +0 -0
  620. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/rewind_tool.py +0 -0
  621. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/__init__.py +0 -0
  622. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/__init__.py +0 -0
  623. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
  624. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_abc.py +0 -0
  625. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_registry.py +0 -0
  626. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/__init__.py +0 -0
  627. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/external_content.py +0 -0
  628. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/ssrf.py +0 -0
  629. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_cache.py +0 -0
  630. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
  631. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
  632. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/__init__.py +0 -0
  633. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/__init__.py +0 -0
  634. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/input.py +0 -0
  635. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/bedrock_anthropic/__init__.py +0 -0
  636. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/claude/__init__.py +0 -0
  637. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/client.py +0 -0
  638. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/copilot/__init__.py +0 -0
  639. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/__init__.py +0 -0
  640. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/input.py +0 -0
  641. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/google_vertex/__init__.py +0 -0
  642. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/json_stable.py +0 -0
  643. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_codex/__init__.py +0 -0
  644. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
  645. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/input.py +0 -0
  646. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/__init__.py +0 -0
  647. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/__init__.py +0 -0
  648. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/registry.py +0 -0
  649. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/llm/usage.py +0 -0
  650. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/llm_param.py +0 -0
  651. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/AGENTS.md +0 -0
  652. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
  653. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
  654. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/general_purpose.py +0 -0
  655. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/session/__init__.py +0 -0
  656. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
  657. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/executing-plans/SKILL.md +0 -0
  658. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/frontend-design/SKILL.md +0 -0
  659. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/LICENSE.txt +0 -0
  660. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/SKILL.md +0 -0
  661. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/cli.md +0 -0
  662. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/codex-network.md +0 -0
  663. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/image-api.md +0 -0
  664. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/prompting.md +0 -0
  665. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/sample-prompts.md +0 -0
  666. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/scripts/image_gen.py +0 -0
  667. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/SKILL.md +0 -0
  668. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/cli.md +0 -0
  669. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/gemini-api.md +0 -0
  670. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/prompting.md +0 -0
  671. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/sample-prompts.md +0 -0
  672. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/vertex-setup.md +0 -0
  673. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/scripts/gemini_image_gen.py +0 -0
  674. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/SKILL.md +0 -0
  675. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/forms.md +0 -0
  676. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/reference.md +0 -0
  677. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/check_bounding_boxes.py +0 -0
  678. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/check_fillable_fields.py +0 -0
  679. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/convert_pdf_to_images.py +0 -0
  680. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/create_validation_image.py +0 -0
  681. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_field_info.py +0 -0
  682. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_structure.py +0 -0
  683. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/fill_fillable_fields.py +0 -0
  684. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
  685. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/.gitignore +0 -0
  686. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/bun.lock +0 -0
  687. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/package.json +0 -0
  688. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/session-logs/SKILL.md +0 -0
  689. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
  690. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/web-search/SKILL.md +0 -0
  691. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/writing-plans/SKILL.md +0 -0
  692. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/skill/system_skills.py +0 -0
  693. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/auth_selector.py +0 -0
  694. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/model_picker.py +0 -0
  695. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/__init__.py +0 -0
  696. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/bash_syntax.py +0 -0
  697. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/common.py +0 -0
  698. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/diffs.py +0 -0
  699. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/errors.py +0 -0
  700. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/__init__.py +0 -0
  701. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/cjk_wrap.py +0 -0
  702. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/code_panel.py +0 -0
  703. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/live.py +0 -0
  704. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/quote.py +0 -0
  705. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/thinking.py +0 -0
  706. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/user_input.py +0 -0
  707. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/AGENTS.md +0 -0
  708. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/drag_drop.py +0 -0
  709. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/images.py +0 -0
  710. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/key_bindings.py +0 -0
  711. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/paste.py +0 -0
  712. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/__init__.py +0 -0
  713. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/color.py +0 -0
  714. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/control.py +0 -0
  715. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/image.py +0 -0
  716. {klaude_code-2.22.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/notifier.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 2.22.0
3
+ Version: 2.24.0
4
4
  Summary: Minimal code agent CLI
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: chardet>=5.2.0,<6
7
- Requires-Dist: ddgs>=9.9.3
8
7
  Requires-Dist: diff-match-patch>=20241021
9
8
  Requires-Dist: filelock>=3.20.3
9
+ Requires-Dist: fastapi
10
10
  Requires-Dist: google-genai>=1.56.0
11
11
  Requires-Dist: markdown-it-py>=4.0.0
12
12
  Requires-Dist: openai>=2.24.0
@@ -15,8 +15,11 @@ Requires-Dist: pydantic>=2.11.7
15
15
  Requires-Dist: python-socks>=2.8.1
16
16
  Requires-Dist: pyyaml>=6.0.2
17
17
  Requires-Dist: rich>=14.1.0
18
+ Requires-Dist: sse-starlette
18
19
  Requires-Dist: trafilatura>=2.0.0
19
20
  Requires-Dist: typer>=0.17.3
21
+ Requires-Dist: uvicorn
22
+ Requires-Dist: readability-lxml>=0.8.4.1
20
23
  Requires-Python: >=3.13
21
24
  Description-Content-Type: text/markdown
22
25
 
@@ -57,6 +60,25 @@ Or use the built-in command:
57
60
  klaude upgrade
58
61
  ```
59
62
 
63
+ ### Development Install
64
+
65
+ ```bash
66
+ git clone https://github.com/inspirepan/klaude-code.git
67
+ cd klaude-code
68
+ make install # init submodules, build web frontend, install as editable
69
+ ```
70
+
71
+ Or step by step:
72
+
73
+ ```bash
74
+ git submodule update --init --recursive
75
+ uv sync # install Python deps
76
+ uv run python scripts/build_web.py # build web frontend
77
+ uv tool install -e . # install CLI globally (editable)
78
+ ```
79
+
80
+ Requires `pnpm` or `npm` for the web frontend build (`pnpm` preferred).
81
+
60
82
  ## Usage
61
83
 
62
84
  ```bash
@@ -96,7 +118,8 @@ export OPENAI_API_KEY=sk-xxx # GPT models
96
118
  export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
97
119
  export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
98
120
  export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
99
- export BRAVE_API_KEY=BSA-xxx # Brave Search (optional, enhances web search)
121
+ export BRAVE_API_KEY=BSA-xxx # Brave Search (optional, WebSearch provider)
122
+ export EXA_API_KEY=exa-xxx # Exa Search (optional, WebSearch provider)
100
123
 
101
124
  # Then just run:
102
125
  klaude
@@ -104,16 +127,39 @@ klaude
104
127
 
105
128
  On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
106
129
 
130
+ You can also configure fallback lists for helper models:
131
+
132
+ ```yaml
133
+ fast_model:
134
+ - haiku
135
+ - gemini-flash
136
+ - gpt-5-nano
137
+
138
+ compact_model:
139
+ - gemini-flash
140
+ - haiku
141
+ ```
142
+
143
+ Klaude tries these entries in order and uses the first available model. `fast_model` is used for session-title generation; `compact_model` is used for compact/helper tasks.
144
+
107
145
  #### Built-in Providers
108
146
 
109
- | Provider | Env Variable | Models |
110
- |-------------|-----------------------|-------------------------------------------------------------------------------|
111
- | anthropic | `ANTHROPIC_API_KEY` | sonnet, opus |
112
- | openai | `OPENAI_API_KEY` | gpt-5.2 |
113
- | openrouter | `OPENROUTER_API_KEY` | gpt-5.2, gpt-5.2-fast, gpt-5.1-codex-max, sonnet, opus, haiku, kimi, gemini-* |
114
- | deepseek | `DEEPSEEK_API_KEY` | deepseek |
115
- | moonshot | `MOONSHOT_API_KEY` | kimi@moonshot |
116
- | codex | N/A (OAuth) | gpt-5.2-codex (requires ChatGPT Pro subscription) |
147
+ | Provider | Env Variable | Models |
148
+ |------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
149
+ | anthropic | `ANTHROPIC_API_KEY` | sonnet, sonnet-no-thinking, opus, haiku |
150
+ | openai | `OPENAI_API_KEY` | gpt-5.4-high, gpt-5.4-xhigh, gpt-5.3-codex, gpt-5.3-codex-xhigh |
151
+ | openrouter | `OPENROUTER_API_KEY` | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, kimi, haiku, sonnet, sonnet-no-thinking, opus, gemini-pro, gemini-flash, grok, minimax, glm |
152
+ | google | `GOOGLE_API_KEY` or `GEMINI_API_KEY` | gemini-pro, gemini-flash |
153
+ | google-vertex | `GOOGLE_APPLICATION_CREDENTIALS`, `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_LOCATION` | gemini-pro, gemini-flash |
154
+ | bedrock | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` | sonnet |
155
+ | deepseek | `DEEPSEEK_API_KEY` | deepseek |
156
+ | moonshot | `MOONSHOT_API_KEY` | kimi |
157
+ | cerebras | `CEREBRAS_API_KEY` | glm |
158
+ | claude-max | N/A (OAuth) | sonnet, sonnet-no-thinking, opus, haiku |
159
+ | codex | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh |
160
+ | github-copilot | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, sonnet, sonnet-4.5, haiku, opus |
161
+ | ark-api | `ARK_API_KEY` | seed-pro, seed-code |
162
+ | ark-coding-plan | `ARK_API_KEY` | seed-code, kimi |
117
163
 
118
164
  List all configured providers and models:
119
165
 
@@ -167,6 +213,17 @@ You can add custom models to built-in providers or define new ones. Configuratio
167
213
 
168
214
  ```yaml
169
215
  # ~/.klaude/klaude-config.yaml
216
+ main_model: opus
217
+
218
+ fast_model:
219
+ - haiku
220
+ - gemini-flash
221
+ - gpt-5-nano
222
+
223
+ compact_model:
224
+ - gemini-flash
225
+ - haiku
226
+
170
227
  provider_list:
171
228
  # Add/Override models for built-in OpenRouter provider
172
229
  - provider_name: openrouter
@@ -196,6 +253,7 @@ provider_list:
196
253
  - **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
197
254
  - **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
198
255
  - **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
256
+ - **Model Preference Lists**: `fast_model` and `compact_model` accept either a single string or a list of model selectors. When you provide a list, Klaude tries them in order and picks the first available one.
199
257
 
200
258
  ##### Sub-agent Model Configuration
201
259
 
@@ -35,6 +35,25 @@ Or use the built-in command:
35
35
  klaude upgrade
36
36
  ```
37
37
 
38
+ ### Development Install
39
+
40
+ ```bash
41
+ git clone https://github.com/inspirepan/klaude-code.git
42
+ cd klaude-code
43
+ make install # init submodules, build web frontend, install as editable
44
+ ```
45
+
46
+ Or step by step:
47
+
48
+ ```bash
49
+ git submodule update --init --recursive
50
+ uv sync # install Python deps
51
+ uv run python scripts/build_web.py # build web frontend
52
+ uv tool install -e . # install CLI globally (editable)
53
+ ```
54
+
55
+ Requires `pnpm` or `npm` for the web frontend build (`pnpm` preferred).
56
+
38
57
  ## Usage
39
58
 
40
59
  ```bash
@@ -74,7 +93,8 @@ export OPENAI_API_KEY=sk-xxx # GPT models
74
93
  export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
75
94
  export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
76
95
  export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
77
- export BRAVE_API_KEY=BSA-xxx # Brave Search (optional, enhances web search)
96
+ export BRAVE_API_KEY=BSA-xxx # Brave Search (optional, WebSearch provider)
97
+ export EXA_API_KEY=exa-xxx # Exa Search (optional, WebSearch provider)
78
98
 
79
99
  # Then just run:
80
100
  klaude
@@ -82,16 +102,39 @@ klaude
82
102
 
83
103
  On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
84
104
 
105
+ You can also configure fallback lists for helper models:
106
+
107
+ ```yaml
108
+ fast_model:
109
+ - haiku
110
+ - gemini-flash
111
+ - gpt-5-nano
112
+
113
+ compact_model:
114
+ - gemini-flash
115
+ - haiku
116
+ ```
117
+
118
+ Klaude tries these entries in order and uses the first available model. `fast_model` is used for session-title generation; `compact_model` is used for compact/helper tasks.
119
+
85
120
  #### Built-in Providers
86
121
 
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) |
122
+ | Provider | Env Variable | Models |
123
+ |------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
124
+ | anthropic | `ANTHROPIC_API_KEY` | sonnet, sonnet-no-thinking, opus, haiku |
125
+ | openai | `OPENAI_API_KEY` | gpt-5.4-high, gpt-5.4-xhigh, gpt-5.3-codex, gpt-5.3-codex-xhigh |
126
+ | openrouter | `OPENROUTER_API_KEY` | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, kimi, haiku, sonnet, sonnet-no-thinking, opus, gemini-pro, gemini-flash, grok, minimax, glm |
127
+ | google | `GOOGLE_API_KEY` or `GEMINI_API_KEY` | gemini-pro, gemini-flash |
128
+ | google-vertex | `GOOGLE_APPLICATION_CREDENTIALS`, `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_LOCATION` | gemini-pro, gemini-flash |
129
+ | bedrock | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` | sonnet |
130
+ | deepseek | `DEEPSEEK_API_KEY` | deepseek |
131
+ | moonshot | `MOONSHOT_API_KEY` | kimi |
132
+ | cerebras | `CEREBRAS_API_KEY` | glm |
133
+ | claude-max | N/A (OAuth) | sonnet, sonnet-no-thinking, opus, haiku |
134
+ | codex | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh |
135
+ | github-copilot | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, sonnet, sonnet-4.5, haiku, opus |
136
+ | ark-api | `ARK_API_KEY` | seed-pro, seed-code |
137
+ | ark-coding-plan | `ARK_API_KEY` | seed-code, kimi |
95
138
 
96
139
  List all configured providers and models:
97
140
 
@@ -145,6 +188,17 @@ You can add custom models to built-in providers or define new ones. Configuratio
145
188
 
146
189
  ```yaml
147
190
  # ~/.klaude/klaude-config.yaml
191
+ main_model: opus
192
+
193
+ fast_model:
194
+ - haiku
195
+ - gemini-flash
196
+ - gpt-5-nano
197
+
198
+ compact_model:
199
+ - gemini-flash
200
+ - haiku
201
+
148
202
  provider_list:
149
203
  # Add/Override models for built-in OpenRouter provider
150
204
  - provider_name: openrouter
@@ -174,6 +228,7 @@ provider_list:
174
228
  - **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
175
229
  - **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
176
230
  - **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
231
+ - **Model Preference Lists**: `fast_model` and `compact_model` accept either a single string or a list of model selectors. When you provide a list, Klaude tries them in order and picks the first available one.
177
232
 
178
233
  ##### Sub-agent Model Configuration
179
234
 
@@ -4,16 +4,16 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "klaude-code"
7
- version = "2.22.0"
7
+ version = "2.24.0"
8
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
13
  "chardet>=5.2.0,<6",
14
- "ddgs>=9.9.3",
15
14
  "diff-match-patch>=20241021",
16
15
  "filelock>=3.20.3",
16
+ "fastapi",
17
17
  "google-genai>=1.56.0",
18
18
  "markdown-it-py>=4.0.0",
19
19
  "openai>=2.24.0",
@@ -22,8 +22,11 @@ dependencies = [
22
22
  "python-socks>=2.8.1",
23
23
  "pyyaml>=6.0.2",
24
24
  "rich>=14.1.0",
25
+ "sse-starlette",
25
26
  "trafilatura>=2.0.0",
26
27
  "typer>=0.17.3",
28
+ "uvicorn",
29
+ "readability-lxml>=0.8.4.1",
27
30
  ]
28
31
 
29
32
  [project.scripts]
@@ -32,6 +35,9 @@ klaude-code = "klaude_code.cli.main:app"
32
35
 
33
36
  [tool.uv.build-backend]
34
37
  module-name = "klaude_code"
38
+ # web/dist is gitignored by the generic `dist/` pattern; force-include so
39
+ # sdist (and wheels built from sdist) still contain the pre-built frontend.
40
+ source-include = ["src/klaude_code/web/dist/**"]
35
41
 
36
42
  [dependency-groups]
37
43
  dev = [
@@ -40,6 +46,7 @@ dev = [
40
46
  "pyright>=1.1.407",
41
47
  "pytest>=8.4.1",
42
48
  "pytest-cov>=7.0.0",
49
+ "pytest-timeout>=2.4.0",
43
50
  "ruff==0.14.3",
44
51
  "ty>=0.0.8",
45
52
  ]
@@ -47,6 +54,7 @@ dev = [
47
54
 
48
55
 
49
56
  [tool.pytest.ini_options]
57
+ timeout = 30
50
58
  markers = [
51
59
  "network: marks tests as requiring network access (deselect with '-m \"not network\"')",
52
60
  ]
@@ -54,6 +62,7 @@ markers = [
54
62
  [tool.ruff]
55
63
  line-length = 120
56
64
  src = ["src"]
65
+ exclude = ["src/klaude_code/skill/assets"]
57
66
 
58
67
  [tool.ruff.lint]
59
68
  select = ["E", "F", "B", "I", "UP", "SIM", "RUF"]
@@ -72,7 +81,9 @@ reportMissingImports = "warning"
72
81
  reportMissingModuleSource = "warning"
73
82
  exclude = [
74
83
  ".venv/",
75
- "src/klaude_code/skill/assets/**/scripts/",
84
+ ".pnpm-store/",
85
+ "web/node_modules/",
86
+ "src/klaude_code/skill/assets/",
76
87
  ]
77
88
 
78
89
  [[tool.pyright.executionEnvironments]]
@@ -98,8 +109,8 @@ type = "layers"
98
109
  layers = [
99
110
  "klaude_code.cli",
100
111
  "klaude_code.tui",
112
+ "klaude_code.web",
101
113
  "klaude_code.app",
102
- "klaude_code.ui",
103
114
  "klaude_code.core",
104
115
  "klaude_code.skill",
105
116
  "klaude_code.session",
@@ -1,6 +1,6 @@
1
1
  """Application-layer runtime helpers.
2
2
 
3
- This package coordinates core execution (Executor) with frontend displays.
3
+ This package coordinates core execution (RuntimeFacade) with frontend displays.
4
4
  Terminal-specific rendering and input handling live in `klaude_code.tui`.
5
5
  """
6
6
 
@@ -201,6 +201,8 @@ body {
201
201
  .log-line .dtype-RESPONSE { color: #5b21b6; background: #ede9fe; }
202
202
  .log-line .dtype-EXECUTION { color: #0f766e; background: #ccfbf1; }
203
203
  .log-line .dtype-TERMINAL { color: #be123c; background: #ffe4e6; }
204
+ .log-line .dtype-OPERATION { color: #1e1b4b; background: #e0e7ff; }
205
+ .log-line .dtype-EVENT_BUS { color: #6d28d9; background: #f3e8ff; }
204
206
  .log-line .msg { color: var(--fg-secondary); }
205
207
  .log-line .json-inline { color: var(--fg-tertiary); }
206
208
  .log-line .lineno {
@@ -233,11 +235,14 @@ body {
233
235
  #right {
234
236
  width: 50%;
235
237
  min-width: 300px;
236
- display: flex;
238
+ display: none;
237
239
  flex-direction: column;
238
240
  background: var(--bg-surface);
239
241
  border-left: 1px solid var(--border);
240
242
  }
243
+ #right.open {
244
+ display: flex;
245
+ }
241
246
  #right-toolbar {
242
247
  display: flex;
243
248
  align-items: center;
@@ -380,6 +385,7 @@ body {
380
385
 
381
386
  /* Resize handle */
382
387
  #resize-handle {
388
+ display: none;
383
389
  width: 4px;
384
390
  cursor: col-resize;
385
391
  background: transparent;
@@ -391,6 +397,7 @@ body {
391
397
  margin-left: -2px;
392
398
  margin-right: -2px;
393
399
  }
400
+ #resize-handle.open { display: block; }
394
401
  #resize-handle:hover, #resize-handle.dragging { background: var(--border-strong); }
395
402
  </style>
396
403
  </head>
@@ -413,6 +420,7 @@ body {
413
420
  <button class="action-btn" id="btn-expand-all" title="Expand all">Expand All</button>
414
421
  <button class="action-btn" id="btn-collapse-all" title="Collapse all">Collapse All</button>
415
422
  <button class="action-btn" id="btn-raw" title="Toggle raw text">Raw</button>
423
+ <button class="action-btn" id="btn-close-panel" title="Close panel" style="padding:4px 8px;">&#x2715;</button>
416
424
  </div>
417
425
  <div id="json-view"><span class="empty-hint">Select a log line to view details</span></div>
418
426
  </div>
@@ -420,8 +428,8 @@ body {
420
428
 
421
429
  <script>
422
430
  const LOG_RE = /^\[([^\]]+)\]\s+(\S+)\s+(.*)/;
423
- const ALL_TYPES = ['GENERAL','LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM','UI_EVENT','RESPONSE','EXECUTION','TERMINAL'];
424
- const DEFAULT_FILTERS = new Set(['LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM']);
431
+ const ALL_TYPES = ['GENERAL','LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM','OPERATION','EVENT_BUS','UI_EVENT','RESPONSE','EXECUTION','TERMINAL'];
432
+ const DEFAULT_FILTERS = new Set(['LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM','OPERATION']);
425
433
 
426
434
  let logLines = [];
427
435
  let selectedIdx = -1;
@@ -436,7 +444,7 @@ function setViewerMode(mode) {
436
444
  document.getElementById('btn-back-list').style.display = isLogMode ? '' : 'none';
437
445
  document.getElementById('search-box').style.display = isLogMode ? '' : 'none';
438
446
  document.getElementById('filter-group').style.display = isLogMode ? '' : 'none';
439
- for (const id of ['btn-copy', 'btn-expand-all', 'btn-collapse-all', 'btn-raw']) {
447
+ for (const id of ['btn-copy', 'btn-expand-all', 'btn-collapse-all', 'btn-raw', 'btn-close-panel']) {
440
448
  document.getElementById(id).disabled = !isLogMode;
441
449
  }
442
450
  }
@@ -651,7 +659,23 @@ function renderLogList() {
651
659
  list.appendChild(frag);
652
660
  }
653
661
 
662
+ function openRightPanel() {
663
+ document.getElementById('right').classList.add('open');
664
+ document.getElementById('resize-handle').classList.add('open');
665
+ }
666
+
667
+ function closeRightPanel() {
668
+ document.getElementById('right').classList.remove('open');
669
+ document.getElementById('resize-handle').classList.remove('open');
670
+ const list = document.getElementById('log-list');
671
+ if (selectedIdx >= 0 && list.children[selectedIdx]) {
672
+ list.children[selectedIdx].classList.remove('selected');
673
+ }
674
+ selectedIdx = -1;
675
+ }
676
+
654
677
  function selectLine(idx) {
678
+ openRightPanel();
655
679
  const list = document.getElementById('log-list');
656
680
  if (selectedIdx >= 0 && list.children[selectedIdx]) {
657
681
  list.children[selectedIdx].classList.remove('selected');
@@ -853,6 +877,8 @@ document.getElementById('btn-collapse-all').addEventListener('click', () => {
853
877
  });
854
878
  });
855
879
 
880
+ document.getElementById('btn-close-panel').addEventListener('click', closeRightPanel);
881
+
856
882
  document.getElementById('btn-raw').addEventListener('click', () => {
857
883
  if (selectedIdx < 0) return;
858
884
  const entry = logLines[selectedIdx];
@@ -0,0 +1,5 @@
1
+ from .display import DisplayABC
2
+ from .input import InputProviderABC
3
+ from .interaction import InteractionHandlerABC
4
+
5
+ __all__ = ["DisplayABC", "InputProviderABC", "InteractionHandlerABC"]
@@ -0,0 +1,36 @@
1
+ from abc import ABC, abstractmethod
2
+ from asyncio import Queue
3
+
4
+ from klaude_code.log import log
5
+ from klaude_code.protocol import events
6
+
7
+
8
+ class DisplayABC(ABC):
9
+ @abstractmethod
10
+ async def consume_envelope(self, envelope: events.EventEnvelope) -> None:
11
+ pass
12
+
13
+ @abstractmethod
14
+ async def start(self) -> None:
15
+ pass
16
+
17
+ @abstractmethod
18
+ async def stop(self) -> None:
19
+ pass
20
+
21
+ async def consume_event_loop(self, q: Queue[events.EventEnvelope]) -> None:
22
+ await self.start()
23
+ while True:
24
+ envelope = await q.get()
25
+ try:
26
+ if isinstance(envelope.event, events.EndEvent):
27
+ await self.stop()
28
+ break
29
+ await self.consume_envelope(envelope)
30
+ except Exception as e:
31
+ import traceback
32
+
33
+ log(f"Error in consume_event_loop, {e.__class__.__name__}, {e}")
34
+ log(traceback.format_exc())
35
+ finally:
36
+ q.task_done()
@@ -0,0 +1,21 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import ABC, abstractmethod
4
+ from collections.abc import AsyncIterator
5
+
6
+ from klaude_code.protocol.message import UserInputPayload
7
+
8
+
9
+ class InputProviderABC(ABC):
10
+ @abstractmethod
11
+ async def start(self) -> None:
12
+ pass
13
+
14
+ @abstractmethod
15
+ async def stop(self) -> None:
16
+ pass
17
+
18
+ @abstractmethod
19
+ async def iter_inputs(self) -> AsyncIterator[UserInputPayload]:
20
+ raise NotImplementedError
21
+ yield UserInputPayload(text="")
@@ -0,0 +1,14 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import ABC, abstractmethod
4
+
5
+ from klaude_code.protocol import events, user_interaction
6
+
7
+
8
+ class InteractionHandlerABC(ABC):
9
+ @abstractmethod
10
+ async def collect_response(
11
+ self,
12
+ request_event: events.UserInteractionRequestEvent,
13
+ ) -> user_interaction.UserInteractionResponse:
14
+ pass