klaude-code 2.21.0__tar.gz → 2.23.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.21.0 → klaude_code-2.23.0}/PKG-INFO +66 -15
- {klaude_code-2.21.0 → klaude_code-2.23.0}/README.md +61 -12
- {klaude_code-2.21.0 → klaude_code-2.23.0}/pyproject.toml +8 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/app/__init__.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/app/auth_flow.py +7 -7
- {klaude_code-2.21.0/src/klaude_code/cli → klaude_code-2.23.0/src/klaude_code/app}/log_viewer.html +136 -7
- klaude_code-2.21.0/src/klaude_code/cli/log_server.py → klaude_code-2.23.0/src/klaude_code/app/log_viewer.py +71 -8
- klaude_code-2.23.0/src/klaude_code/app/ports/__init__.py +5 -0
- klaude_code-2.23.0/src/klaude_code/app/ports/display.py +36 -0
- klaude_code-2.23.0/src/klaude_code/app/ports/input.py +21 -0
- klaude_code-2.23.0/src/klaude_code/app/ports/interaction.py +14 -0
- klaude_code-2.23.0/src/klaude_code/app/runtime.py +310 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/copilot/oauth.py +3 -1
- klaude_code-2.23.0/src/klaude_code/auth/copilot/token_manager.py +64 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/auth_cmd.py +2 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/config_cmd.py +2 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/cost_cmd.py +1 -1
- klaude_code-2.23.0/src/klaude_code/cli/list_model.py +293 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/main.py +13 -10
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/oauth_usage.py +8 -8
- klaude_code-2.23.0/src/klaude_code/cli/web_cmd.py +34 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/__init__.py +2 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/assets/builtin_config.yaml +312 -218
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/builtin_config.py +3 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/config.py +157 -40
- klaude_code-2.21.0/src/klaude_code/ui/common.py → klaude_code-2.23.0/src/klaude_code/config/formatters.py +8 -22
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/sub_agent_model_helper.py +15 -15
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/thinking.py +5 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/const.py +10 -4
- klaude_code-2.23.0/src/klaude_code/core/agent/__init__.py +3 -0
- {klaude_code-2.21.0/src/klaude_code/core → klaude_code-2.23.0/src/klaude_code/core/agent}/agent.py +19 -4
- {klaude_code-2.21.0/src/klaude_code/core → klaude_code-2.23.0/src/klaude_code/core/agent}/reminders.py +4 -93
- klaude_code-2.23.0/src/klaude_code/core/agent/runtime_agent_ops.py +823 -0
- klaude_code-2.23.0/src/klaude_code/core/agent/runtime_config_ops.py +576 -0
- klaude_code-2.23.0/src/klaude_code/core/agent/runtime_dispatcher.py +377 -0
- klaude_code-2.23.0/src/klaude_code/core/agent/runtime_llm.py +131 -0
- klaude_code-2.21.0/src/klaude_code/core/manager/sub_agent_manager.py → klaude_code-2.23.0/src/klaude_code/core/agent/runtime_sub_agent.py +17 -37
- klaude_code-2.23.0/src/klaude_code/core/agent/session_title.py +116 -0
- {klaude_code-2.21.0/src/klaude_code/core → klaude_code-2.23.0/src/klaude_code/core/agent}/task.py +27 -6
- {klaude_code-2.21.0/src/klaude_code/core → klaude_code-2.23.0/src/klaude_code/core/agent}/turn.py +87 -39
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/agent_profile.py +26 -25
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/compaction/compaction.py +95 -12
- klaude_code-2.23.0/src/klaude_code/core/control/__init__.py +16 -0
- klaude_code-2.23.0/src/klaude_code/core/control/event_bus.py +215 -0
- klaude_code-2.23.0/src/klaude_code/core/control/event_relay.py +160 -0
- klaude_code-2.23.0/src/klaude_code/core/control/runtime_facade.py +508 -0
- klaude_code-2.23.0/src/klaude_code/core/control/session_actor.py +535 -0
- klaude_code-2.23.0/src/klaude_code/core/control/session_registry.py +420 -0
- klaude_code-2.23.0/src/klaude_code/core/control/user_interaction.py +16 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/memory.py +50 -15
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/prompts/base-system-prompt.md +2 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/prompts/system_prompt.py +58 -14
- klaude_code-2.23.0/src/klaude_code/core/session_stats.py +127 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/__init__.py +14 -3
- klaude_code-2.21.0/src/klaude_code/core/tool/task_tool.md → klaude_code-2.23.0/src/klaude_code/core/tool/agent_tool.md +3 -3
- klaude_code-2.21.0/src/klaude_code/core/tool/task_tool.py → klaude_code-2.23.0/src/klaude_code/core/tool/agent_tool.py +21 -19
- klaude_code-2.23.0/src/klaude_code/core/tool/ask_user_question_tool.md +10 -0
- klaude_code-2.23.0/src/klaude_code/core/tool/ask_user_question_tool.py +298 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/context.py +24 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/apply_patch_tool.py +57 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/diff_builder.py +16 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/edit_tool.py +7 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/read_tool.py +77 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/write_tool.py +13 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/rewind_tool.md +1 -1
- klaude_code-2.23.0/src/klaude_code/core/tool/shell/bash_tool.md +5 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/shell/bash_tool.py +56 -10
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/shell/command_safety.py +9 -9
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/todo/todo_write_tool.py +3 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/tool_runner.py +50 -12
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/web_search_tool.py +70 -53
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/anthropic/client.py +9 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/anthropic/input.py +6 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/bedrock_anthropic/client.py +0 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/claude/client.py +0 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/copilot/client.py +4 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/google/client.py +12 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/google/input.py +11 -3
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/google_vertex/client.py +7 -2
- klaude_code-2.23.0/src/klaude_code/llm/image.py +310 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/input_common.py +8 -13
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_codex/client.py +0 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_compatible/client.py +0 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_compatible/stream.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_responses/client.py +49 -9
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_responses/input.py +6 -3
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openrouter/client.py +0 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openrouter/input.py +13 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openrouter/reasoning.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/registry.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/stream_parts.py +2 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/log.py +3 -6
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/__init__.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/events.py +205 -7
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/llm_param.py +18 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/message.py +6 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/model.py +73 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/model_id.py +8 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/op.py +81 -30
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/op_handler.py +30 -5
- klaude_code-2.23.0/src/klaude_code/protocol/sub_agent/AGENTS.md +18 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/sub_agent/__init__.py +4 -4
- klaude_code-2.21.0/src/klaude_code/protocol/sub_agent/task.py → klaude_code-2.23.0/src/klaude_code/protocol/sub_agent/general_purpose.py +2 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/tools.py +2 -1
- klaude_code-2.23.0/src/klaude_code/protocol/user_interaction.py +75 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/codec.py +12 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/export.py +32 -10
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/selector.py +5 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/session.py +223 -61
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/store.py +83 -5
- klaude_code-2.23.0/src/klaude_code/skill/AGENTS.md +28 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/.git +1 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/.gitignore +2 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/SOURCES.md +3 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/SKILL.md +567 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/authentication.md +202 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/commands.md +264 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/profiling.md +120 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/proxy-support.md +194 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/session-management.md +193 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/snapshot-refs.md +194 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/references/video-recording.md +173 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/templates/authenticated-session.sh +105 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/templates/capture-workflow.sh +69 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/agent-browser/templates/form-automation.sh +62 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/download-yt-sub/SKILL.md +27 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/download-yt-sub/scripts/download_subtitles.sh +77 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/SKILL.md +8 -7
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/cli.md +16 -7
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/gemini-api.md +15 -6
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/prompting.md +4 -3
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/sample-prompts.md +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/scripts/gemini_image_gen.py +118 -49
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/SKILL.md +61 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/3d.md +86 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/animations.md +27 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/assets.md +78 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/audio-visualization.md +198 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/audio.md +169 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/calculate-metadata.md +134 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/can-decode.md +75 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/charts.md +120 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/compositions.md +154 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/display-captions.md +184 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/extract-frames.md +229 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/ffmpeg.md +38 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/fonts.md +152 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/get-audio-duration.md +58 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-duration.md +60 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/gifs.md +141 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/images.md +134 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/import-srt-captions.md +69 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/light-leaks.md +73 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/lottie.md +70 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/maps.md +412 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-text.md +140 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/parameters.md +109 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/sequencing.md +118 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/sfx.md +30 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/subtitles.md +36 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/tailwind.md +11 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/text-animations.md +20 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/timing.md +179 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/transcribe-captions.md +70 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/transitions.md +197 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/transparent-videos.md +106 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/trimming.md +51 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/videos.md +171 -0
- klaude_code-2.23.0/src/klaude_code/skill/assets/remotion-best-practices/rules/voiceover.md +99 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/render-mermaid/SKILL.md +9 -2
- klaude_code-2.23.0/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +431 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/loader.py +43 -2
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/__init__.py +0 -3
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/__init__.py +11 -18
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/auth_selector.py +15 -9
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/command_abc.py +11 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/compact_cmd.py +6 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/continue_cmd.py +6 -6
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/copy_cmd.py +6 -8
- klaude_code-2.23.0/src/klaude_code/tui/command/debug_cmd.py +37 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/export_cmd.py +5 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/fork_session_cmd.py +11 -14
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/login_cmd.py +9 -13
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/logout_cmd.py +9 -13
- klaude_code-2.23.0/src/klaude_code/tui/command/model_cmd.py +40 -0
- klaude_code-2.21.0/src/klaude_code/tui/command/clear_cmd.py → klaude_code-2.23.0/src/klaude_code/tui/command/new_cmd.py +7 -6
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/refresh_cmd.py +4 -3
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/registry.py +15 -37
- klaude_code-2.23.0/src/klaude_code/tui/command/status_cmd.py +20 -0
- klaude_code-2.23.0/src/klaude_code/tui/command/sub_agent_model_cmd.py +28 -0
- klaude_code-2.23.0/src/klaude_code/tui/command/thinking_cmd.py +24 -0
- klaude_code-2.21.0/src/klaude_code/protocol/commands.py → klaude_code-2.23.0/src/klaude_code/tui/command/types.py +1 -3
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/commands.py +8 -2
- klaude_code-2.23.0/src/klaude_code/tui/components/command_output.py +130 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/developer.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/metadata.py +153 -54
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/markdown.py +23 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/status.py +11 -16
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/theme.py +18 -7
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/tools.py +108 -20
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/welcome.py +14 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/display.py +28 -5
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/completers.py +113 -26
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/images.py +0 -127
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/key_bindings.py +1 -1
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/prompt_toolkit.py +55 -4
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/machine.py +371 -79
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/renderer.py +74 -51
- klaude_code-2.23.0/src/klaude_code/tui/runner.py +550 -0
- klaude_code-2.23.0/src/klaude_code/tui/terminal/ask_user_question.py +837 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/control.py +27 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/notifier.py +1 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/selector.py +69 -22
- klaude_code-2.21.0/src/klaude_code/tui/command/resume_cmd.py → klaude_code-2.23.0/src/klaude_code/tui/terminal/session_selector.py +3 -47
- klaude_code-2.23.0/src/klaude_code/tui/terminal/title.py +60 -0
- klaude_code-2.23.0/src/klaude_code/web/__init__.py +5 -0
- klaude_code-2.23.0/src/klaude_code/web/app.py +99 -0
- klaude_code-2.23.0/src/klaude_code/web/display.py +21 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/abap-BdImnpbu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/actionscript-3-CoDkCxhg.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ada-bCR0ucgS.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/andromeeda-C4gqWexZ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/angular-html-CU67Zn6k.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/angular-ts-BwZT4LLn.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/apache-Pmp26Uib.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/apex-D8_7TLub.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/apl-dKokRX4l.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/applescript-Co6uUVPk.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ara-BRHolxvo.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/asciidoc-Ve4PFQV2.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/asm-D_Q5rh1f.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/astro-CbQHKStN.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/awk-DMzUqQB5.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ayu-dark-DYE7WIF3.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ayu-light-BA47KaF1.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ayu-mirage-32ctXXKs.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ballerina-BFfxhgS-.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/bat-BkioyH1T.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/beancount-k_qm7-4y.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/berry-uYugtg8r.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/bibtex-CHM0blh-.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/bicep-Bmn6On1c.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/bird2-DPOp833l.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/blade-D4QpJJKB.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/bsl-BO_Y6i37.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/c-BIGW1oBm.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/c3-eo99z4R2.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cadence-Bv_4Rxtq.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cairo-KRGpt6FW.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/clarity-D53aC0YG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/clojure-P80f7IUj.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cmake-D1j8_8rp.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cobol-nwyudZeR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/codeowners-Bp6g37R7.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/codeql-DsOJ9woJ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/coffee-Ch7k5sss.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/coq-DkFqJrB1.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cpp-CofmeUqb.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/crystal-tKQVLTB8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/csharp-COcwbKMJ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/css-DPfMkruS.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/csv-fuZLfV_i.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cue-D82EKSYY.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/cypher-COkxafJQ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/d-85-TOEBH.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dark-plus-C3mMm8J8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dart-CF10PKvl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dax-CEL-wOlO.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/desktop-BmXAJ9_W.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/diff-D97Zzqfu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/docker-BcOcwvcX.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dotenv-Da5cRb03.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dracula-BzJJZx-M.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/dream-maker-BtqSS_iP.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/edge-BkV0erSs.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/elixir-CDX3lj18.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/elm-DbKCFpqz.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/erb-B12qg9BL.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/erlang-DsQrWhSR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/everforest-light-C8M2exoo.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/fennel-BYunw83y.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/fish-BvzEVeQv.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/fluent-C4IJs8-o.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/fortran-free-form-BxgE0vQu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/fsharp-CXgrBDvD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gdresource-BOOCDP_w.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gdscript-C5YyOfLZ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gdshader-DkwncUOv.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/genie-D0YGMca9.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gherkin-DyxjwDmM.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/git-commit-F4YmCXRG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/git-rebase-r7XF79zn.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-dark-DHJKELXO.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-light-DAi9KRSo.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-light-default-D7oLnXFd.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gleam-BspZqrRM.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/glimmer-js-Rg0-pVw9.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/glimmer-ts-U6CK756n.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/glsl-DplSGwfg.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gn-n2N0HUVH.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gnuplot-DdkO51Og.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/go-CxLEBnE3.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/graphql-ChdNCCLP.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/groovy-gcz8RCvz.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hack-CaT9iCJl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/haml-B8DHNrY2.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/handlebars-BL8al0AC.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/haskell-Df6bDoY_.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/haxe-CzTSHFRz.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hcl-BWvSN4gD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/highlighted-body-B3W2YXNL-OfBXblVk.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hjson-D5-asLiD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hlsl-D3lLCCz7.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/horizon-BUw7H-hv.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/horizon-bright-Cn-bp-IR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/houston-DnULxvSX.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/html-GMplVEZG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/html-derivative-BFtXZ54Q.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/http-jrhK8wxY.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hurl-irOxFIW8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hxml-Bvhsp5Yf.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/hy-DFXneXwc.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/imba-DGztddWO.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/index-B7rfFyoU.js +1790 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/index-SQlcC1zl.css +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ini-BEwlwnbL.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/java-CylS5w8V.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/javascript-wDzz0qaB.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jinja-4LBKfQ-Z.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jison-wvAkD_A8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/json-Cp-IABpG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/json5-C9tS-k6U.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jsonc-Des-eS-w.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jsonl-DcaNXYhu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jsonnet-DFQXde-d.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jssm-C2t-YnRu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/jsx-g9-lgVsj.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/julia-CxzCAyBv.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/just-Cw27pwNe.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/kdl-DV7GczEv.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/kotlin-BdnUsdx6.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/kusto-DZf3V79B.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/laserwave-DUszq2jm.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/latex-CWtU0Tv5.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/lean-BZvkOJ9d.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/less-B1dDrJ26.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/light-plus-B7mTdjB0.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/liquid-DYVedYrR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/llvm-DjAJT7YJ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/log-2UxHyX5q.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/logo-BtOb2qkB.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/lua-BaeVxFsk.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/luau-C-HG3fhB.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/make-CHLpvVh8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/markdown-Cvjx9yec.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/marko-CnJfTvn9.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/material-theme-D5KoaKCx.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/matlab-D7o27uSR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/mdc-BMNejdWA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/mermaid-mWjccvbQ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/min-dark-CafNBF8u.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/min-light-CTRr51gU.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/mipsasm-CKIfxQSi.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/mojo-rZm6bMo-.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/monokai-D4h5O-jR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/moonbit-_H4v1dQx.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/move-IF9eRakj.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/narrat-DRg8JJMk.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nextflow-Zz6hmt5N.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nginx-BpAMiNFr.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/night-owl-C39BiMTA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/night-owl-light-CMTm3GFP.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nim-CVrawwO9.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nix-CwoSXNpI.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nord-Ddv68eIx.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/nushell-Cz2AlsmD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/objective-c-DXmwc3jG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/objective-cpp-CLxacb5B.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ocaml-C0hk2d4L.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/odin-BBf5iR-q.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/one-light-C3Wv6jpd.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/openscad-C4EeE6gA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/pascal-D93ZcfNL.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/perl-C0TMdlhV.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/php-Dhbhpdrm.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/pierre-dark-BXuwtOqb.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/pierre-light-dckrK0oj.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/pkl-u5AG7uiY.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/plastic-3e1v2bzS.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/plsql-ChMvpjG-.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/po-BTJTHyun.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/poimandres-CS3Unz2-.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/polar-C0HS_06l.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/postcss-CXtECtnM.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/powerquery-CEu0bR-o.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/powershell-Dpen1YoG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/prisma-Dd19v3D-.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/prolog-CbFg5uaA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/proto-C7zT0LnQ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/pug-CGlum2m_.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/puppet-BMWR74SV.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/purescript-CklMAg4u.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/python-B6aJPvgy.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/qml-3beO22l8.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/qmldir-C8lEn-DE.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/qss-IeuSbFQv.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/r-Dspwwk_N.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/racket-BqYA7rlc.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/raku-DXvB9xmW.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/razor-Uh8Bk_45.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/red-bN70gL4F.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/reg-C-SQnVFl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/regexp-CDVJQ6XC.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rel-C3B-1QV4.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/riscv-BM1_JUlF.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ron-D8l8udqQ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rose-pine-qdsjHGoJ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rosmsg-BJDFO7_C.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rst-BrH8l1NY.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ruby-Dw2BHqvy.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/rust-B1yitclQ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/sas-cz2c8ADy.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/sass-Cj5Yp3dK.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/scala-C151Ov-r.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/scheme-C98Dy4si.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/scss-OYdSNvt2.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/sdbl-DVxCFoDh.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/shellscript-Yzrsuije.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/shellsession-BADoaaVG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/slack-dark-BthQWCQV.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/slack-ochin-DqwNpetd.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/smalltalk-BERRCDM3.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/snazzy-light-Bw305WKR.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/solarized-light-L9t79GZl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/solidity-rGO070M0.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/soy-Brmx7dQM.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/sparql-rVzFXLq3.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/splunk-BtCnVYZw.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/sql-BLtJtn59.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ssh-config-_ykCGR6B.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/stata-BH5u7GGu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/stylus-BEDo0Tqx.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/surrealql-Bq5Q-fJD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/svelte-C_ipcX3V.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/swift-D82vCrfD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/system-verilog-CnnmHF94.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/systemd-4A_iFExJ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/talonscript-CkByrt1z.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tasl-QIJgUcNo.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tcl-dwOrl1Do.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/templ-P3uqSqPl.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/terraform-BETggiCN.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tex-idrVyKtj.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tokyo-night-hegEt444.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/toml-vGWfd6FD.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/ts-tags-zn1MmPIZ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tsv-B_m7g4N7.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/tsx-COt5Ahok.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/turtle-BsS91CYL.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/twig-DNn4PbVi.js +1 -0
- 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/assets/typescript-BPQ3VLAy.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/typespec-BGHnOYBU.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/typst-DHCkPAjA.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/v-BcVCzyr7.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vala-CsfeWuGM.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vb-D17OF-Vu.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/verilog-BQ8w6xss.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vesper-DU1UobuO.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vhdl-CeAyd5Ju.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/viml-CJc9bBzg.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vue-DN_0RTcg.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vue-html-AaS7Mt5G.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vue-vine-CQOfvN7w.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/vyper-CDx5xZoG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wasm-CG6Dc4jp.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wasm-MzD3tlZU.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wenyan-BV7otONQ.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wgsl-Dx-B1_4e.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wikitext-BhOHFoWU.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wit-5i3qLPDT.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/wolfram-lXgVvXCa.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/xml-sdJ4AIDG.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/xsl-CtQFsRM5.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/yaml-Buea-lGh.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/zenscript-DVFEvuxE.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/assets/zig-VOosw3JB.js +1 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/favicon.svg +4 -0
- klaude_code-2.23.0/src/klaude_code/web/dist/index.html +20 -0
- klaude_code-2.23.0/src/klaude_code/web/file_access.py +51 -0
- klaude_code-2.23.0/src/klaude_code/web/interaction.py +56 -0
- klaude_code-2.23.0/src/klaude_code/web/live_events.py +51 -0
- klaude_code-2.23.0/src/klaude_code/web/routes/__init__.py +6 -0
- klaude_code-2.23.0/src/klaude_code/web/routes/config.py +27 -0
- klaude_code-2.23.0/src/klaude_code/web/routes/files.py +27 -0
- klaude_code-2.23.0/src/klaude_code/web/routes/sessions.py +369 -0
- klaude_code-2.23.0/src/klaude_code/web/routes/ws.py +415 -0
- klaude_code-2.23.0/src/klaude_code/web/server.py +167 -0
- klaude_code-2.23.0/src/klaude_code/web/session_access.py +51 -0
- klaude_code-2.23.0/src/klaude_code/web/session_index.py +273 -0
- klaude_code-2.23.0/src/klaude_code/web/state.py +39 -0
- klaude_code-2.21.0/src/klaude_code/app/runtime.py +0 -184
- klaude_code-2.21.0/src/klaude_code/auth/copilot/token_manager.py +0 -27
- klaude_code-2.21.0/src/klaude_code/cli/list_model.py +0 -589
- klaude_code-2.21.0/src/klaude_code/core/executor.py +0 -1042
- klaude_code-2.21.0/src/klaude_code/core/manager/__init__.py +0 -17
- klaude_code-2.21.0/src/klaude_code/core/manager/llm_clients.py +0 -42
- klaude_code-2.21.0/src/klaude_code/core/manager/llm_clients_builder.py +0 -78
- klaude_code-2.21.0/src/klaude_code/core/tool/shell/bash_tool.md +0 -1
- klaude_code-2.21.0/src/klaude_code/llm/image.py +0 -67
- klaude_code-2.21.0/src/klaude_code/protocol/sub_agent/AGENTS.md +0 -19
- klaude_code-2.21.0/src/klaude_code/skill/assets/.DS_Store +0 -0
- klaude_code-2.21.0/src/klaude_code/skill/assets/gpt-image-gen/.DS_Store +0 -0
- klaude_code-2.21.0/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +0 -182
- klaude_code-2.21.0/src/klaude_code/tui/command/debug_cmd.py +0 -42
- klaude_code-2.21.0/src/klaude_code/tui/command/export_online_cmd.py +0 -150
- klaude_code-2.21.0/src/klaude_code/tui/command/model_cmd.py +0 -55
- klaude_code-2.21.0/src/klaude_code/tui/command/prompt-init.md +0 -45
- klaude_code-2.21.0/src/klaude_code/tui/command/prompt_command.py +0 -78
- klaude_code-2.21.0/src/klaude_code/tui/command/status_cmd.py +0 -152
- klaude_code-2.21.0/src/klaude_code/tui/command/sub_agent_model_cmd.py +0 -238
- klaude_code-2.21.0/src/klaude_code/tui/command/thinking_cmd.py +0 -85
- klaude_code-2.21.0/src/klaude_code/tui/components/command_output.py +0 -97
- klaude_code-2.21.0/src/klaude_code/tui/runner.py +0 -338
- klaude_code-2.21.0/src/klaude_code/ui/__init__.py +0 -16
- klaude_code-2.21.0/src/klaude_code/ui/core/__init__.py +0 -1
- klaude_code-2.21.0/src/klaude_code/ui/core/display.py +0 -103
- klaude_code-2.21.0/src/klaude_code/ui/core/input.py +0 -72
- klaude_code-2.21.0/src/klaude_code/ui/terminal/__init__.py +0 -8
- klaude_code-2.21.0/src/klaude_code/ui/terminal/title.py +0 -38
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/.DS_Store +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/AGENTS.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/base.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/claude/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/claude/exceptions.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/claude/oauth.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/claude/token_manager.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/codex/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/codex/exceptions.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/codex/oauth.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/codex/token_manager.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/copilot/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/copilot/exceptions.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/auth/env.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/debug.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/cli/self_update.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/assets/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/config/model_matcher.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/bash_mode.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/compaction/AGENTS.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/compaction/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/compaction/overflow.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/compaction/prompts.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/loaded_skills.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/prompts/auto-memory-prompt.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/rewind/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/rewind/manager.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/_utils.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/read_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/file/write_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/offload.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/report_back_tool.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/rewind_tool.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/shell/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/todo/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/todo/todo_write_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/tool_abc.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/tool_registry.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/external_content.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/ssrf.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/web_cache.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/web_fetch_tool.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/anthropic/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/bedrock_anthropic/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/claude/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/client.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/copilot/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/google/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/google_vertex/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/json_stable.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_codex/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_compatible/input.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openai_responses/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/openrouter/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/partial_message.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/llm/usage.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/session/templates/export_session.html +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/.DS_Store +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/executing-plans/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/frontend-design/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/LICENSE.txt +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/references/cli.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/references/codex-network.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/references/image-api.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/references/prompting.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/references/sample-prompts.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/gpt-image-gen/scripts/image_gen.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/vertex-setup.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/forms.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/reference.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/check_bounding_boxes.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/check_fillable_fields.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/convert_pdf_to_images.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/create_validation_image.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_field_info.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_structure.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/fill_fillable_fields.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/render-mermaid/.gitignore +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/render-mermaid/bun.lock +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/render-mermaid/package.json +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/session-logs/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/web-search/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/assets/writing-plans/SKILL.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/manager.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/skill/system_skills.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/command/model_picker.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/bash_syntax.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/common.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/diffs.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/errors.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/cjk_wrap.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/code_panel.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/live.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/rich/quote.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/sub_agent.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/thinking.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/components/user_input.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/AGENTS.md +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/drag_drop.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/input/paste.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/__init__.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/color.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/image.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/tui/terminal/progress_bar.py +0 -0
- {klaude_code-2.21.0 → klaude_code-2.23.0}/src/klaude_code/update.py +0 -0
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: klaude-code
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.23.0
|
|
4
4
|
Summary: Minimal code agent CLI
|
|
5
5
|
Requires-Dist: anthropic>=0.66.0
|
|
6
6
|
Requires-Dist: chardet>=5.2.0,<6
|
|
7
|
-
Requires-Dist: ddgs>=9.9.3
|
|
8
7
|
Requires-Dist: diff-match-patch>=20241021
|
|
9
8
|
Requires-Dist: filelock>=3.20.3
|
|
9
|
+
Requires-Dist: fastapi
|
|
10
10
|
Requires-Dist: google-genai>=1.56.0
|
|
11
11
|
Requires-Dist: markdown-it-py>=4.0.0
|
|
12
|
-
Requires-Dist: openai>=
|
|
12
|
+
Requires-Dist: openai>=2.24.0
|
|
13
13
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
14
14
|
Requires-Dist: pydantic>=2.11.7
|
|
15
15
|
Requires-Dist: python-socks>=2.8.1
|
|
16
16
|
Requires-Dist: pyyaml>=6.0.2
|
|
17
17
|
Requires-Dist: rich>=14.1.0
|
|
18
|
+
Requires-Dist: sse-starlette
|
|
18
19
|
Requires-Dist: trafilatura>=2.0.0
|
|
19
20
|
Requires-Dist: typer>=0.17.3
|
|
21
|
+
Requires-Dist: uvicorn
|
|
20
22
|
Requires-Python: >=3.13
|
|
21
23
|
Description-Content-Type: text/markdown
|
|
22
24
|
|
|
@@ -29,7 +31,7 @@ Minimal code agent CLI.
|
|
|
29
31
|
- **Keep reasoning item in context**: Interleaved thinking support
|
|
30
32
|
- **Model-aware tools**: Claude Code tool set for Opus, `apply_patch` for GPT-5/Codex
|
|
31
33
|
- **Reminders**: Cooldown-based todo tracking, instruction reinforcement and external file change reminder
|
|
32
|
-
- **Sub-agents**: Task, Explore
|
|
34
|
+
- **Sub-agents**: Task, Explore
|
|
33
35
|
- **Structured sub-agent output**: Main agent defines JSON schema and get schema-compliant responses via constrained decoding
|
|
34
36
|
- **Recursive `@file` mentions**: Circular dependency protection, relative path resolution
|
|
35
37
|
- **External file sync**: Monitoring for external edits (linter, manual)
|
|
@@ -96,7 +98,8 @@ export OPENAI_API_KEY=sk-xxx # GPT models
|
|
|
96
98
|
export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
|
|
97
99
|
export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
|
|
98
100
|
export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
|
|
99
|
-
export BRAVE_API_KEY=BSA-xxx # Brave Search (optional,
|
|
101
|
+
export BRAVE_API_KEY=BSA-xxx # Brave Search (optional, WebSearch provider)
|
|
102
|
+
export EXA_API_KEY=exa-xxx # Exa Search (optional, WebSearch provider)
|
|
100
103
|
|
|
101
104
|
# Then just run:
|
|
102
105
|
klaude
|
|
@@ -104,16 +107,39 @@ klaude
|
|
|
104
107
|
|
|
105
108
|
On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
|
|
106
109
|
|
|
110
|
+
You can also configure fallback lists for helper models:
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
fast_model:
|
|
114
|
+
- haiku
|
|
115
|
+
- gemini-flash
|
|
116
|
+
- gpt-5-nano
|
|
117
|
+
|
|
118
|
+
compact_model:
|
|
119
|
+
- gemini-flash
|
|
120
|
+
- haiku
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Klaude tries these entries in order and uses the first available model. `fast_model` is used for session-title generation; `compact_model` is used for compact/helper tasks.
|
|
124
|
+
|
|
107
125
|
#### Built-in Providers
|
|
108
126
|
|
|
109
|
-
| Provider
|
|
110
|
-
|
|
111
|
-
| anthropic
|
|
112
|
-
| openai
|
|
113
|
-
| openrouter
|
|
114
|
-
|
|
|
115
|
-
|
|
|
116
|
-
|
|
|
127
|
+
| Provider | Env Variable | Models |
|
|
128
|
+
|------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
|
129
|
+
| anthropic | `ANTHROPIC_API_KEY` | sonnet, sonnet-no-thinking, opus, haiku |
|
|
130
|
+
| openai | `OPENAI_API_KEY` | gpt-5.4-high, gpt-5.4-xhigh, gpt-5.3-codex, gpt-5.3-codex-xhigh |
|
|
131
|
+
| openrouter | `OPENROUTER_API_KEY` | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, kimi, haiku, sonnet, sonnet-no-thinking, opus, gemini-pro, gemini-flash, grok, minimax, glm |
|
|
132
|
+
| google | `GOOGLE_API_KEY` or `GEMINI_API_KEY` | gemini-pro, gemini-flash |
|
|
133
|
+
| google-vertex | `GOOGLE_APPLICATION_CREDENTIALS`, `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_LOCATION` | gemini-pro, gemini-flash |
|
|
134
|
+
| bedrock | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` | sonnet |
|
|
135
|
+
| deepseek | `DEEPSEEK_API_KEY` | deepseek |
|
|
136
|
+
| moonshot | `MOONSHOT_API_KEY` | kimi |
|
|
137
|
+
| cerebras | `CEREBRAS_API_KEY` | glm |
|
|
138
|
+
| claude-max | N/A (OAuth) | sonnet, sonnet-no-thinking, opus, haiku |
|
|
139
|
+
| codex | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh |
|
|
140
|
+
| github-copilot | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, sonnet, sonnet-4.5, haiku, opus |
|
|
141
|
+
| ark-api | `ARK_API_KEY` | seed-pro, seed-code |
|
|
142
|
+
| ark-coding-plan | `ARK_API_KEY` | seed-code, kimi |
|
|
117
143
|
|
|
118
144
|
List all configured providers and models:
|
|
119
145
|
|
|
@@ -167,6 +193,17 @@ You can add custom models to built-in providers or define new ones. Configuratio
|
|
|
167
193
|
|
|
168
194
|
```yaml
|
|
169
195
|
# ~/.klaude/klaude-config.yaml
|
|
196
|
+
main_model: opus
|
|
197
|
+
|
|
198
|
+
fast_model:
|
|
199
|
+
- haiku
|
|
200
|
+
- gemini-flash
|
|
201
|
+
- gpt-5-nano
|
|
202
|
+
|
|
203
|
+
compact_model:
|
|
204
|
+
- gemini-flash
|
|
205
|
+
- haiku
|
|
206
|
+
|
|
170
207
|
provider_list:
|
|
171
208
|
# Add/Override models for built-in OpenRouter provider
|
|
172
209
|
- provider_name: openrouter
|
|
@@ -196,6 +233,22 @@ provider_list:
|
|
|
196
233
|
- **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
|
|
197
234
|
- **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
|
|
198
235
|
- **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
|
|
236
|
+
- **Model Preference Lists**: `fast_model` and `compact_model` accept either a single string or a list of model selectors. When you provide a list, Klaude tries them in order and picks the first available one.
|
|
237
|
+
|
|
238
|
+
##### Sub-agent Model Configuration
|
|
239
|
+
|
|
240
|
+
`sub_agent_models` only accepts sub-agent types. Current supported keys are:
|
|
241
|
+
|
|
242
|
+
- `general-purpose` (Task sub-agent)
|
|
243
|
+
- `explore` (Explore sub-agent)
|
|
244
|
+
|
|
245
|
+
If a sub-agent type is not configured, it falls back to the main agent model.
|
|
246
|
+
|
|
247
|
+
```yaml
|
|
248
|
+
sub_agent_models:
|
|
249
|
+
general-purpose: sonnet
|
|
250
|
+
explore: haiku
|
|
251
|
+
```
|
|
199
252
|
|
|
200
253
|
##### Supported Protocols
|
|
201
254
|
|
|
@@ -243,7 +296,6 @@ Inside the interactive session (`klaude`), use these commands to streamline your
|
|
|
243
296
|
- `/resume` - Select and resume a previous session.
|
|
244
297
|
- `/fork-session` - Fork current session to a new session ID (supports interactive fork point selection).
|
|
245
298
|
- `/export` - Export last assistant message to a temp Markdown file.
|
|
246
|
-
- `/export-online` - Export and deploy session to surge.sh as a static webpage.
|
|
247
299
|
- `/debug [filters]` - Toggle debug mode and configure debug filters.
|
|
248
300
|
- `/init` - Bootstrap a new project structure or module.
|
|
249
301
|
- `/dev-doc [feature]` - Generate a comprehensive execution plan for a feature.
|
|
@@ -273,4 +325,3 @@ The main agent can spawn specialized sub-agents for specific tasks:
|
|
|
273
325
|
|-----------|---------|
|
|
274
326
|
| **Explore** | Fast codebase exploration - find files, search code, answer questions about the codebase |
|
|
275
327
|
| **Task** | Handle complex multi-step tasks autonomously |
|
|
276
|
-
| **WebAgent** | Search the web, fetch pages, and analyze content. Uses Brave LLM Context API when `BRAVE_API_KEY` is set, otherwise falls back to DuckDuckGo |
|
|
@@ -7,7 +7,7 @@ Minimal code agent CLI.
|
|
|
7
7
|
- **Keep reasoning item in context**: Interleaved thinking support
|
|
8
8
|
- **Model-aware tools**: Claude Code tool set for Opus, `apply_patch` for GPT-5/Codex
|
|
9
9
|
- **Reminders**: Cooldown-based todo tracking, instruction reinforcement and external file change reminder
|
|
10
|
-
- **Sub-agents**: Task, Explore
|
|
10
|
+
- **Sub-agents**: Task, Explore
|
|
11
11
|
- **Structured sub-agent output**: Main agent defines JSON schema and get schema-compliant responses via constrained decoding
|
|
12
12
|
- **Recursive `@file` mentions**: Circular dependency protection, relative path resolution
|
|
13
13
|
- **External file sync**: Monitoring for external edits (linter, manual)
|
|
@@ -74,7 +74,8 @@ export OPENAI_API_KEY=sk-xxx # GPT models
|
|
|
74
74
|
export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
|
|
75
75
|
export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
|
|
76
76
|
export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
|
|
77
|
-
export BRAVE_API_KEY=BSA-xxx # Brave Search (optional,
|
|
77
|
+
export BRAVE_API_KEY=BSA-xxx # Brave Search (optional, WebSearch provider)
|
|
78
|
+
export EXA_API_KEY=exa-xxx # Exa Search (optional, WebSearch provider)
|
|
78
79
|
|
|
79
80
|
# Then just run:
|
|
80
81
|
klaude
|
|
@@ -82,16 +83,39 @@ klaude
|
|
|
82
83
|
|
|
83
84
|
On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
|
|
84
85
|
|
|
86
|
+
You can also configure fallback lists for helper models:
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
fast_model:
|
|
90
|
+
- haiku
|
|
91
|
+
- gemini-flash
|
|
92
|
+
- gpt-5-nano
|
|
93
|
+
|
|
94
|
+
compact_model:
|
|
95
|
+
- gemini-flash
|
|
96
|
+
- haiku
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Klaude tries these entries in order and uses the first available model. `fast_model` is used for session-title generation; `compact_model` is used for compact/helper tasks.
|
|
100
|
+
|
|
85
101
|
#### Built-in Providers
|
|
86
102
|
|
|
87
|
-
| Provider
|
|
88
|
-
|
|
89
|
-
| anthropic
|
|
90
|
-
| openai
|
|
91
|
-
| openrouter
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
103
|
+
| Provider | Env Variable | Models |
|
|
104
|
+
|------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
|
105
|
+
| anthropic | `ANTHROPIC_API_KEY` | sonnet, sonnet-no-thinking, opus, haiku |
|
|
106
|
+
| openai | `OPENAI_API_KEY` | gpt-5.4-high, gpt-5.4-xhigh, gpt-5.3-codex, gpt-5.3-codex-xhigh |
|
|
107
|
+
| openrouter | `OPENROUTER_API_KEY` | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, kimi, haiku, sonnet, sonnet-no-thinking, opus, gemini-pro, gemini-flash, grok, minimax, glm |
|
|
108
|
+
| google | `GOOGLE_API_KEY` or `GEMINI_API_KEY` | gemini-pro, gemini-flash |
|
|
109
|
+
| google-vertex | `GOOGLE_APPLICATION_CREDENTIALS`, `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_LOCATION` | gemini-pro, gemini-flash |
|
|
110
|
+
| bedrock | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` | sonnet |
|
|
111
|
+
| deepseek | `DEEPSEEK_API_KEY` | deepseek |
|
|
112
|
+
| moonshot | `MOONSHOT_API_KEY` | kimi |
|
|
113
|
+
| cerebras | `CEREBRAS_API_KEY` | glm |
|
|
114
|
+
| claude-max | N/A (OAuth) | sonnet, sonnet-no-thinking, opus, haiku |
|
|
115
|
+
| codex | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh |
|
|
116
|
+
| github-copilot | N/A (OAuth) | gpt-5.3-codex, gpt-5.3-codex-xhigh, gpt-5.4-high, gpt-5.4-xhigh, sonnet, sonnet-4.5, haiku, opus |
|
|
117
|
+
| ark-api | `ARK_API_KEY` | seed-pro, seed-code |
|
|
118
|
+
| ark-coding-plan | `ARK_API_KEY` | seed-code, kimi |
|
|
95
119
|
|
|
96
120
|
List all configured providers and models:
|
|
97
121
|
|
|
@@ -145,6 +169,17 @@ You can add custom models to built-in providers or define new ones. Configuratio
|
|
|
145
169
|
|
|
146
170
|
```yaml
|
|
147
171
|
# ~/.klaude/klaude-config.yaml
|
|
172
|
+
main_model: opus
|
|
173
|
+
|
|
174
|
+
fast_model:
|
|
175
|
+
- haiku
|
|
176
|
+
- gemini-flash
|
|
177
|
+
- gpt-5-nano
|
|
178
|
+
|
|
179
|
+
compact_model:
|
|
180
|
+
- gemini-flash
|
|
181
|
+
- haiku
|
|
182
|
+
|
|
148
183
|
provider_list:
|
|
149
184
|
# Add/Override models for built-in OpenRouter provider
|
|
150
185
|
- provider_name: openrouter
|
|
@@ -174,6 +209,22 @@ provider_list:
|
|
|
174
209
|
- **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
|
|
175
210
|
- **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
|
|
176
211
|
- **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
|
|
212
|
+
- **Model Preference Lists**: `fast_model` and `compact_model` accept either a single string or a list of model selectors. When you provide a list, Klaude tries them in order and picks the first available one.
|
|
213
|
+
|
|
214
|
+
##### Sub-agent Model Configuration
|
|
215
|
+
|
|
216
|
+
`sub_agent_models` only accepts sub-agent types. Current supported keys are:
|
|
217
|
+
|
|
218
|
+
- `general-purpose` (Task sub-agent)
|
|
219
|
+
- `explore` (Explore sub-agent)
|
|
220
|
+
|
|
221
|
+
If a sub-agent type is not configured, it falls back to the main agent model.
|
|
222
|
+
|
|
223
|
+
```yaml
|
|
224
|
+
sub_agent_models:
|
|
225
|
+
general-purpose: sonnet
|
|
226
|
+
explore: haiku
|
|
227
|
+
```
|
|
177
228
|
|
|
178
229
|
##### Supported Protocols
|
|
179
230
|
|
|
@@ -221,7 +272,6 @@ Inside the interactive session (`klaude`), use these commands to streamline your
|
|
|
221
272
|
- `/resume` - Select and resume a previous session.
|
|
222
273
|
- `/fork-session` - Fork current session to a new session ID (supports interactive fork point selection).
|
|
223
274
|
- `/export` - Export last assistant message to a temp Markdown file.
|
|
224
|
-
- `/export-online` - Export and deploy session to surge.sh as a static webpage.
|
|
225
275
|
- `/debug [filters]` - Toggle debug mode and configure debug filters.
|
|
226
276
|
- `/init` - Bootstrap a new project structure or module.
|
|
227
277
|
- `/dev-doc [feature]` - Generate a comprehensive execution plan for a feature.
|
|
@@ -251,4 +301,3 @@ The main agent can spawn specialized sub-agents for specific tasks:
|
|
|
251
301
|
|-----------|---------|
|
|
252
302
|
| **Explore** | Fast codebase exploration - find files, search code, answer questions about the codebase |
|
|
253
303
|
| **Task** | Handle complex multi-step tasks autonomously |
|
|
254
|
-
| **WebAgent** | Search the web, fetch pages, and analyze content. Uses Brave LLM Context API when `BRAVE_API_KEY` is set, otherwise falls back to DuckDuckGo |
|
|
@@ -4,26 +4,28 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "klaude-code"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.23.0"
|
|
8
8
|
description = "Minimal code agent CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13"
|
|
11
11
|
dependencies = [
|
|
12
12
|
"anthropic>=0.66.0",
|
|
13
13
|
"chardet>=5.2.0,<6",
|
|
14
|
-
"ddgs>=9.9.3",
|
|
15
14
|
"diff-match-patch>=20241021",
|
|
16
15
|
"filelock>=3.20.3",
|
|
16
|
+
"fastapi",
|
|
17
17
|
"google-genai>=1.56.0",
|
|
18
18
|
"markdown-it-py>=4.0.0",
|
|
19
|
-
"openai>=
|
|
19
|
+
"openai>=2.24.0",
|
|
20
20
|
"prompt-toolkit>=3.0.52",
|
|
21
21
|
"pydantic>=2.11.7",
|
|
22
22
|
"python-socks>=2.8.1",
|
|
23
23
|
"pyyaml>=6.0.2",
|
|
24
24
|
"rich>=14.1.0",
|
|
25
|
+
"sse-starlette",
|
|
25
26
|
"trafilatura>=2.0.0",
|
|
26
27
|
"typer>=0.17.3",
|
|
28
|
+
"uvicorn",
|
|
27
29
|
]
|
|
28
30
|
|
|
29
31
|
[project.scripts]
|
|
@@ -72,6 +74,8 @@ reportMissingImports = "warning"
|
|
|
72
74
|
reportMissingModuleSource = "warning"
|
|
73
75
|
exclude = [
|
|
74
76
|
".venv/",
|
|
77
|
+
".pnpm-store/",
|
|
78
|
+
"web/node_modules/",
|
|
75
79
|
"src/klaude_code/skill/assets/**/scripts/",
|
|
76
80
|
]
|
|
77
81
|
|
|
@@ -98,8 +102,8 @@ type = "layers"
|
|
|
98
102
|
layers = [
|
|
99
103
|
"klaude_code.cli",
|
|
100
104
|
"klaude_code.tui",
|
|
105
|
+
"klaude_code.web",
|
|
101
106
|
"klaude_code.app",
|
|
102
|
-
"klaude_code.ui",
|
|
103
107
|
"klaude_code.core",
|
|
104
108
|
"klaude_code.skill",
|
|
105
109
|
"klaude_code.session",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Application-layer runtime helpers.
|
|
2
2
|
|
|
3
|
-
This package coordinates core execution (
|
|
3
|
+
This package coordinates core execution (RuntimeFacade) with frontend displays.
|
|
4
4
|
Terminal-specific rendering and input handling live in `klaude_code.tui`.
|
|
5
5
|
"""
|
|
6
6
|
|
|
@@ -136,7 +136,7 @@ def execute_login(provider: str) -> None:
|
|
|
136
136
|
except Exception as e:
|
|
137
137
|
log((f"Login failed: {e}", "red"))
|
|
138
138
|
raise typer.Exit(1) from None
|
|
139
|
-
case "copilot":
|
|
139
|
+
case "github-copilot" | "copilot":
|
|
140
140
|
from klaude_code.auth.copilot.oauth import CopilotOAuth
|
|
141
141
|
from klaude_code.auth.copilot.token_manager import CopilotTokenManager
|
|
142
142
|
|
|
@@ -145,7 +145,7 @@ def execute_login(provider: str) -> None:
|
|
|
145
145
|
if token_manager.is_logged_in():
|
|
146
146
|
state = token_manager.get_state()
|
|
147
147
|
if state and not state.is_expired():
|
|
148
|
-
log(("You are already logged in to Copilot.", "green"))
|
|
148
|
+
log(("You are already logged in to GitHub Copilot.", "green"))
|
|
149
149
|
domain = state.enterprise_domain or "github.com"
|
|
150
150
|
expires_dt = datetime.datetime.fromtimestamp(state.expires_at, tz=datetime.UTC)
|
|
151
151
|
log(f" Domain: {domain}")
|
|
@@ -232,18 +232,18 @@ def execute_logout(provider: str) -> None:
|
|
|
232
232
|
if typer.confirm("Are you sure you want to logout from Claude?"):
|
|
233
233
|
token_manager.delete()
|
|
234
234
|
log(("Logged out from Claude.", "green"))
|
|
235
|
-
case "copilot":
|
|
235
|
+
case "github-copilot" | "copilot":
|
|
236
236
|
from klaude_code.auth.copilot.token_manager import CopilotTokenManager
|
|
237
237
|
|
|
238
238
|
token_manager = CopilotTokenManager()
|
|
239
239
|
|
|
240
240
|
if not token_manager.is_logged_in():
|
|
241
|
-
log("You are not logged in to Copilot.")
|
|
241
|
+
log("You are not logged in to GitHub Copilot.")
|
|
242
242
|
return
|
|
243
243
|
|
|
244
|
-
if typer.confirm("Are you sure you want to logout from Copilot?"):
|
|
244
|
+
if typer.confirm("Are you sure you want to logout from GitHub Copilot?"):
|
|
245
245
|
token_manager.delete()
|
|
246
|
-
log(("Logged out from Copilot.", "green"))
|
|
246
|
+
log(("Logged out from GitHub Copilot.", "green"))
|
|
247
247
|
case _:
|
|
248
|
-
log((f"Error: Unknown provider '{provider}'. Supported: codex, claude, copilot", "red"))
|
|
248
|
+
log((f"Error: Unknown provider '{provider}'. Supported: codex, claude, github-copilot", "red"))
|
|
249
249
|
raise typer.Exit(1)
|
{klaude_code-2.21.0/src/klaude_code/cli → klaude_code-2.23.0/src/klaude_code/app}/log_viewer.html
RENAMED
|
@@ -86,6 +86,25 @@ body {
|
|
|
86
86
|
flex: 1;
|
|
87
87
|
letter-spacing: -0.01em;
|
|
88
88
|
}
|
|
89
|
+
.nav-btn {
|
|
90
|
+
background: var(--bg-surface);
|
|
91
|
+
border: 1px solid var(--border);
|
|
92
|
+
color: var(--fg-secondary);
|
|
93
|
+
padding: 4px 10px;
|
|
94
|
+
border-radius: 6px;
|
|
95
|
+
font-size: 16px;
|
|
96
|
+
font-weight: 700;
|
|
97
|
+
font-family: var(--font-sans);
|
|
98
|
+
cursor: pointer;
|
|
99
|
+
transition: all 0.2s ease;
|
|
100
|
+
white-space: nowrap;
|
|
101
|
+
box-shadow: 0 1px 2px rgba(0,0,0,0.02);
|
|
102
|
+
}
|
|
103
|
+
.nav-btn:hover {
|
|
104
|
+
background: var(--bg-hover);
|
|
105
|
+
color: var(--fg);
|
|
106
|
+
border-color: var(--border-strong);
|
|
107
|
+
}
|
|
89
108
|
#toolbar .filter-group {
|
|
90
109
|
display: flex;
|
|
91
110
|
gap: 6px;
|
|
@@ -182,6 +201,8 @@ body {
|
|
|
182
201
|
.log-line .dtype-RESPONSE { color: #5b21b6; background: #ede9fe; }
|
|
183
202
|
.log-line .dtype-EXECUTION { color: #0f766e; background: #ccfbf1; }
|
|
184
203
|
.log-line .dtype-TERMINAL { color: #be123c; background: #ffe4e6; }
|
|
204
|
+
.log-line .dtype-OPERATION { color: #1e1b4b; background: #e0e7ff; }
|
|
205
|
+
.log-line .dtype-EVENT_BUS { color: #6d28d9; background: #f3e8ff; }
|
|
185
206
|
.log-line .msg { color: var(--fg-secondary); }
|
|
186
207
|
.log-line .json-inline { color: var(--fg-tertiary); }
|
|
187
208
|
.log-line .lineno {
|
|
@@ -214,11 +235,14 @@ body {
|
|
|
214
235
|
#right {
|
|
215
236
|
width: 50%;
|
|
216
237
|
min-width: 300px;
|
|
217
|
-
display:
|
|
238
|
+
display: none;
|
|
218
239
|
flex-direction: column;
|
|
219
240
|
background: var(--bg-surface);
|
|
220
241
|
border-left: 1px solid var(--border);
|
|
221
242
|
}
|
|
243
|
+
#right.open {
|
|
244
|
+
display: flex;
|
|
245
|
+
}
|
|
222
246
|
#right-toolbar {
|
|
223
247
|
display: flex;
|
|
224
248
|
align-items: center;
|
|
@@ -361,6 +385,7 @@ body {
|
|
|
361
385
|
|
|
362
386
|
/* Resize handle */
|
|
363
387
|
#resize-handle {
|
|
388
|
+
display: none;
|
|
364
389
|
width: 4px;
|
|
365
390
|
cursor: col-resize;
|
|
366
391
|
background: transparent;
|
|
@@ -372,6 +397,7 @@ body {
|
|
|
372
397
|
margin-left: -2px;
|
|
373
398
|
margin-right: -2px;
|
|
374
399
|
}
|
|
400
|
+
#resize-handle.open { display: block; }
|
|
375
401
|
#resize-handle:hover, #resize-handle.dragging { background: var(--border-strong); }
|
|
376
402
|
</style>
|
|
377
403
|
</head>
|
|
@@ -379,6 +405,7 @@ body {
|
|
|
379
405
|
<div id="container">
|
|
380
406
|
<div id="left">
|
|
381
407
|
<div id="toolbar">
|
|
408
|
+
<button class="nav-btn" id="btn-back-list" title="Back to log files">Logs</button>
|
|
382
409
|
<span class="title" id="log-title">No log loaded</span>
|
|
383
410
|
<input type="text" id="search-box" placeholder="Search... (/)">
|
|
384
411
|
<div class="filter-group" id="filter-group"></div>
|
|
@@ -393,6 +420,7 @@ body {
|
|
|
393
420
|
<button class="action-btn" id="btn-expand-all" title="Expand all">Expand All</button>
|
|
394
421
|
<button class="action-btn" id="btn-collapse-all" title="Collapse all">Collapse All</button>
|
|
395
422
|
<button class="action-btn" id="btn-raw" title="Toggle raw text">Raw</button>
|
|
423
|
+
<button class="action-btn" id="btn-close-panel" title="Close panel" style="padding:4px 8px;">✕</button>
|
|
396
424
|
</div>
|
|
397
425
|
<div id="json-view"><span class="empty-hint">Select a log line to view details</span></div>
|
|
398
426
|
</div>
|
|
@@ -400,23 +428,84 @@ body {
|
|
|
400
428
|
|
|
401
429
|
<script>
|
|
402
430
|
const LOG_RE = /^\[([^\]]+)\]\s+(\S+)\s+(.*)/;
|
|
403
|
-
const ALL_TYPES = ['GENERAL','LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM','UI_EVENT','RESPONSE','EXECUTION','TERMINAL'];
|
|
404
|
-
const DEFAULT_FILTERS = new Set(['LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM']);
|
|
431
|
+
const ALL_TYPES = ['GENERAL','LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM','OPERATION','EVENT_BUS','UI_EVENT','RESPONSE','EXECUTION','TERMINAL'];
|
|
432
|
+
const DEFAULT_FILTERS = new Set(['LLM_CONFIG','LLM_PAYLOAD','LLM_STREAM','OPERATION']);
|
|
405
433
|
|
|
406
434
|
let logLines = [];
|
|
407
435
|
let selectedIdx = -1;
|
|
408
436
|
let activeFilters = new Set();
|
|
409
437
|
let searchQuery = '';
|
|
410
438
|
let showRaw = false;
|
|
439
|
+
let viewerMode = 'files';
|
|
440
|
+
|
|
441
|
+
function setViewerMode(mode) {
|
|
442
|
+
viewerMode = mode;
|
|
443
|
+
const isLogMode = mode === 'log';
|
|
444
|
+
document.getElementById('btn-back-list').style.display = isLogMode ? '' : 'none';
|
|
445
|
+
document.getElementById('search-box').style.display = isLogMode ? '' : 'none';
|
|
446
|
+
document.getElementById('filter-group').style.display = isLogMode ? '' : 'none';
|
|
447
|
+
for (const id of ['btn-copy', 'btn-expand-all', 'btn-collapse-all', 'btn-raw', 'btn-close-panel']) {
|
|
448
|
+
document.getElementById(id).disabled = !isLogMode;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
document.getElementById('btn-back-list').addEventListener('click', () => {
|
|
453
|
+
location.search = '';
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
async function loadLogList() {
|
|
457
|
+
setViewerMode('files');
|
|
458
|
+
const title = document.getElementById('log-title');
|
|
459
|
+
const list = document.getElementById('log-list');
|
|
460
|
+
const label = document.getElementById('right-label');
|
|
461
|
+
const view = document.getElementById('json-view');
|
|
462
|
+
title.textContent = 'Log files';
|
|
463
|
+
label.textContent = 'Select a log file';
|
|
464
|
+
view.innerHTML = '<span class="empty-hint">Choose a log file from the left list</span>';
|
|
465
|
+
list.innerHTML = '<div class="log-line"><span class="msg">Loading...</span></div>';
|
|
466
|
+
|
|
467
|
+
try {
|
|
468
|
+
const resp = await fetch('/api/logs');
|
|
469
|
+
if (!resp.ok) throw new Error(resp.statusText);
|
|
470
|
+
const files = await resp.json();
|
|
471
|
+
list.innerHTML = '';
|
|
472
|
+
|
|
473
|
+
if (files.length === 0) {
|
|
474
|
+
list.innerHTML = '<div class="log-line"><span class="msg">No log files found</span></div>';
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
const frag = document.createDocumentFragment();
|
|
479
|
+
files.forEach((file, idx) => {
|
|
480
|
+
const div = document.createElement('div');
|
|
481
|
+
div.className = 'log-line';
|
|
482
|
+
const mtime = new Date(file.mtime * 1000).toLocaleString();
|
|
483
|
+
div.innerHTML =
|
|
484
|
+
'<span class="lineno">' + (idx + 1) + '</span>' +
|
|
485
|
+
'<span class="ts">' + esc(mtime) + '</span> ' +
|
|
486
|
+
'<span class="msg">' + esc(file.relative_path) + '</span> ' +
|
|
487
|
+
'<span class="json-inline">' + esc(formatBytes(file.size_bytes)) + '</span>';
|
|
488
|
+
div.addEventListener('click', () => {
|
|
489
|
+
location.search = '?log=' + encodeURIComponent(file.path);
|
|
490
|
+
});
|
|
491
|
+
frag.appendChild(div);
|
|
492
|
+
});
|
|
493
|
+
list.appendChild(frag);
|
|
494
|
+
} catch (e) {
|
|
495
|
+
title.textContent = 'Error: ' + e.message;
|
|
496
|
+
list.innerHTML = '<div class="log-line"><span class="msg">Failed to load log files</span></div>';
|
|
497
|
+
}
|
|
498
|
+
}
|
|
411
499
|
|
|
412
500
|
// --- Data loading ---
|
|
413
501
|
async function loadLog() {
|
|
414
502
|
const params = new URLSearchParams(location.search);
|
|
415
503
|
const logPath = params.get('log');
|
|
416
504
|
if (!logPath) {
|
|
417
|
-
|
|
505
|
+
await loadLogList();
|
|
418
506
|
return;
|
|
419
507
|
}
|
|
508
|
+
setViewerMode('log');
|
|
420
509
|
document.getElementById('log-title').textContent = logPath.split('/').slice(-2).join('/');
|
|
421
510
|
try {
|
|
422
511
|
const resp = await fetch('/api/log?path=' + encodeURIComponent(logPath));
|
|
@@ -495,13 +584,28 @@ function toggleFilter(type, btn) {
|
|
|
495
584
|
btn.classList.add('active');
|
|
496
585
|
}
|
|
497
586
|
applyFilters();
|
|
587
|
+
|
|
588
|
+
if (selectedIdx >= 0) {
|
|
589
|
+
const list = document.getElementById('log-list');
|
|
590
|
+
const selected = list.children[selectedIdx];
|
|
591
|
+
if (selected && !selected.classList.contains('hidden')) {
|
|
592
|
+
const listRect = list.getBoundingClientRect();
|
|
593
|
+
const rowRect = selected.getBoundingClientRect();
|
|
594
|
+
const fullyVisible = rowRect.top >= listRect.top && rowRect.bottom <= listRect.bottom;
|
|
595
|
+
if (!fullyVisible) {
|
|
596
|
+
selected.scrollIntoView({ block: 'center' });
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
498
600
|
}
|
|
499
601
|
|
|
500
602
|
function applyFilters() {
|
|
603
|
+
if (viewerMode !== 'log') return;
|
|
501
604
|
const list = document.getElementById('log-list');
|
|
502
605
|
const items = list.children;
|
|
503
606
|
for (let i = 0; i < items.length; i++) {
|
|
504
607
|
const entry = logLines[i];
|
|
608
|
+
if (!entry) continue;
|
|
505
609
|
let visible = true;
|
|
506
610
|
if (activeFilters.size > 0 && entry.type && !activeFilters.has(entry.type)) {
|
|
507
611
|
visible = false;
|
|
@@ -555,7 +659,23 @@ function renderLogList() {
|
|
|
555
659
|
list.appendChild(frag);
|
|
556
660
|
}
|
|
557
661
|
|
|
662
|
+
function openRightPanel() {
|
|
663
|
+
document.getElementById('right').classList.add('open');
|
|
664
|
+
document.getElementById('resize-handle').classList.add('open');
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
function closeRightPanel() {
|
|
668
|
+
document.getElementById('right').classList.remove('open');
|
|
669
|
+
document.getElementById('resize-handle').classList.remove('open');
|
|
670
|
+
const list = document.getElementById('log-list');
|
|
671
|
+
if (selectedIdx >= 0 && list.children[selectedIdx]) {
|
|
672
|
+
list.children[selectedIdx].classList.remove('selected');
|
|
673
|
+
}
|
|
674
|
+
selectedIdx = -1;
|
|
675
|
+
}
|
|
676
|
+
|
|
558
677
|
function selectLine(idx) {
|
|
678
|
+
openRightPanel();
|
|
559
679
|
const list = document.getElementById('log-list');
|
|
560
680
|
if (selectedIdx >= 0 && list.children[selectedIdx]) {
|
|
561
681
|
list.children[selectedIdx].classList.remove('selected');
|
|
@@ -757,6 +877,8 @@ document.getElementById('btn-collapse-all').addEventListener('click', () => {
|
|
|
757
877
|
});
|
|
758
878
|
});
|
|
759
879
|
|
|
880
|
+
document.getElementById('btn-close-panel').addEventListener('click', closeRightPanel);
|
|
881
|
+
|
|
760
882
|
document.getElementById('btn-raw').addEventListener('click', () => {
|
|
761
883
|
if (selectedIdx < 0) return;
|
|
762
884
|
const entry = logLines[selectedIdx];
|
|
@@ -776,11 +898,12 @@ document.getElementById('btn-raw').addEventListener('click', () => {
|
|
|
776
898
|
// --- Search ---
|
|
777
899
|
const searchBox = document.getElementById('search-box');
|
|
778
900
|
searchBox.addEventListener('input', () => {
|
|
901
|
+
if (viewerMode !== 'log') return;
|
|
779
902
|
searchQuery = searchBox.value.toLowerCase();
|
|
780
903
|
applyFilters();
|
|
781
904
|
});
|
|
782
905
|
document.addEventListener('keydown', (e) => {
|
|
783
|
-
if (e.key === '/' && document.activeElement !== searchBox) {
|
|
906
|
+
if (viewerMode === 'log' && e.key === '/' && document.activeElement !== searchBox) {
|
|
784
907
|
e.preventDefault();
|
|
785
908
|
searchBox.focus();
|
|
786
909
|
}
|
|
@@ -788,16 +911,17 @@ document.addEventListener('keydown', (e) => {
|
|
|
788
911
|
searchBox.value = '';
|
|
789
912
|
searchQuery = '';
|
|
790
913
|
searchBox.blur();
|
|
791
|
-
applyFilters();
|
|
914
|
+
if (viewerMode === 'log') applyFilters();
|
|
792
915
|
}
|
|
793
916
|
// Arrow keys for navigation
|
|
794
|
-
if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
|
|
917
|
+
if (viewerMode === 'log' && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
|
|
795
918
|
e.preventDefault();
|
|
796
919
|
navigateLine(e.key === 'ArrowDown' ? 1 : -1);
|
|
797
920
|
}
|
|
798
921
|
});
|
|
799
922
|
|
|
800
923
|
function navigateLine(direction) {
|
|
924
|
+
if (viewerMode !== 'log') return;
|
|
801
925
|
const list = document.getElementById('log-list');
|
|
802
926
|
let next = selectedIdx + direction;
|
|
803
927
|
// Skip hidden lines
|
|
@@ -952,6 +1076,11 @@ function badgeify(s) {
|
|
|
952
1076
|
return esc(s).replace(/\[([\w.]+)\]/g, '<span class="badge">$1</span>');
|
|
953
1077
|
}
|
|
954
1078
|
function truncate(s, n) { return s.length <= n ? s : s.slice(0, n) + '...'; }
|
|
1079
|
+
function formatBytes(bytes) {
|
|
1080
|
+
if (bytes < 1024) return bytes + ' B';
|
|
1081
|
+
if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';
|
|
1082
|
+
return (bytes / (1024 * 1024)).toFixed(1) + ' MB';
|
|
1083
|
+
}
|
|
955
1084
|
|
|
956
1085
|
// --- Init ---
|
|
957
1086
|
buildFilters();
|