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