klaude-code 2.23.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 (711) hide show
  1. {klaude_code-2.23.0 → klaude_code-2.24.0}/PKG-INFO +21 -1
  2. {klaude_code-2.23.0 → klaude_code-2.24.0}/README.md +19 -0
  3. {klaude_code-2.23.0 → klaude_code-2.24.0}/pyproject.toml +9 -2
  4. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/runtime.py +39 -1
  5. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/auth_cmd.py +25 -7
  6. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/config_cmd.py +4 -3
  7. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/cost_cmd.py +0 -5
  8. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/list_model.py +15 -4
  9. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/main.py +87 -38
  10. klaude_code-2.24.0/src/klaude_code/cli/self_update.py +181 -0
  11. klaude_code-2.24.0/src/klaude_code/cli/web_cmd.py +66 -0
  12. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/assets/builtin_config.yaml +61 -14
  13. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/config.py +13 -7
  14. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/sub_agent_model_helper.py +18 -7
  15. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/const.py +3 -11
  16. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/reminders.py +82 -130
  17. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_agent_ops.py +72 -0
  18. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_config_ops.py +1 -1
  19. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_dispatcher.py +6 -70
  20. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_sub_agent.py +60 -57
  21. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/session_title.py +9 -27
  22. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/task.py +8 -0
  23. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/turn.py +14 -12
  24. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent_profile.py +4 -4
  25. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/event_bus.py +9 -11
  26. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/event_relay.py +24 -2
  27. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/runtime_facade.py +7 -1
  28. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/session_actor.py +6 -0
  29. klaude_code-2.24.0/src/klaude_code/core/control/session_meta_relay.py +217 -0
  30. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/memory.py +11 -23
  31. klaude_code-2.24.0/src/klaude_code/core/prompts/auto-memory-prompt.md +111 -0
  32. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/system_prompt.py +3 -10
  33. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/__init__.py +0 -4
  34. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/agent_tool.md +1 -3
  35. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/agent_tool.py +12 -60
  36. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/ask_user_question_tool.py +1 -1
  37. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/context.py +0 -22
  38. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/read_tool.py +5 -0
  39. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/bash_tool.py +1 -0
  40. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/command_safety.py +9 -11
  41. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool.md +1 -0
  42. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool.py +7 -2
  43. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_fetch_tool.py +103 -9
  44. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/client.py +1 -4
  45. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/client.py +1 -4
  46. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/image.py +43 -5
  47. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/stream.py +1 -4
  48. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/client.py +14 -18
  49. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/input.py +3 -7
  50. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/stream_parts.py +6 -2
  51. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/events.py +12 -0
  52. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/message.py +22 -1
  53. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/model.py +3 -3
  54. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/op.py +7 -6
  55. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/op_handler.py +3 -3
  56. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/tools.py +0 -1
  57. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/selector.py +2 -2
  58. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/session.py +72 -80
  59. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/store.py +33 -4
  60. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/__init__.py +8 -1
  61. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/loader.py +11 -4
  62. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/manager.py +28 -2
  63. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/__init__.py +3 -3
  64. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/command_abc.py +10 -0
  65. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/fork_session_cmd.py +25 -40
  66. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/types.py +1 -1
  67. klaude_code-2.24.0/src/klaude_code/tui/command/web_cmd.py +107 -0
  68. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/commands.py +11 -5
  69. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/developer.py +10 -22
  70. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/theme.py +3 -1
  71. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/sub_agent.py +4 -26
  72. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/tools.py +8 -8
  73. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/welcome.py +57 -23
  74. klaude_code-2.24.0/src/klaude_code/tui/input/__init__.py +0 -0
  75. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/prompt_toolkit.py +79 -128
  76. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/machine.py +7 -93
  77. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/renderer.py +18 -6
  78. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/runner.py +35 -22
  79. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/progress_bar.py +11 -5
  80. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/session_selector.py +3 -1
  81. klaude_code-2.24.0/src/klaude_code/tui/terminal/title.py +118 -0
  82. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/update.py +154 -162
  83. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/app.py +50 -3
  84. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-cyrillic-zHIGg2nG.woff2 +0 -0
  85. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-cyrillic-BAHUuRM7.woff2 +0 -0
  86. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-latin-DPcoTQLg.woff2 +0 -0
  87. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-latin-ext-E4_zqQR6.woff2 +0 -0
  88. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-latin-BSv3nOGs.woff2 +0 -0
  89. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-latin-ext-DavUKqbp.woff2 +0 -0
  90. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-cyrillic-BAE8rdXX.woff2 +0 -0
  91. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-cyrillic-2vK9sKgQ.woff2 +0 -0
  92. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-latin-Bq3uIZFr.woff2 +0 -0
  93. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-latin-ext-BVvsJehH.woff2 +0 -0
  94. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-latin-B9bzV8FE.woff2 +0 -0
  95. klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-latin-ext-CtwMEpPj.woff2 +0 -0
  96. klaude_code-2.23.0/src/klaude_code/web/dist/assets/highlighted-body-B3W2YXNL-OfBXblVk.js → klaude_code-2.24.0/src/klaude_code/web/dist/assets/highlighted-body-B3W2YXNL-qIJJBbdQ.js +1 -1
  97. klaude_code-2.24.0/src/klaude_code/web/dist/assets/index-BL6qbKwg.css +1 -0
  98. klaude_code-2.24.0/src/klaude_code/web/dist/assets/index-DBqWrFD_.js +1895 -0
  99. klaude_code-2.24.0/src/klaude_code/web/dist/favicon.svg +3 -0
  100. klaude_code-2.24.0/src/klaude_code/web/dist/index.html +14 -0
  101. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/file_access.py +3 -2
  102. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/routes/__init__.py +2 -1
  103. klaude_code-2.24.0/src/klaude_code/web/routes/config.py +84 -0
  104. klaude_code-2.24.0/src/klaude_code/web/routes/files.py +367 -0
  105. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/routes/sessions.py +134 -34
  106. klaude_code-2.24.0/src/klaude_code/web/routes/skills.py +37 -0
  107. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/routes/ws.py +248 -14
  108. klaude_code-2.24.0/src/klaude_code/web/server.py +329 -0
  109. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/session_access.py +37 -13
  110. klaude_code-2.24.0/src/klaude_code/web/session_index.py +396 -0
  111. klaude_code-2.24.0/src/klaude_code/web/session_live.py +212 -0
  112. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/state.py +2 -0
  113. klaude_code-2.23.0/src/klaude_code/.DS_Store +0 -0
  114. klaude_code-2.23.0/src/klaude_code/cli/self_update.py +0 -121
  115. klaude_code-2.23.0/src/klaude_code/cli/web_cmd.py +0 -34
  116. klaude_code-2.23.0/src/klaude_code/core/prompts/auto-memory-prompt.md +0 -29
  117. klaude_code-2.23.0/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -3
  118. klaude_code-2.23.0/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -102
  119. klaude_code-2.23.0/src/klaude_code/llm/partial_message.py +0 -5
  120. klaude_code-2.23.0/src/klaude_code/session/export.py +0 -1054
  121. klaude_code-2.23.0/src/klaude_code/session/templates/export_session.html +0 -2150
  122. klaude_code-2.23.0/src/klaude_code/skill/.DS_Store +0 -0
  123. klaude_code-2.23.0/src/klaude_code/tui/command/export_cmd.py +0 -54
  124. klaude_code-2.23.0/src/klaude_code/tui/input/__init__.py +0 -9
  125. klaude_code-2.23.0/src/klaude_code/tui/terminal/title.py +0 -60
  126. klaude_code-2.23.0/src/klaude_code/web/dist/assets/index-B7rfFyoU.js +0 -1790
  127. klaude_code-2.23.0/src/klaude_code/web/dist/assets/index-SQlcC1zl.css +0 -1
  128. klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-DbvgyCYI.woff2 +0 -0
  129. klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-bold-CqgdGFuf.otf +0 -0
  130. klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-bold-italic-CT94kmNX.otf +0 -0
  131. klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-italic-Cz7l_g8k.otf +0 -0
  132. klaude_code-2.23.0/src/klaude_code/web/dist/favicon.svg +0 -4
  133. klaude_code-2.23.0/src/klaude_code/web/dist/index.html +0 -20
  134. klaude_code-2.23.0/src/klaude_code/web/routes/config.py +0 -27
  135. klaude_code-2.23.0/src/klaude_code/web/routes/files.py +0 -27
  136. klaude_code-2.23.0/src/klaude_code/web/server.py +0 -167
  137. klaude_code-2.23.0/src/klaude_code/web/session_index.py +0 -273
  138. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/__init__.py +0 -0
  139. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/__init__.py +0 -0
  140. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/auth_flow.py +0 -0
  141. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/log_viewer.html +0 -0
  142. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/log_viewer.py +0 -0
  143. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/__init__.py +0 -0
  144. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/display.py +0 -0
  145. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/input.py +0 -0
  146. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/interaction.py +0 -0
  147. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/AGENTS.md +0 -0
  148. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/__init__.py +0 -0
  149. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/base.py +0 -0
  150. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/__init__.py +0 -0
  151. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/exceptions.py +0 -0
  152. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/oauth.py +0 -0
  153. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/token_manager.py +0 -0
  154. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/__init__.py +0 -0
  155. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/exceptions.py +0 -0
  156. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
  157. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/oauth.py +0 -0
  158. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/token_manager.py +0 -0
  159. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/__init__.py +0 -0
  160. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/exceptions.py +0 -0
  161. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/oauth.py +0 -0
  162. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/token_manager.py +0 -0
  163. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/env.py +0 -0
  164. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/__init__.py +0 -0
  165. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/debug.py +0 -0
  166. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/oauth_usage.py +0 -0
  167. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/__init__.py +0 -0
  168. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/assets/__init__.py +0 -0
  169. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/builtin_config.py +0 -0
  170. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/formatters.py +0 -0
  171. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/model_matcher.py +0 -0
  172. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/thinking.py +0 -0
  173. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/__init__.py +0 -0
  174. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/__init__.py +0 -0
  175. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/agent.py +0 -0
  176. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_llm.py +0 -0
  177. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/bash_mode.py +0 -0
  178. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/AGENTS.md +0 -0
  179. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/__init__.py +0 -0
  180. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/compaction.py +0 -0
  181. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/overflow.py +0 -0
  182. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/prompts.py +0 -0
  183. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/__init__.py +0 -0
  184. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/session_registry.py +0 -0
  185. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/user_interaction.py +0 -0
  186. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/loaded_skills.py +0 -0
  187. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/base-system-prompt.md +0 -0
  188. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
  189. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
  190. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/rewind/__init__.py +0 -0
  191. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/rewind/manager.py +0 -0
  192. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/session_stats.py +0 -0
  193. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/ask_user_question_tool.md +0 -0
  194. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/__init__.py +0 -0
  195. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/_utils.py +0 -0
  196. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
  197. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
  198. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch_tool.py +0 -0
  199. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/diff_builder.py +0 -0
  200. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
  201. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/edit_tool.py +0 -0
  202. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/read_tool.md +0 -0
  203. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/write_tool.md +0 -0
  204. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/write_tool.py +0 -0
  205. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/offload.py +0 -0
  206. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/report_back_tool.py +0 -0
  207. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/rewind_tool.md +0 -0
  208. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/rewind_tool.py +0 -0
  209. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/__init__.py +0 -0
  210. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/bash_tool.md +0 -0
  211. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/__init__.py +0 -0
  212. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
  213. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_abc.py +0 -0
  214. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_registry.py +0 -0
  215. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_runner.py +0 -0
  216. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/__init__.py +0 -0
  217. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/external_content.py +0 -0
  218. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/ssrf.py +0 -0
  219. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_cache.py +0 -0
  220. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
  221. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
  222. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_search_tool.py +0 -0
  223. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/__init__.py +0 -0
  224. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/__init__.py +0 -0
  225. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/input.py +0 -0
  226. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/bedrock_anthropic/__init__.py +0 -0
  227. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/bedrock_anthropic/client.py +0 -0
  228. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/claude/__init__.py +0 -0
  229. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/claude/client.py +0 -0
  230. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/client.py +0 -0
  231. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/copilot/__init__.py +0 -0
  232. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/copilot/client.py +0 -0
  233. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/__init__.py +0 -0
  234. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/input.py +0 -0
  235. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google_vertex/__init__.py +0 -0
  236. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google_vertex/client.py +0 -0
  237. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/input_common.py +0 -0
  238. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/json_stable.py +0 -0
  239. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_codex/__init__.py +0 -0
  240. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_codex/client.py +0 -0
  241. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
  242. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/client.py +0 -0
  243. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/input.py +0 -0
  244. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/__init__.py +0 -0
  245. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/input.py +0 -0
  246. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/__init__.py +0 -0
  247. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/client.py +0 -0
  248. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/reasoning.py +0 -0
  249. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/registry.py +0 -0
  250. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/usage.py +0 -0
  251. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/log.py +0 -0
  252. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/__init__.py +0 -0
  253. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/llm_param.py +0 -0
  254. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/model_id.py +0 -0
  255. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/AGENTS.md +0 -0
  256. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
  257. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
  258. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/general_purpose.py +0 -0
  259. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/user_interaction.py +0 -0
  260. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/__init__.py +0 -0
  261. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/codec.py +0 -0
  262. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/AGENTS.md +0 -0
  263. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/.git +0 -0
  264. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/.gitignore +0 -0
  265. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/SOURCES.md +0 -0
  266. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/SKILL.md +0 -0
  267. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/authentication.md +0 -0
  268. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/commands.md +0 -0
  269. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/profiling.md +0 -0
  270. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/proxy-support.md +0 -0
  271. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/session-management.md +0 -0
  272. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/snapshot-refs.md +0 -0
  273. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/video-recording.md +0 -0
  274. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/templates/authenticated-session.sh +0 -0
  275. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/templates/capture-workflow.sh +0 -0
  276. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/templates/form-automation.sh +0 -0
  277. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
  278. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/download-yt-sub/SKILL.md +0 -0
  279. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/download-yt-sub/scripts/download_subtitles.sh +0 -0
  280. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/executing-plans/SKILL.md +0 -0
  281. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/frontend-design/SKILL.md +0 -0
  282. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/LICENSE.txt +0 -0
  283. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/SKILL.md +0 -0
  284. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/cli.md +0 -0
  285. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/codex-network.md +0 -0
  286. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/image-api.md +0 -0
  287. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/prompting.md +0 -0
  288. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/sample-prompts.md +0 -0
  289. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/scripts/image_gen.py +0 -0
  290. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/SKILL.md +0 -0
  291. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/cli.md +0 -0
  292. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/gemini-api.md +0 -0
  293. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/prompting.md +0 -0
  294. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/sample-prompts.md +0 -0
  295. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/vertex-setup.md +0 -0
  296. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/scripts/gemini_image_gen.py +0 -0
  297. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/SKILL.md +0 -0
  298. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/forms.md +0 -0
  299. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/reference.md +0 -0
  300. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/check_bounding_boxes.py +0 -0
  301. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/check_fillable_fields.py +0 -0
  302. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/convert_pdf_to_images.py +0 -0
  303. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/create_validation_image.py +0 -0
  304. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_field_info.py +0 -0
  305. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_structure.py +0 -0
  306. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/fill_fillable_fields.py +0 -0
  307. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
  308. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/SKILL.md +0 -0
  309. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/3d.md +0 -0
  310. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/animations.md +0 -0
  311. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/charts-bar-chart.tsx +0 -0
  312. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +0 -0
  313. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +0 -0
  314. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets.md +0 -0
  315. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/audio-visualization.md +0 -0
  316. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/audio.md +0 -0
  317. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/calculate-metadata.md +0 -0
  318. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/can-decode.md +0 -0
  319. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/charts.md +0 -0
  320. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/compositions.md +0 -0
  321. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/display-captions.md +0 -0
  322. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/extract-frames.md +0 -0
  323. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/ffmpeg.md +0 -0
  324. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/fonts.md +0 -0
  325. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/get-audio-duration.md +0 -0
  326. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-dimensions.md +0 -0
  327. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-duration.md +0 -0
  328. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/gifs.md +0 -0
  329. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/images.md +0 -0
  330. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/import-srt-captions.md +0 -0
  331. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/light-leaks.md +0 -0
  332. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/lottie.md +0 -0
  333. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/maps.md +0 -0
  334. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-dom-nodes.md +0 -0
  335. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-text.md +0 -0
  336. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/parameters.md +0 -0
  337. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/sequencing.md +0 -0
  338. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/sfx.md +0 -0
  339. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/subtitles.md +0 -0
  340. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/tailwind.md +0 -0
  341. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/text-animations.md +0 -0
  342. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/timing.md +0 -0
  343. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transcribe-captions.md +0 -0
  344. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transitions.md +0 -0
  345. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transparent-videos.md +0 -0
  346. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/trimming.md +0 -0
  347. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/videos.md +0 -0
  348. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/voiceover.md +0 -0
  349. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/.gitignore +0 -0
  350. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/SKILL.md +0 -0
  351. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/bun.lock +0 -0
  352. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/package.json +0 -0
  353. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +0 -0
  354. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/session-logs/SKILL.md +0 -0
  355. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
  356. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/web-search/SKILL.md +0 -0
  357. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/writing-plans/SKILL.md +0 -0
  358. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/system_skills.py +0 -0
  359. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/__init__.py +0 -0
  360. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/auth_selector.py +0 -0
  361. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/compact_cmd.py +0 -0
  362. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/continue_cmd.py +0 -0
  363. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/copy_cmd.py +0 -0
  364. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/debug_cmd.py +0 -0
  365. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/login_cmd.py +0 -0
  366. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/logout_cmd.py +0 -0
  367. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/model_cmd.py +0 -0
  368. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/model_picker.py +0 -0
  369. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/new_cmd.py +0 -0
  370. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/refresh_cmd.py +0 -0
  371. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/registry.py +0 -0
  372. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/status_cmd.py +0 -0
  373. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/sub_agent_model_cmd.py +0 -0
  374. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/thinking_cmd.py +0 -0
  375. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/__init__.py +0 -0
  376. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/bash_syntax.py +0 -0
  377. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/command_output.py +0 -0
  378. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/common.py +0 -0
  379. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/diffs.py +0 -0
  380. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/errors.py +0 -0
  381. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/metadata.py +0 -0
  382. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/__init__.py +0 -0
  383. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/cjk_wrap.py +0 -0
  384. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/code_panel.py +0 -0
  385. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/live.py +0 -0
  386. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/markdown.py +0 -0
  387. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/quote.py +0 -0
  388. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/status.py +0 -0
  389. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/thinking.py +0 -0
  390. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/user_input.py +0 -0
  391. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/display.py +0 -0
  392. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/AGENTS.md +0 -0
  393. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/completers.py +0 -0
  394. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/drag_drop.py +0 -0
  395. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/images.py +0 -0
  396. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/key_bindings.py +0 -0
  397. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/paste.py +0 -0
  398. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/__init__.py +0 -0
  399. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/ask_user_question.py +0 -0
  400. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/color.py +0 -0
  401. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/control.py +0 -0
  402. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/image.py +0 -0
  403. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/notifier.py +0 -0
  404. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/selector.py +0 -0
  405. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/__init__.py +0 -0
  406. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/display.py +0 -0
  407. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/abap-BdImnpbu.js +0 -0
  408. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/actionscript-3-CoDkCxhg.js +0 -0
  409. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ada-bCR0ucgS.js +0 -0
  410. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/andromeeda-C4gqWexZ.js +0 -0
  411. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/angular-html-CU67Zn6k.js +0 -0
  412. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/angular-ts-BwZT4LLn.js +0 -0
  413. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/apache-Pmp26Uib.js +0 -0
  414. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/apex-D8_7TLub.js +0 -0
  415. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/apl-dKokRX4l.js +0 -0
  416. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/applescript-Co6uUVPk.js +0 -0
  417. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ara-BRHolxvo.js +0 -0
  418. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/asciidoc-Ve4PFQV2.js +0 -0
  419. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/asm-D_Q5rh1f.js +0 -0
  420. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/astro-CbQHKStN.js +0 -0
  421. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -0
  422. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/awk-DMzUqQB5.js +0 -0
  423. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -0
  424. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ayu-light-BA47KaF1.js +0 -0
  425. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -0
  426. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ballerina-BFfxhgS-.js +0 -0
  427. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bat-BkioyH1T.js +0 -0
  428. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/beancount-k_qm7-4y.js +0 -0
  429. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/berry-uYugtg8r.js +0 -0
  430. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bibtex-CHM0blh-.js +0 -0
  431. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bicep-Bmn6On1c.js +0 -0
  432. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bird2-DPOp833l.js +0 -0
  433. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/blade-D4QpJJKB.js +0 -0
  434. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bsl-BO_Y6i37.js +0 -0
  435. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/c-BIGW1oBm.js +0 -0
  436. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/c3-eo99z4R2.js +0 -0
  437. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cadence-Bv_4Rxtq.js +0 -0
  438. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cairo-KRGpt6FW.js +0 -0
  439. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-frappe-DFWUc33u.js +0 -0
  440. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
  441. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
  442. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
  443. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/clarity-D53aC0YG.js +0 -0
  444. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/clojure-P80f7IUj.js +0 -0
  445. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cmake-D1j8_8rp.js +0 -0
  446. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cobol-nwyudZeR.js +0 -0
  447. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/codeowners-Bp6g37R7.js +0 -0
  448. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/codeql-DsOJ9woJ.js +0 -0
  449. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/coffee-Ch7k5sss.js +0 -0
  450. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -0
  451. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/coq-DkFqJrB1.js +0 -0
  452. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cpp-CofmeUqb.js +0 -0
  453. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/crystal-tKQVLTB8.js +0 -0
  454. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/csharp-COcwbKMJ.js +0 -0
  455. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/css-DPfMkruS.js +0 -0
  456. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/csv-fuZLfV_i.js +0 -0
  457. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cue-D82EKSYY.js +0 -0
  458. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cypher-COkxafJQ.js +0 -0
  459. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/d-85-TOEBH.js +0 -0
  460. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dark-plus-C3mMm8J8.js +0 -0
  461. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dart-CF10PKvl.js +0 -0
  462. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dax-CEL-wOlO.js +0 -0
  463. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/desktop-BmXAJ9_W.js +0 -0
  464. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/diff-D97Zzqfu.js +0 -0
  465. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/docker-BcOcwvcX.js +0 -0
  466. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dotenv-Da5cRb03.js +0 -0
  467. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dracula-BzJJZx-M.js +0 -0
  468. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -0
  469. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dream-maker-BtqSS_iP.js +0 -0
  470. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/edge-BkV0erSs.js +0 -0
  471. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/elixir-CDX3lj18.js +0 -0
  472. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/elm-DbKCFpqz.js +0 -0
  473. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/emacs-lisp-C9XAeP06.js +0 -0
  474. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/erb-B12qg9BL.js +0 -0
  475. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/erlang-DsQrWhSR.js +0 -0
  476. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -0
  477. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/everforest-light-C8M2exoo.js +0 -0
  478. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fennel-BYunw83y.js +0 -0
  479. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fish-BvzEVeQv.js +0 -0
  480. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fluent-C4IJs8-o.js +0 -0
  481. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
  482. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -0
  483. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fsharp-CXgrBDvD.js +0 -0
  484. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gdresource-BOOCDP_w.js +0 -0
  485. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gdscript-C5YyOfLZ.js +0 -0
  486. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gdshader-DkwncUOv.js +0 -0
  487. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/genie-D0YGMca9.js +0 -0
  488. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gherkin-DyxjwDmM.js +0 -0
  489. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/git-commit-F4YmCXRG.js +0 -0
  490. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/git-rebase-r7XF79zn.js +0 -0
  491. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-DHJKELXO.js +0 -0
  492. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -0
  493. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
  494. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
  495. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-light-DAi9KRSo.js +0 -0
  496. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-light-default-D7oLnXFd.js +0 -0
  497. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
  498. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gleam-BspZqrRM.js +0 -0
  499. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/glimmer-js-Rg0-pVw9.js +0 -0
  500. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/glimmer-ts-U6CK756n.js +0 -0
  501. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/glsl-DplSGwfg.js +0 -0
  502. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gn-n2N0HUVH.js +0 -0
  503. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gnuplot-DdkO51Og.js +0 -0
  504. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/go-CxLEBnE3.js +0 -0
  505. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/graphql-ChdNCCLP.js +0 -0
  506. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/groovy-gcz8RCvz.js +0 -0
  507. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
  508. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
  509. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
  510. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
  511. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
  512. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
  513. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hack-CaT9iCJl.js +0 -0
  514. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/haml-B8DHNrY2.js +0 -0
  515. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/handlebars-BL8al0AC.js +0 -0
  516. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/haskell-Df6bDoY_.js +0 -0
  517. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/haxe-CzTSHFRz.js +0 -0
  518. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hcl-BWvSN4gD.js +0 -0
  519. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hjson-D5-asLiD.js +0 -0
  520. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hlsl-D3lLCCz7.js +0 -0
  521. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/horizon-BUw7H-hv.js +0 -0
  522. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/horizon-bright-Cn-bp-IR.js +0 -0
  523. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/houston-DnULxvSX.js +0 -0
  524. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/html-GMplVEZG.js +0 -0
  525. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/html-derivative-BFtXZ54Q.js +0 -0
  526. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/http-jrhK8wxY.js +0 -0
  527. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hurl-irOxFIW8.js +0 -0
  528. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hxml-Bvhsp5Yf.js +0 -0
  529. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hy-DFXneXwc.js +0 -0
  530. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/imba-DGztddWO.js +0 -0
  531. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ini-BEwlwnbL.js +0 -0
  532. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/java-CylS5w8V.js +0 -0
  533. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/javascript-wDzz0qaB.js +0 -0
  534. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jinja-4LBKfQ-Z.js +0 -0
  535. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jison-wvAkD_A8.js +0 -0
  536. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/json-Cp-IABpG.js +0 -0
  537. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/json5-C9tS-k6U.js +0 -0
  538. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsonc-Des-eS-w.js +0 -0
  539. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsonl-DcaNXYhu.js +0 -0
  540. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsonnet-DFQXde-d.js +0 -0
  541. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jssm-C2t-YnRu.js +0 -0
  542. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsx-g9-lgVsj.js +0 -0
  543. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/julia-CxzCAyBv.js +0 -0
  544. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/just-Cw27pwNe.js +0 -0
  545. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
  546. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
  547. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kanagawa-wave-DWedfzmr.js +0 -0
  548. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kdl-DV7GczEv.js +0 -0
  549. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kotlin-BdnUsdx6.js +0 -0
  550. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kusto-DZf3V79B.js +0 -0
  551. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/laserwave-DUszq2jm.js +0 -0
  552. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/latex-CWtU0Tv5.js +0 -0
  553. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/lean-BZvkOJ9d.js +0 -0
  554. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/less-B1dDrJ26.js +0 -0
  555. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/light-plus-B7mTdjB0.js +0 -0
  556. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/liquid-DYVedYrR.js +0 -0
  557. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/llvm-DjAJT7YJ.js +0 -0
  558. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/log-2UxHyX5q.js +0 -0
  559. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/logo-BtOb2qkB.js +0 -0
  560. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/lua-BaeVxFsk.js +0 -0
  561. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/luau-C-HG3fhB.js +0 -0
  562. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/make-CHLpvVh8.js +0 -0
  563. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/markdown-Cvjx9yec.js +0 -0
  564. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/marko-CnJfTvn9.js +0 -0
  565. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-D5KoaKCx.js +0 -0
  566. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -0
  567. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -0
  568. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -0
  569. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
  570. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/matlab-D7o27uSR.js +0 -0
  571. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mdc-BMNejdWA.js +0 -0
  572. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mdx-Cmh6b_Ma.js +0 -0
  573. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mermaid-mWjccvbQ.js +0 -0
  574. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/min-dark-CafNBF8u.js +0 -0
  575. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/min-light-CTRr51gU.js +0 -0
  576. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mipsasm-CKIfxQSi.js +0 -0
  577. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mojo-rZm6bMo-.js +0 -0
  578. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/monokai-D4h5O-jR.js +0 -0
  579. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/moonbit-_H4v1dQx.js +0 -0
  580. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/move-IF9eRakj.js +0 -0
  581. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/narrat-DRg8JJMk.js +0 -0
  582. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nextflow-Zz6hmt5N.js +0 -0
  583. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nextflow-groovy-BeH2EWoN.js +0 -0
  584. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nginx-BpAMiNFr.js +0 -0
  585. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/night-owl-C39BiMTA.js +0 -0
  586. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -0
  587. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nim-CVrawwO9.js +0 -0
  588. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nix-CwoSXNpI.js +0 -0
  589. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nord-Ddv68eIx.js +0 -0
  590. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nushell-Cz2AlsmD.js +0 -0
  591. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/objective-c-DXmwc3jG.js +0 -0
  592. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/objective-cpp-CLxacb5B.js +0 -0
  593. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ocaml-C0hk2d4L.js +0 -0
  594. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/odin-BBf5iR-q.js +0 -0
  595. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -0
  596. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/one-light-C3Wv6jpd.js +0 -0
  597. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/openscad-C4EeE6gA.js +0 -0
  598. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pascal-D93ZcfNL.js +0 -0
  599. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/perl-C0TMdlhV.js +0 -0
  600. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/php-Dhbhpdrm.js +0 -0
  601. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pierre-dark-BXuwtOqb.js +0 -0
  602. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pierre-light-dckrK0oj.js +0 -0
  603. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pkl-u5AG7uiY.js +0 -0
  604. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/plastic-3e1v2bzS.js +0 -0
  605. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/plsql-ChMvpjG-.js +0 -0
  606. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/po-BTJTHyun.js +0 -0
  607. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/poimandres-CS3Unz2-.js +0 -0
  608. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/polar-C0HS_06l.js +0 -0
  609. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/postcss-CXtECtnM.js +0 -0
  610. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/powerquery-CEu0bR-o.js +0 -0
  611. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/powershell-Dpen1YoG.js +0 -0
  612. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/prisma-Dd19v3D-.js +0 -0
  613. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/prolog-CbFg5uaA.js +0 -0
  614. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/proto-C7zT0LnQ.js +0 -0
  615. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pug-CGlum2m_.js +0 -0
  616. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/puppet-BMWR74SV.js +0 -0
  617. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/purescript-CklMAg4u.js +0 -0
  618. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/python-B6aJPvgy.js +0 -0
  619. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/qml-3beO22l8.js +0 -0
  620. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/qmldir-C8lEn-DE.js +0 -0
  621. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/qss-IeuSbFQv.js +0 -0
  622. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/r-Dspwwk_N.js +0 -0
  623. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/racket-BqYA7rlc.js +0 -0
  624. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/raku-DXvB9xmW.js +0 -0
  625. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/razor-Uh8Bk_45.js +0 -0
  626. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/red-bN70gL4F.js +0 -0
  627. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/reg-C-SQnVFl.js +0 -0
  628. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/regexp-CDVJQ6XC.js +0 -0
  629. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rel-C3B-1QV4.js +0 -0
  630. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/riscv-BM1_JUlF.js +0 -0
  631. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ron-D8l8udqQ.js +0 -0
  632. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
  633. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rose-pine-moon-D4_iv3hh.js +0 -0
  634. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rose-pine-qdsjHGoJ.js +0 -0
  635. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rosmsg-BJDFO7_C.js +0 -0
  636. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rst-BrH8l1NY.js +0 -0
  637. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ruby-Dw2BHqvy.js +0 -0
  638. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rust-B1yitclQ.js +0 -0
  639. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sas-cz2c8ADy.js +0 -0
  640. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sass-Cj5Yp3dK.js +0 -0
  641. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/scala-C151Ov-r.js +0 -0
  642. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/scheme-C98Dy4si.js +0 -0
  643. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/scss-OYdSNvt2.js +0 -0
  644. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sdbl-DVxCFoDh.js +0 -0
  645. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -0
  646. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/shellscript-Yzrsuije.js +0 -0
  647. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/shellsession-BADoaaVG.js +0 -0
  648. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/slack-dark-BthQWCQV.js +0 -0
  649. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/slack-ochin-DqwNpetd.js +0 -0
  650. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/smalltalk-BERRCDM3.js +0 -0
  651. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/snazzy-light-Bw305WKR.js +0 -0
  652. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/solarized-dark-DXbdFlpD.js +0 -0
  653. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/solarized-light-L9t79GZl.js +0 -0
  654. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/solidity-rGO070M0.js +0 -0
  655. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/soy-Brmx7dQM.js +0 -0
  656. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sparql-rVzFXLq3.js +0 -0
  657. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/splunk-BtCnVYZw.js +0 -0
  658. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sql-BLtJtn59.js +0 -0
  659. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ssh-config-_ykCGR6B.js +0 -0
  660. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/stata-BH5u7GGu.js +0 -0
  661. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/stylus-BEDo0Tqx.js +0 -0
  662. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/surrealql-Bq5Q-fJD.js +0 -0
  663. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/svelte-C_ipcX3V.js +0 -0
  664. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/swift-D82vCrfD.js +0 -0
  665. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -0
  666. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/system-verilog-CnnmHF94.js +0 -0
  667. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/systemd-4A_iFExJ.js +0 -0
  668. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/talonscript-CkByrt1z.js +0 -0
  669. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tasl-QIJgUcNo.js +0 -0
  670. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tcl-dwOrl1Do.js +0 -0
  671. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/templ-P3uqSqPl.js +0 -0
  672. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/terraform-BETggiCN.js +0 -0
  673. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tex-idrVyKtj.js +0 -0
  674. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tokyo-night-hegEt444.js +0 -0
  675. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/toml-vGWfd6FD.js +0 -0
  676. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ts-tags-zn1MmPIZ.js +0 -0
  677. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tsv-B_m7g4N7.js +0 -0
  678. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tsx-COt5Ahok.js +0 -0
  679. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/turtle-BsS91CYL.js +0 -0
  680. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/twig-DNn4PbVi.js +0 -0
  681. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/typescript-BPQ3VLAy.js +0 -0
  682. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/typespec-BGHnOYBU.js +0 -0
  683. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/typst-DHCkPAjA.js +0 -0
  684. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/v-BcVCzyr7.js +0 -0
  685. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vala-CsfeWuGM.js +0 -0
  686. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vb-D17OF-Vu.js +0 -0
  687. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/verilog-BQ8w6xss.js +0 -0
  688. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vesper-DU1UobuO.js +0 -0
  689. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vhdl-CeAyd5Ju.js +0 -0
  690. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/viml-CJc9bBzg.js +0 -0
  691. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -0
  692. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -0
  693. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -0
  694. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vue-DN_0RTcg.js +0 -0
  695. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vue-html-AaS7Mt5G.js +0 -0
  696. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vue-vine-CQOfvN7w.js +0 -0
  697. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vyper-CDx5xZoG.js +0 -0
  698. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wasm-CG6Dc4jp.js +0 -0
  699. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wasm-MzD3tlZU.js +0 -0
  700. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wenyan-BV7otONQ.js +0 -0
  701. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wgsl-Dx-B1_4e.js +0 -0
  702. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wikitext-BhOHFoWU.js +0 -0
  703. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wit-5i3qLPDT.js +0 -0
  704. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wolfram-lXgVvXCa.js +0 -0
  705. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/xml-sdJ4AIDG.js +0 -0
  706. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/xsl-CtQFsRM5.js +0 -0
  707. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/yaml-Buea-lGh.js +0 -0
  708. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/zenscript-DVFEvuxE.js +0 -0
  709. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/zig-VOosw3JB.js +0 -0
  710. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/interaction.py +0 -0
  711. {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/live_events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 2.23.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
@@ -19,6 +19,7 @@ Requires-Dist: sse-starlette
19
19
  Requires-Dist: trafilatura>=2.0.0
20
20
  Requires-Dist: typer>=0.17.3
21
21
  Requires-Dist: uvicorn
22
+ Requires-Dist: readability-lxml>=0.8.4.1
22
23
  Requires-Python: >=3.13
23
24
  Description-Content-Type: text/markdown
24
25
 
@@ -59,6 +60,25 @@ Or use the built-in command:
59
60
  klaude upgrade
60
61
  ```
61
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
+
62
82
  ## Usage
63
83
 
64
84
  ```bash
@@ -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
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "klaude-code"
7
- version = "2.23.0"
7
+ version = "2.24.0"
8
8
  description = "Minimal code agent CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -26,6 +26,7 @@ dependencies = [
26
26
  "trafilatura>=2.0.0",
27
27
  "typer>=0.17.3",
28
28
  "uvicorn",
29
+ "readability-lxml>=0.8.4.1",
29
30
  ]
30
31
 
31
32
  [project.scripts]
@@ -34,6 +35,9 @@ klaude-code = "klaude_code.cli.main:app"
34
35
 
35
36
  [tool.uv.build-backend]
36
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/**"]
37
41
 
38
42
  [dependency-groups]
39
43
  dev = [
@@ -42,6 +46,7 @@ dev = [
42
46
  "pyright>=1.1.407",
43
47
  "pytest>=8.4.1",
44
48
  "pytest-cov>=7.0.0",
49
+ "pytest-timeout>=2.4.0",
45
50
  "ruff==0.14.3",
46
51
  "ty>=0.0.8",
47
52
  ]
@@ -49,6 +54,7 @@ dev = [
49
54
 
50
55
 
51
56
  [tool.pytest.ini_options]
57
+ timeout = 30
52
58
  markers = [
53
59
  "network: marks tests as requiring network access (deselect with '-m \"not network\"')",
54
60
  ]
@@ -56,6 +62,7 @@ markers = [
56
62
  [tool.ruff]
57
63
  line-length = 120
58
64
  src = ["src"]
65
+ exclude = ["src/klaude_code/skill/assets"]
59
66
 
60
67
  [tool.ruff.lint]
61
68
  select = ["E", "F", "B", "I", "UP", "SIM", "RUF"]
@@ -76,7 +83,7 @@ exclude = [
76
83
  ".venv/",
77
84
  ".pnpm-store/",
78
85
  "web/node_modules/",
79
- "src/klaude_code/skill/assets/**/scripts/",
86
+ "src/klaude_code/skill/assets/",
80
87
  ]
81
88
 
82
89
  [[tool.pyright.executionEnvironments]]
@@ -20,9 +20,11 @@ from klaude_code.core.agent_profile import (
20
20
  from klaude_code.core.control.event_bus import EventBus, EventSubscription
21
21
  from klaude_code.core.control.event_relay import EventRelayPublisher, event_relay_socket_path
22
22
  from klaude_code.core.control.runtime_facade import RuntimeFacade
23
- from klaude_code.log import log, set_debug_logging
23
+ from klaude_code.core.control.session_meta_relay import SessionMetaRelayPublisher, session_meta_relay_socket_path
24
+ from klaude_code.log import DebugType, log, log_debug, set_debug_logging
24
25
  from klaude_code.protocol import events, op, user_interaction
25
26
  from klaude_code.session.session import Session, close_default_store
27
+ from klaude_code.session.store import register_session_meta_observer
26
28
 
27
29
  SESSION_IDLE_TTL_SECONDS = 30 * 60
28
30
  SESSION_IDLE_RECLAIM_INTERVAL_SECONDS = 60
@@ -48,6 +50,8 @@ class AppComponents:
48
50
  runtime: RuntimeFacade
49
51
  event_bus: EventBus
50
52
  event_relay_publisher: EventRelayPublisher | None
53
+ session_meta_relay_publisher: SessionMetaRelayPublisher | None
54
+ unregister_session_meta_relay_observer: Callable[[], None] | None
51
55
  event_bus_subscription: EventSubscription
52
56
  display: DisplayABC
53
57
  display_task: asyncio.Task[None]
@@ -156,8 +160,14 @@ async def initialize_app_components(
156
160
  model_profile_provider = DefaultModelProfileProvider(config=config)
157
161
 
158
162
  event_relay_publisher: EventRelayPublisher | None = None
163
+ session_meta_relay_publisher: SessionMetaRelayPublisher | None = None
164
+ unregister_session_meta_relay_observer: Callable[[], None] | None = None
159
165
  if init_config.enable_event_relay_client:
160
166
  event_relay_publisher = EventRelayPublisher(socket_path=event_relay_socket_path())
167
+ session_meta_relay_publisher = SessionMetaRelayPublisher(socket_path=session_meta_relay_socket_path())
168
+ unregister_session_meta_relay_observer = register_session_meta_observer(
169
+ lambda session_id, meta: session_meta_relay_publisher.publish_upsert(session_id, meta)
170
+ )
161
171
 
162
172
  event_bus = EventBus(publish_hook=event_relay_publisher.publish if event_relay_publisher is not None else None)
163
173
  event_bus_subscription = event_bus.subscribe(None)
@@ -207,6 +217,8 @@ async def initialize_app_components(
207
217
  runtime=runtime,
208
218
  event_bus=event_bus,
209
219
  event_relay_publisher=event_relay_publisher,
220
+ session_meta_relay_publisher=session_meta_relay_publisher,
221
+ unregister_session_meta_relay_observer=unregister_session_meta_relay_observer,
210
222
  event_bus_subscription=event_bus_subscription,
211
223
  display=display,
212
224
  display_task=display_task,
@@ -261,32 +273,58 @@ def backfill_session_model_config(
261
273
  async def cleanup_app_components(components: AppComponents) -> None:
262
274
  """Clean up all runtime components."""
263
275
  try:
276
+ if components.unregister_session_meta_relay_observer is not None:
277
+ log_debug("[app] cleanup: unregister session meta relay observer", debug_type=DebugType.EXECUTION)
278
+ components.unregister_session_meta_relay_observer()
279
+
280
+ log_debug("[app] cleanup: cancel idle reclaim task", debug_type=DebugType.EXECUTION)
264
281
  components.idle_reclaim_task.cancel()
265
282
  with contextlib.suppress(asyncio.CancelledError):
266
283
  await components.idle_reclaim_task
267
284
 
285
+ log_debug("[app] cleanup: cancel owner heartbeat task", debug_type=DebugType.EXECUTION)
268
286
  components.owner_heartbeat_task.cancel()
269
287
  with contextlib.suppress(asyncio.CancelledError):
270
288
  await components.owner_heartbeat_task
271
289
 
290
+ log_debug("[app] cleanup: runtime.stop start", debug_type=DebugType.EXECUTION)
272
291
  await components.runtime.stop()
292
+ log_debug("[app] cleanup: runtime.stop done", debug_type=DebugType.EXECUTION)
273
293
  with contextlib.suppress(Exception):
294
+ log_debug("[app] cleanup: close_default_store start", debug_type=DebugType.EXECUTION)
274
295
  await close_default_store()
296
+ log_debug("[app] cleanup: close_default_store done", debug_type=DebugType.EXECUTION)
275
297
 
276
298
  with contextlib.suppress(Exception):
299
+ log_debug("[app] cleanup: wait_for_display_idle start", debug_type=DebugType.EXECUTION)
277
300
  await components.wait_for_display_idle()
301
+ log_debug("[app] cleanup: wait_for_display_idle done", debug_type=DebugType.EXECUTION)
278
302
 
279
303
  with contextlib.suppress(Exception):
304
+ log_debug("[app] cleanup: publish EndEvent start", debug_type=DebugType.EXECUTION)
280
305
  await components.event_bus.publish(events.EndEvent())
306
+ log_debug("[app] cleanup: publish EndEvent done", debug_type=DebugType.EXECUTION)
281
307
 
282
308
  if components.event_relay_publisher is not None:
283
309
  with contextlib.suppress(Exception):
310
+ log_debug("[app] cleanup: event relay publisher close start", debug_type=DebugType.EXECUTION)
284
311
  await components.event_relay_publisher.aclose()
312
+ log_debug("[app] cleanup: event relay publisher close done", debug_type=DebugType.EXECUTION)
313
+
314
+ if components.session_meta_relay_publisher is not None:
315
+ with contextlib.suppress(Exception):
316
+ log_debug("[app] cleanup: session meta relay publisher close start", debug_type=DebugType.EXECUTION)
317
+ components.session_meta_relay_publisher.close()
318
+ log_debug("[app] cleanup: session meta relay publisher close done", debug_type=DebugType.EXECUTION)
285
319
 
286
320
  if components.interaction_task is not None:
287
321
  with contextlib.suppress(Exception):
322
+ log_debug("[app] cleanup: interaction task await start", debug_type=DebugType.EXECUTION)
288
323
  await components.interaction_task
324
+ log_debug("[app] cleanup: interaction task await done", debug_type=DebugType.EXECUTION)
325
+ log_debug("[app] cleanup: display task await start", debug_type=DebugType.EXECUTION)
289
326
  await components.display_task
327
+ log_debug("[app] cleanup: display task await done", debug_type=DebugType.EXECUTION)
290
328
  finally:
291
329
  # Ensure the terminal cursor is visible even if Rich's spinner did not stop cleanly.
292
330
  with contextlib.suppress(Exception):
@@ -1,22 +1,37 @@
1
1
  """Authentication commands for CLI."""
2
2
 
3
+ from typing import Any, cast
4
+
3
5
  import typer
4
6
 
5
- from klaude_code.app.auth_flow import execute_login, execute_logout
6
- from klaude_code.tui.command.auth_selector import select_provider
7
7
 
8
+ class _LazyProviderHelp:
9
+ _value: str | None = None
10
+
11
+ def _resolve(self) -> str:
12
+ if self._value is None:
13
+ from klaude_code.config.builtin_config import SUPPORTED_API_KEYS
14
+
15
+ names = ["codex", "claude", "github-copilot", "copilot"] + [
16
+ k.name.split()[0].lower() for k in SUPPORTED_API_KEYS
17
+ ]
18
+ self._value = f"Provider name ({', '.join(names)})"
19
+ return self._value
8
20
 
9
- def _build_provider_help() -> str:
10
- from klaude_code.config.builtin_config import SUPPORTED_API_KEYS
21
+ def __str__(self) -> str:
22
+ return self._resolve()
11
23
 
12
- names = ["codex", "claude", "github-copilot", "copilot"] + [k.name.split()[0].lower() for k in SUPPORTED_API_KEYS]
13
- return f"Provider name ({', '.join(names)})"
24
+ def __getattr__(self, name: str) -> Any:
25
+ return getattr(self._resolve(), name)
14
26
 
15
27
 
16
28
  def login_command(
17
- provider: str | None = typer.Argument(None, help=_build_provider_help()),
29
+ provider: str | None = typer.Argument(None, help=cast(str, _LazyProviderHelp())),
18
30
  ) -> None:
19
31
  """Login to a provider or configure API keys."""
32
+ from klaude_code.app.auth_flow import execute_login
33
+ from klaude_code.tui.command.auth_selector import select_provider
34
+
20
35
  if provider is None:
21
36
  provider = select_provider()
22
37
  if provider is None:
@@ -29,6 +44,9 @@ def logout_command(
29
44
  provider: str | None = typer.Argument(None, help="Provider to logout (codex|claude|github-copilot|copilot)"),
30
45
  ) -> None:
31
46
  """Logout from a provider."""
47
+ from klaude_code.app.auth_flow import execute_logout
48
+ from klaude_code.tui.command.auth_selector import select_provider
49
+
32
50
  if provider is None:
33
51
  provider = select_provider(include_api_keys=False, prompt="Select provider to logout:")
34
52
  if provider is None:
@@ -6,15 +6,13 @@ import sys
6
6
 
7
7
  import typer
8
8
 
9
- from klaude_code.config import config_path, create_example_config, example_config_path, load_config
10
- from klaude_code.log import log
11
-
12
9
 
13
10
  def list_models(
14
11
  show_all: bool = typer.Option(False, "--all", "-a", help="Include unavailable providers"),
15
12
  ) -> None:
16
13
  """List available models"""
17
14
  from klaude_code.cli.list_model import display_models_and_providers
15
+ from klaude_code.config import load_config
18
16
  from klaude_code.tui.terminal.color import is_light_terminal_background
19
17
 
20
18
  config = load_config()
@@ -32,6 +30,9 @@ def list_models(
32
30
 
33
31
  def edit_config() -> None:
34
32
  """Edit config file"""
33
+ from klaude_code.config import config_path, create_example_config, example_config_path
34
+ from klaude_code.log import log
35
+
35
36
  editor = os.environ.get("EDITOR")
36
37
 
37
38
  # If no EDITOR is set, prioritize TextEdit on macOS
@@ -594,8 +594,3 @@ def cost_command(
594
594
  table = render_cost_table(daily_stats)
595
595
  console = Console()
596
596
  console.print(table)
597
-
598
-
599
- def register_cost_commands(app: typer.Typer) -> None:
600
- """Register cost command to the given Typer app."""
601
- app.command("cost")(cost_command)
@@ -9,7 +9,7 @@ from klaude_code.cli.oauth_usage import (
9
9
  resolve_oauth_usage_protocol,
10
10
  )
11
11
  from klaude_code.config import Config
12
- from klaude_code.config.config import ModelConfig, ProviderConfig, parse_env_var_syntax
12
+ from klaude_code.config.config import ModelConfig, ModelPreference, ProviderConfig, parse_env_var_syntax
13
13
  from klaude_code.config.formatters import format_model_params
14
14
  from klaude_code.protocol.llm_param import LLMClientProtocol
15
15
  from klaude_code.tui.components.rich.theme import ThemeKey, get_theme
@@ -106,7 +106,7 @@ def _build_model_lines(
106
106
  provider_disabled = provider.disabled
107
107
  provider_available = (not provider_disabled) and (not provider.is_api_key_missing())
108
108
 
109
- def _resolve_selector(value: str | None) -> str | None:
109
+ def _resolve_selector(value: str) -> str | None:
110
110
  if not value:
111
111
  return None
112
112
  try:
@@ -117,12 +117,23 @@ def _build_model_lines(
117
117
  return None
118
118
  return f"{resolved[0]}@{resolved[1]}"
119
119
 
120
- default_selector = _resolve_selector(config.main_model)
120
+ def _resolve_model_preference(value: ModelPreference) -> str | None:
121
+ if value is None:
122
+ return None
123
+ if isinstance(value, str):
124
+ return _resolve_selector(value)
125
+ for candidate in value:
126
+ result = _resolve_selector(candidate)
127
+ if result is not None:
128
+ return result
129
+ return None
130
+
131
+ default_selector = _resolve_model_preference(config.main_model)
121
132
 
122
133
  # Build reverse mapping: model_name -> list of agent roles using it
123
134
  model_to_agents: dict[str, list[str]] = {}
124
135
  for agent_role, model_name in (config.sub_agent_models or {}).items():
125
- selector = _resolve_selector(model_name)
136
+ selector = _resolve_model_preference(model_name)
126
137
  if selector is None:
127
138
  continue
128
139
  if selector not in model_to_agents:
@@ -2,47 +2,54 @@ import asyncio
2
2
  import sys
3
3
  from collections.abc import Sequence
4
4
  from pathlib import Path
5
- from typing import Any
5
+ from typing import Any, cast
6
6
 
7
7
  import typer
8
8
  from typer.core import TyperGroup
9
9
 
10
10
  from klaude_code.cli.auth_cmd import register_auth_commands
11
11
  from klaude_code.cli.config_cmd import register_config_commands
12
- from klaude_code.cli.cost_cmd import register_cost_commands
13
- from klaude_code.cli.debug import prepare_debug_logging
14
12
  from klaude_code.cli.self_update import register_self_upgrade_commands, version_option_callback
15
- from klaude_code.cli.web_cmd import register_web_commands
16
- from klaude_code.session import Session
17
- from klaude_code.tui.terminal.session_selector import select_session_sync
18
- from klaude_code.tui.terminal.title import update_terminal_title
19
-
20
-
21
- def _build_env_help() -> str:
22
- from klaude_code.config.builtin_config import SUPPORTED_API_KEYS
23
-
24
- lines = [
25
- "Environment Variables:",
26
- "",
27
- "Provider API keys (built-in config):",
28
- ]
29
- # Calculate max env_var length for alignment
30
- max_len = max(len(k.env_var) for k in SUPPORTED_API_KEYS)
31
- for k in SUPPORTED_API_KEYS:
32
- lines.append(f" {k.env_var:<{max_len}} {k.description}")
33
- lines.extend(
34
- [
35
- "",
36
- "Tool limits (Read):",
37
- " KLAUDE_READ_GLOBAL_LINE_CAP Max lines to read (default: 2000)",
38
- " KLAUDE_READ_MAX_CHARS Max total chars to read (default: 50000)",
39
- " KLAUDE_READ_MAX_IMAGE_BYTES Max image bytes to read (default: 64MB)",
40
- ]
41
- )
42
- return "\n\n".join(lines)
43
-
44
-
45
- ENV_HELP = _build_env_help()
13
+
14
+
15
+ class _LazyEnvHelp:
16
+ """Lazy proxy that defers heavy config imports until --help is shown.
17
+
18
+ Typer/Click calls .split() and str() on the epilog, so we materialise
19
+ the real string on first attribute access.
20
+ """
21
+
22
+ _value: str | None = None
23
+
24
+ def _resolve(self) -> str:
25
+ if self._value is None:
26
+ from klaude_code.config.builtin_config import SUPPORTED_API_KEYS
27
+
28
+ lines = [
29
+ "Environment Variables:",
30
+ "",
31
+ "Provider API keys (built-in config):",
32
+ ]
33
+ max_len = max(len(k.env_var) for k in SUPPORTED_API_KEYS)
34
+ for k in SUPPORTED_API_KEYS:
35
+ lines.append(f" {k.env_var:<{max_len}} {k.description}")
36
+ lines.extend(
37
+ [
38
+ "",
39
+ "Tool limits (Read):",
40
+ " KLAUDE_READ_GLOBAL_LINE_CAP Max lines to read (default: 2000)",
41
+ " KLAUDE_READ_MAX_CHARS Max total chars to read (default: 50000)",
42
+ " KLAUDE_READ_MAX_IMAGE_BYTES Max image bytes to read (default: 64MB)",
43
+ ]
44
+ )
45
+ self._value = "\n\n".join(lines)
46
+ return self._value
47
+
48
+ def __str__(self) -> str:
49
+ return self._resolve()
50
+
51
+ def __getattr__(self, name: str) -> Any:
52
+ return getattr(self._resolve(), name)
46
53
 
47
54
 
48
55
  def _looks_like_flag(token: str) -> bool:
@@ -124,24 +131,56 @@ class _PreprocessingTyperGroup(TyperGroup):
124
131
  )
125
132
 
126
133
 
134
+ def prepare_debug_logging(debug: bool) -> tuple[bool, Path | None]:
135
+ from klaude_code.cli.debug import prepare_debug_logging as _prepare_debug_logging
136
+
137
+ return _prepare_debug_logging(debug)
138
+
139
+
140
+ def run_web_server_command(*, host: str, port: int, no_open: bool, debug: bool) -> None:
141
+ from klaude_code.cli.web_cmd import run_web_server_command as _run_web_server_command
142
+
143
+ _run_web_server_command(host=host, port=port, no_open=no_open, debug=debug)
144
+
145
+
127
146
  app = typer.Typer(
128
147
  cls=_PreprocessingTyperGroup,
129
148
  add_completion=False,
130
149
  pretty_exceptions_enable=False,
131
150
  no_args_is_help=False,
132
151
  rich_markup_mode="rich",
133
- epilog=ENV_HELP,
152
+ epilog=cast(str, _LazyEnvHelp()),
134
153
  context_settings={"help_option_names": ["-h", "--help"]},
135
154
  )
136
155
 
137
156
  # Register subcommands from modules
138
157
  register_auth_commands(app)
139
158
  register_config_commands(app)
140
- register_cost_commands(app)
141
- register_web_commands(app)
142
159
  register_self_upgrade_commands(app)
143
160
 
144
161
 
162
+ @app.command("web")
163
+ def _web_command_wrapper( # pyright: ignore[reportUnusedFunction]
164
+ host: str = typer.Option("127.0.0.1", "--host", help="Host to bind web server"),
165
+ port: int = typer.Option(8765, "--port", help="Port to bind web server"),
166
+ no_open: bool = typer.Option(False, "--no-open", help="Do not open browser automatically"),
167
+ debug: bool = typer.Option(False, "--debug", help="Enable debug logs for web server"),
168
+ ) -> None:
169
+ run_web_server_command(host=host, port=port, no_open=no_open, debug=debug)
170
+
171
+
172
+ # cost command is registered via a lazy wrapper to avoid pulling in
173
+ # klaude_code.protocol at import time (~200ms).
174
+ @app.command("cost")
175
+ def _cost_command_wrapper( # pyright: ignore[reportUnusedFunction]
176
+ days: int | None = typer.Option(None, "--days", "-d", "--recent", help="Limit to last N days"),
177
+ ) -> None:
178
+ """Show usage stats"""
179
+ from klaude_code.cli.cost_cmd import cost_command
180
+
181
+ cost_command(days=days)
182
+
183
+
145
184
  @app.command("help", hidden=True)
146
185
  def help_command(ctx: typer.Context) -> None:
147
186
  """Show help message."""
@@ -203,6 +242,9 @@ def main_callback(
203
242
  # Only run interactive mode when no subcommand is invoked
204
243
  if ctx.invoked_subcommand is None:
205
244
  from klaude_code.log import log
245
+ from klaude_code.session import Session
246
+ from klaude_code.tui.terminal.session_selector import select_session_sync
247
+ from klaude_code.tui.terminal.title import update_terminal_title
206
248
 
207
249
  resume_by_id_value = resume_by_id.strip() if resume_by_id is not None else None
208
250
  if resume_by_id_value == "":
@@ -332,9 +374,16 @@ def main_callback(
332
374
  viewer_url = start_log_viewer(log_path)
333
375
  log(f"Log viewer: {viewer_url}")
334
376
 
335
- asyncio.run(
377
+ web_mode_request = asyncio.run(
336
378
  run_interactive(
337
379
  init_config=init_config,
338
380
  session_id=session_id,
339
381
  )
340
382
  )
383
+ if web_mode_request is not None:
384
+ run_web_server_command(
385
+ host=web_mode_request.host,
386
+ port=web_mode_request.port,
387
+ no_open=web_mode_request.no_open,
388
+ debug=web_mode_request.debug if web_mode_request.debug is not None else debug_enabled,
389
+ )