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.
- {klaude_code-2.23.0 → klaude_code-2.24.0}/PKG-INFO +21 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/README.md +19 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/pyproject.toml +9 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/runtime.py +39 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/auth_cmd.py +25 -7
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/config_cmd.py +4 -3
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/cost_cmd.py +0 -5
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/list_model.py +15 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/main.py +87 -38
- klaude_code-2.24.0/src/klaude_code/cli/self_update.py +181 -0
- klaude_code-2.24.0/src/klaude_code/cli/web_cmd.py +66 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/assets/builtin_config.yaml +61 -14
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/config.py +13 -7
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/sub_agent_model_helper.py +18 -7
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/const.py +3 -11
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/reminders.py +82 -130
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_agent_ops.py +72 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_config_ops.py +1 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_dispatcher.py +6 -70
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_sub_agent.py +60 -57
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/session_title.py +9 -27
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/task.py +8 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/turn.py +14 -12
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent_profile.py +4 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/event_bus.py +9 -11
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/event_relay.py +24 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/runtime_facade.py +7 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/session_actor.py +6 -0
- klaude_code-2.24.0/src/klaude_code/core/control/session_meta_relay.py +217 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/memory.py +11 -23
- klaude_code-2.24.0/src/klaude_code/core/prompts/auto-memory-prompt.md +111 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/system_prompt.py +3 -10
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/__init__.py +0 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/agent_tool.md +1 -3
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/agent_tool.py +12 -60
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/ask_user_question_tool.py +1 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/context.py +0 -22
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/read_tool.py +5 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/bash_tool.py +1 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/command_safety.py +9 -11
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool.md +1 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool.py +7 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_fetch_tool.py +103 -9
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/client.py +1 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/client.py +1 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/image.py +43 -5
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/stream.py +1 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/client.py +14 -18
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/input.py +3 -7
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/stream_parts.py +6 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/events.py +12 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/message.py +22 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/model.py +3 -3
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/op.py +7 -6
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/op_handler.py +3 -3
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/tools.py +0 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/selector.py +2 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/session.py +72 -80
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/store.py +33 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/__init__.py +8 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/loader.py +11 -4
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/manager.py +28 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/__init__.py +3 -3
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/command_abc.py +10 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/fork_session_cmd.py +25 -40
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/types.py +1 -1
- klaude_code-2.24.0/src/klaude_code/tui/command/web_cmd.py +107 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/commands.py +11 -5
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/developer.py +10 -22
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/theme.py +3 -1
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/sub_agent.py +4 -26
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/tools.py +8 -8
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/welcome.py +57 -23
- klaude_code-2.24.0/src/klaude_code/tui/input/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/prompt_toolkit.py +79 -128
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/machine.py +7 -93
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/renderer.py +18 -6
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/runner.py +35 -22
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/progress_bar.py +11 -5
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/session_selector.py +3 -1
- klaude_code-2.24.0/src/klaude_code/tui/terminal/title.py +118 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/update.py +154 -162
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/app.py +50 -3
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-cyrillic-zHIGg2nG.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-cyrillic-BAHUuRM7.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-latin-DPcoTQLg.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-italic-latin-ext-E4_zqQR6.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-latin-BSv3nOGs.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-latin-ext-DavUKqbp.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-cyrillic-BAE8rdXX.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-cyrillic-2vK9sKgQ.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-latin-Bq3uIZFr.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-italic-latin-ext-BVvsJehH.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-latin-B9bzV8FE.woff2 +0 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/geist-mono-latin-ext-CtwMEpPj.woff2 +0 -0
- 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
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/index-BL6qbKwg.css +1 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/assets/index-DBqWrFD_.js +1895 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/favicon.svg +3 -0
- klaude_code-2.24.0/src/klaude_code/web/dist/index.html +14 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/file_access.py +3 -2
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/routes/__init__.py +2 -1
- klaude_code-2.24.0/src/klaude_code/web/routes/config.py +84 -0
- klaude_code-2.24.0/src/klaude_code/web/routes/files.py +367 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/routes/sessions.py +134 -34
- klaude_code-2.24.0/src/klaude_code/web/routes/skills.py +37 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/routes/ws.py +248 -14
- klaude_code-2.24.0/src/klaude_code/web/server.py +329 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/session_access.py +37 -13
- klaude_code-2.24.0/src/klaude_code/web/session_index.py +396 -0
- klaude_code-2.24.0/src/klaude_code/web/session_live.py +212 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/state.py +2 -0
- klaude_code-2.23.0/src/klaude_code/.DS_Store +0 -0
- klaude_code-2.23.0/src/klaude_code/cli/self_update.py +0 -121
- klaude_code-2.23.0/src/klaude_code/cli/web_cmd.py +0 -34
- klaude_code-2.23.0/src/klaude_code/core/prompts/auto-memory-prompt.md +0 -29
- klaude_code-2.23.0/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -3
- klaude_code-2.23.0/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -102
- klaude_code-2.23.0/src/klaude_code/llm/partial_message.py +0 -5
- klaude_code-2.23.0/src/klaude_code/session/export.py +0 -1054
- klaude_code-2.23.0/src/klaude_code/session/templates/export_session.html +0 -2150
- klaude_code-2.23.0/src/klaude_code/skill/.DS_Store +0 -0
- klaude_code-2.23.0/src/klaude_code/tui/command/export_cmd.py +0 -54
- klaude_code-2.23.0/src/klaude_code/tui/input/__init__.py +0 -9
- klaude_code-2.23.0/src/klaude_code/tui/terminal/title.py +0 -60
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/index-B7rfFyoU.js +0 -1790
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/index-SQlcC1zl.css +0 -1
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-DbvgyCYI.woff2 +0 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-bold-CqgdGFuf.otf +0 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-bold-italic-CT94kmNX.otf +0 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tx-02-italic-Cz7l_g8k.otf +0 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/favicon.svg +0 -4
- klaude_code-2.23.0/src/klaude_code/web/dist/index.html +0 -20
- klaude_code-2.23.0/src/klaude_code/web/routes/config.py +0 -27
- klaude_code-2.23.0/src/klaude_code/web/routes/files.py +0 -27
- klaude_code-2.23.0/src/klaude_code/web/server.py +0 -167
- klaude_code-2.23.0/src/klaude_code/web/session_index.py +0 -273
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/auth_flow.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/log_viewer.html +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/log_viewer.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/display.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/input.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/app/ports/interaction.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/AGENTS.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/base.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/exceptions.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/oauth.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/claude/token_manager.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/exceptions.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/oauth.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/codex/token_manager.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/exceptions.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/oauth.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/copilot/token_manager.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/auth/env.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/debug.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/cli/oauth_usage.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/assets/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/builtin_config.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/formatters.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/model_matcher.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/config/thinking.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/agent.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/agent/runtime_llm.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/bash_mode.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/AGENTS.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/compaction.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/overflow.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/compaction/prompts.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/session_registry.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/control/user_interaction.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/loaded_skills.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/base-system-prompt.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/rewind/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/rewind/manager.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/session_stats.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/ask_user_question_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/_utils.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/apply_patch_tool.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/diff_builder.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/edit_tool.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/read_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/write_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/file/write_tool.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/offload.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/report_back_tool.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/rewind_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/rewind_tool.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/shell/bash_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_abc.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_registry.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/tool_runner.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/external_content.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/ssrf.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_cache.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/core/tool/web/web_search_tool.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/anthropic/input.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/bedrock_anthropic/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/bedrock_anthropic/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/claude/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/claude/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/copilot/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/copilot/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google/input.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google_vertex/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/google_vertex/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/input_common.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/json_stable.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_codex/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_codex/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_compatible/input.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openai_responses/input.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/client.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/openrouter/reasoning.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/registry.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/llm/usage.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/log.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/llm_param.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/model_id.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/AGENTS.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/sub_agent/general_purpose.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/protocol/user_interaction.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/session/codec.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/AGENTS.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/.git +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/.gitignore +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/SOURCES.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/authentication.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/commands.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/profiling.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/proxy-support.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/session-management.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/snapshot-refs.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/references/video-recording.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/templates/authenticated-session.sh +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/templates/capture-workflow.sh +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/agent-browser/templates/form-automation.sh +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/download-yt-sub/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/download-yt-sub/scripts/download_subtitles.sh +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/executing-plans/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/frontend-design/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/LICENSE.txt +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/cli.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/codex-network.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/image-api.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/prompting.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/references/sample-prompts.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/gpt-image-gen/scripts/image_gen.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/cli.md +0 -0
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/prompting.md +0 -0
- {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
- {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
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/forms.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/reference.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/check_bounding_boxes.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/check_fillable_fields.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/convert_pdf_to_images.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/create_validation_image.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_field_info.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_structure.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/pdf/scripts/fill_fillable_fields.py +0 -0
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/3d.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/animations.md +0 -0
- {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
- {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
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/audio-visualization.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/audio.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/calculate-metadata.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/can-decode.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/charts.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/compositions.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/display-captions.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/extract-frames.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/ffmpeg.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/fonts.md +0 -0
- {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
- {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
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/gifs.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/images.md +0 -0
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/light-leaks.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/lottie.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/maps.md +0 -0
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-text.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/parameters.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/sequencing.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/sfx.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/subtitles.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/tailwind.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/text-animations.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/timing.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transcribe-captions.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transitions.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transparent-videos.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/trimming.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/videos.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/voiceover.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/.gitignore +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/bun.lock +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/package.json +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/session-logs/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/web-search/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/assets/writing-plans/SKILL.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/skill/system_skills.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/auth_selector.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/compact_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/continue_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/copy_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/debug_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/login_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/logout_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/model_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/model_picker.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/new_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/refresh_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/registry.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/status_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/sub_agent_model_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/command/thinking_cmd.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/bash_syntax.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/command_output.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/common.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/diffs.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/errors.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/metadata.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/cjk_wrap.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/code_panel.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/live.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/markdown.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/quote.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/rich/status.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/thinking.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/components/user_input.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/display.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/AGENTS.md +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/completers.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/drag_drop.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/images.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/key_bindings.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/input/paste.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/ask_user_question.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/color.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/control.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/image.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/notifier.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/tui/terminal/selector.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/__init__.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/display.py +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/abap-BdImnpbu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/actionscript-3-CoDkCxhg.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ada-bCR0ucgS.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/andromeeda-C4gqWexZ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/angular-html-CU67Zn6k.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/angular-ts-BwZT4LLn.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/apache-Pmp26Uib.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/apex-D8_7TLub.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/apl-dKokRX4l.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/applescript-Co6uUVPk.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ara-BRHolxvo.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/asciidoc-Ve4PFQV2.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/asm-D_Q5rh1f.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/astro-CbQHKStN.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/awk-DMzUqQB5.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ayu-light-BA47KaF1.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ballerina-BFfxhgS-.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bat-BkioyH1T.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/beancount-k_qm7-4y.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/berry-uYugtg8r.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bibtex-CHM0blh-.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bicep-Bmn6On1c.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bird2-DPOp833l.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/blade-D4QpJJKB.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/bsl-BO_Y6i37.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/c-BIGW1oBm.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/c3-eo99z4R2.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cadence-Bv_4Rxtq.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cairo-KRGpt6FW.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/clarity-D53aC0YG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/clojure-P80f7IUj.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cmake-D1j8_8rp.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cobol-nwyudZeR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/codeowners-Bp6g37R7.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/codeql-DsOJ9woJ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/coffee-Ch7k5sss.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/coq-DkFqJrB1.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cpp-CofmeUqb.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/crystal-tKQVLTB8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/csharp-COcwbKMJ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/css-DPfMkruS.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/csv-fuZLfV_i.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cue-D82EKSYY.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/cypher-COkxafJQ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/d-85-TOEBH.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dark-plus-C3mMm8J8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dart-CF10PKvl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dax-CEL-wOlO.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/desktop-BmXAJ9_W.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/diff-D97Zzqfu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/docker-BcOcwvcX.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dotenv-Da5cRb03.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dracula-BzJJZx-M.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/dream-maker-BtqSS_iP.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/edge-BkV0erSs.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/elixir-CDX3lj18.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/elm-DbKCFpqz.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/emacs-lisp-C9XAeP06.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/erb-B12qg9BL.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/erlang-DsQrWhSR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/everforest-light-C8M2exoo.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fennel-BYunw83y.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fish-BvzEVeQv.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fluent-C4IJs8-o.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/fsharp-CXgrBDvD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gdresource-BOOCDP_w.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gdscript-C5YyOfLZ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gdshader-DkwncUOv.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/genie-D0YGMca9.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gherkin-DyxjwDmM.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/git-commit-F4YmCXRG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/git-rebase-r7XF79zn.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-DHJKELXO.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {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
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-light-DAi9KRSo.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-light-default-D7oLnXFd.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gleam-BspZqrRM.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/glimmer-ts-U6CK756n.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/glsl-DplSGwfg.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gn-n2N0HUVH.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gnuplot-DdkO51Og.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/go-CxLEBnE3.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/graphql-ChdNCCLP.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/groovy-gcz8RCvz.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hack-CaT9iCJl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/haml-B8DHNrY2.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/handlebars-BL8al0AC.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/haskell-Df6bDoY_.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/haxe-CzTSHFRz.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hcl-BWvSN4gD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hjson-D5-asLiD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hlsl-D3lLCCz7.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/horizon-BUw7H-hv.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/horizon-bright-Cn-bp-IR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/houston-DnULxvSX.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/html-GMplVEZG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/html-derivative-BFtXZ54Q.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/http-jrhK8wxY.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hurl-irOxFIW8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hxml-Bvhsp5Yf.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/hy-DFXneXwc.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/imba-DGztddWO.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ini-BEwlwnbL.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/java-CylS5w8V.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/javascript-wDzz0qaB.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jinja-4LBKfQ-Z.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jison-wvAkD_A8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/json-Cp-IABpG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/json5-C9tS-k6U.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsonc-Des-eS-w.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsonl-DcaNXYhu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsonnet-DFQXde-d.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jssm-C2t-YnRu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/jsx-g9-lgVsj.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/julia-CxzCAyBv.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/just-Cw27pwNe.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kdl-DV7GczEv.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kotlin-BdnUsdx6.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/kusto-DZf3V79B.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/laserwave-DUszq2jm.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/latex-CWtU0Tv5.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/lean-BZvkOJ9d.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/less-B1dDrJ26.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/light-plus-B7mTdjB0.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/liquid-DYVedYrR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/llvm-DjAJT7YJ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/log-2UxHyX5q.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/logo-BtOb2qkB.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/lua-BaeVxFsk.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/luau-C-HG3fhB.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/make-CHLpvVh8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/markdown-Cvjx9yec.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/marko-CnJfTvn9.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-D5KoaKCx.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/matlab-D7o27uSR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mdc-BMNejdWA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mdx-Cmh6b_Ma.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mermaid-mWjccvbQ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/min-dark-CafNBF8u.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/min-light-CTRr51gU.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mipsasm-CKIfxQSi.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/mojo-rZm6bMo-.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/monokai-D4h5O-jR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/moonbit-_H4v1dQx.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/move-IF9eRakj.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/narrat-DRg8JJMk.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nextflow-Zz6hmt5N.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nextflow-groovy-BeH2EWoN.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nginx-BpAMiNFr.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/night-owl-C39BiMTA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nim-CVrawwO9.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nix-CwoSXNpI.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nord-Ddv68eIx.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/nushell-Cz2AlsmD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/objective-c-DXmwc3jG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/objective-cpp-CLxacb5B.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ocaml-C0hk2d4L.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/odin-BBf5iR-q.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/one-light-C3Wv6jpd.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/openscad-C4EeE6gA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pascal-D93ZcfNL.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/perl-C0TMdlhV.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/php-Dhbhpdrm.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pierre-dark-BXuwtOqb.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pierre-light-dckrK0oj.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pkl-u5AG7uiY.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/plastic-3e1v2bzS.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/plsql-ChMvpjG-.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/po-BTJTHyun.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/poimandres-CS3Unz2-.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/polar-C0HS_06l.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/postcss-CXtECtnM.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/powerquery-CEu0bR-o.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/powershell-Dpen1YoG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/prisma-Dd19v3D-.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/prolog-CbFg5uaA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/proto-C7zT0LnQ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/pug-CGlum2m_.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/puppet-BMWR74SV.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/purescript-CklMAg4u.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/python-B6aJPvgy.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/qml-3beO22l8.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/qmldir-C8lEn-DE.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/qss-IeuSbFQv.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/r-Dspwwk_N.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/racket-BqYA7rlc.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/raku-DXvB9xmW.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/razor-Uh8Bk_45.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/red-bN70gL4F.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/reg-C-SQnVFl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/regexp-CDVJQ6XC.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rel-C3B-1QV4.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/riscv-BM1_JUlF.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ron-D8l8udqQ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rose-pine-qdsjHGoJ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rosmsg-BJDFO7_C.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rst-BrH8l1NY.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ruby-Dw2BHqvy.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/rust-B1yitclQ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sas-cz2c8ADy.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sass-Cj5Yp3dK.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/scala-C151Ov-r.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/scheme-C98Dy4si.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/scss-OYdSNvt2.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sdbl-DVxCFoDh.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/shellscript-Yzrsuije.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/shellsession-BADoaaVG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/slack-dark-BthQWCQV.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/slack-ochin-DqwNpetd.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/smalltalk-BERRCDM3.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/snazzy-light-Bw305WKR.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/solarized-dark-DXbdFlpD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/solarized-light-L9t79GZl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/solidity-rGO070M0.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/soy-Brmx7dQM.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sparql-rVzFXLq3.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/splunk-BtCnVYZw.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/sql-BLtJtn59.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ssh-config-_ykCGR6B.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/stata-BH5u7GGu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/stylus-BEDo0Tqx.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/surrealql-Bq5Q-fJD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/svelte-C_ipcX3V.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/swift-D82vCrfD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/system-verilog-CnnmHF94.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/systemd-4A_iFExJ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/talonscript-CkByrt1z.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tasl-QIJgUcNo.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tcl-dwOrl1Do.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/templ-P3uqSqPl.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/terraform-BETggiCN.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tex-idrVyKtj.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tokyo-night-hegEt444.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/toml-vGWfd6FD.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/ts-tags-zn1MmPIZ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tsv-B_m7g4N7.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/tsx-COt5Ahok.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/turtle-BsS91CYL.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/twig-DNn4PbVi.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/typescript-BPQ3VLAy.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/typespec-BGHnOYBU.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/typst-DHCkPAjA.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/v-BcVCzyr7.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vala-CsfeWuGM.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vb-D17OF-Vu.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/verilog-BQ8w6xss.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vesper-DU1UobuO.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vhdl-CeAyd5Ju.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/viml-CJc9bBzg.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vue-DN_0RTcg.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vue-html-AaS7Mt5G.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vue-vine-CQOfvN7w.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/vyper-CDx5xZoG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wasm-CG6Dc4jp.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wasm-MzD3tlZU.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wenyan-BV7otONQ.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wgsl-Dx-B1_4e.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wikitext-BhOHFoWU.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wit-5i3qLPDT.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/wolfram-lXgVvXCa.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/xml-sdJ4AIDG.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/xsl-CtQFsRM5.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/yaml-Buea-lGh.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/zenscript-DVFEvuxE.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/dist/assets/zig-VOosw3JB.js +0 -0
- {klaude_code-2.23.0 → klaude_code-2.24.0}/src/klaude_code/web/interaction.py +0 -0
- {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.
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
10
|
-
|
|
21
|
+
def __str__(self) -> str:
|
|
22
|
+
return self._resolve()
|
|
11
23
|
|
|
12
|
-
|
|
13
|
-
|
|
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=
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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=
|
|
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
|
+
)
|