klaude-code 2.27.0__tar.gz → 2.29.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.27.0/README.md → klaude_code-2.29.0/PKG-INFO +43 -5
- klaude_code-2.27.0/PKG-INFO → klaude_code-2.29.0/README.md +16 -30
- {klaude_code-2.27.0 → klaude_code-2.29.0}/pyproject.toml +4 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/agent.py +56 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/agent_profile.py +1 -1
- klaude_code-2.29.0/src/klaude_code/agent/attachments/__init__.py +46 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/attachments/files.py +48 -19
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/attachments/memory.py +33 -15
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/attachments/skills.py +53 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/attachments/state.py +12 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/away_summary.py +3 -29
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/cache_safe.py +6 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/compaction/overflow.py +1 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/prompt_suggestion/prompt_suggestion.py +6 -5
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/runtime/agent_ops.py +40 -9
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/runtime/config_ops.py +22 -9
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/runtime/dispatcher.py +3 -0
- klaude_code-2.29.0/src/klaude_code/agent/runtime/llm.py +247 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/runtime/sub_agent.py +7 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/session_stats.py +1 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/session_title.py +8 -28
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/system_prompt.py +27 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/task.py +212 -37
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/runtime.py +14 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/main.py +27 -23
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/__init__.py +2 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/assets/builtin_config.yaml +181 -8
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/config.py +185 -59
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/loader.py +1 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/model_matcher.py +68 -9
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/sub_agent_model.py +15 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/const.py +20 -5
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/runtime/actor.py +7 -1
- klaude_code-2.29.0/src/klaude_code/llm/AGENTS.md +29 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/anthropic/client.py +30 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/anthropic/input.py +47 -38
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/bedrock_anthropic/client.py +25 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/google/input.py +4 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/image.py +237 -9
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/input_common.py +173 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_compatible/input.py +4 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_responses/input.py +4 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openrouter/input.py +4 -1
- klaude_code-2.29.0/src/klaude_code/llm/proxy_support.py +43 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/usage.py +3 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/attachments.py +29 -1
- klaude_code-2.29.0/src/klaude_code/prompts/away_summary.py +24 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/messages.py +3 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/prompt_suggestion.py +5 -3
- klaude_code-2.29.0/src/klaude_code/prompts/session_title.py +23 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/sub_agents/prompt-sub-agent-simplifier.md +0 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/system/auto-memory-prompt.md +23 -2
- klaude_code-2.29.0/src/klaude_code/prompts/system/base-system-prompt-gpt.md +145 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/system/base-system-prompt.md +1 -8
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/events.py +18 -0
- klaude_code-2.29.0/src/klaude_code/protocol/input_syntax.py +57 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/message.py +24 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/model_id.py +13 -7
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/__init__.py +7 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/file_tracking.py +15 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/tool_ui.py +1 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/usage.py +14 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/op.py +12 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/op_handler.py +5 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/meta.py +17 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/session.py +33 -3
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/store.py +7 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/SKILL.md +60 -25
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/references/cli.md +26 -22
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/references/image-api.md +8 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/references/prompting.md +33 -10
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/klaude-config/SKILL.md +5 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/klaude-config/references/config-file.md +9 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/NOTICE.txt +1 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/SKILL.md +3 -3
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/references/cli.md +3 -3
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/SKILL.md +0 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/cli.md +3 -3
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/loader.py +13 -4
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/apply_patch_tool.py +2 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/diff_builder.py +77 -11
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/read_tool.py +17 -8
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/write_tool.md +1 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/shell/bash_tool.py +198 -2
- klaude_code-2.29.0/src/klaude_code/tui/AGENTS.md +128 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/export_session_cmd.py +2 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/export_session_html.py +38 -6
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/model_cmd.py +1 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/model_picker.py +10 -13
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/commands.py +27 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/command_output.py +7 -2
- klaude_code-2.29.0/src/klaude_code/tui/components/diffs.py +149 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/rich/markdown.py +58 -3
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/rich/status.py +22 -55
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/rich/theme.py +2 -0
- klaude_code-2.29.0/src/klaude_code/tui/components/task_file_changes.py +67 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_question.py +7 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/user_input.py +5 -13
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/welcome.py +101 -9
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/display.py +69 -24
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/completers.py +3 -31
- klaude_code-2.29.0/src/klaude_code/tui/input/flicker_safe_stdout.py +256 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/key_bindings.py +91 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/paste.py +8 -3
- klaude_code-2.29.0/src/klaude_code/tui/input/prompt_status_bar.py +286 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/prompt_toolkit.py +222 -26
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/pt_theme.py +5 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/machine.py +66 -8
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/renderer.py +137 -165
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/runner.py +266 -72
- klaude_code-2.29.0/src/klaude_code/tui/terminal/prevent_sleep.py +160 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/selector.py +2 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/title.py +2 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/update.py +34 -0
- klaude_code-2.27.0/src/klaude_code/web/dist/assets/highlighted-body-B3W2YXNL-Bh-pK9Qu.js → klaude_code-2.29.0/src/klaude_code/web/dist/assets/highlighted-body-B3W2YXNL-DTuyBW20.js +1 -1
- klaude_code-2.27.0/src/klaude_code/web/dist/assets/index-D7bSbpcc.js → klaude_code-2.29.0/src/klaude_code/web/dist/assets/index-CoapfQ1q.js +2 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/index.html +1 -1
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/routes/config.py +4 -2
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/routes/sessions.py +1 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/session_index.py +7 -0
- klaude_code-2.27.0/src/klaude_code/agent/attachments/__init__.py +0 -1
- klaude_code-2.27.0/src/klaude_code/agent/runtime/llm.py +0 -131
- klaude_code-2.27.0/src/klaude_code/prompts/system/base-system-prompt-gpt.md +0 -155
- klaude_code-2.27.0/src/klaude_code/skill/assets/gpt-image-gen/references/codex-network.md +0 -28
- klaude_code-2.27.0/src/klaude_code/skill/assets/playwright/agents/openai.yaml +0 -6
- klaude_code-2.27.0/src/klaude_code/skill/assets/sora/agents/openai.yaml +0 -6
- klaude_code-2.27.0/src/klaude_code/skill/assets/sora/references/codex-network.md +0 -28
- klaude_code-2.27.0/src/klaude_code/tui/components/diffs.py +0 -91
- klaude_code-2.27.0/src/klaude_code/tui/components/rich/live.py +0 -84
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/.DS_Store +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/attachments/collection.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/attachments/todo.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/bash_mode.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/cache_break_detection.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/compaction/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/compaction/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/compaction/compaction.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/handoff/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/handoff/handoff.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/handoff/manager.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/prompt_suggestion/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/rewind/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/rewind/manager.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/runtime/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/runtime/away_summary.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/skill_inventory.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/agent/turn.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/auth_flow.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/log_viewer.html +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/log_viewer.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/ports/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/ports/display.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/ports/input.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/ports/interaction.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/app/runtime_facade.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/base.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/codex/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/codex/exceptions.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/codex/oauth.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/codex/token_manager.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/copilot/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/copilot/exceptions.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/copilot/oauth.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/copilot/token_manager.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/auth/env.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/auth_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/config_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/cost_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/debug.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/list_model.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/oauth_usage.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/self_update.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/cli/web_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/assets/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/builtin_config.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/formatters.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/merge.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/config/thinking.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/event_bus.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/event_relay.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/runtime/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/runtime/registry.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/session_meta_relay.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/control/user_interaction.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/anthropic/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/bedrock_anthropic/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/copilot/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/copilot/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/google/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/google/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/google_vertex/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/google_vertex/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/json_stable.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_codex/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_codex/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_compatible/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_compatible/stream.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_responses/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openai_responses/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openrouter/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openrouter/client.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/openrouter/reasoning.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/registry.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/llm/stream_parts.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/log.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/compaction.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/handoff.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/sub_agents/prompt-sub-agent-finder.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/sub_agents/prompt-sub-agent-review.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/sub_agents.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/system/extended-thinking-prompt.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/system/following-conventions-prompt.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/prompts/system/git-workspace-hygiene-prompt.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/llm_param.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/common.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/developer_ui.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/session_runtime.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/sub_agent.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/task_metadata.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/models/todo.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/sub_agent/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/sub_agent/finder.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/sub_agent/general_purpose.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/sub_agent/review.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/sub_agent/simplifier.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/system_prompt.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/tools.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/protocol/user_interaction.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/codec.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/history.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/selector.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/session/store_registry.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/.git +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/.gitignore +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/SOURCES.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/authentication.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/commands.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/profiling.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/proxy-support.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/session-management.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/snapshot-refs.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/references/video-recording.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/templates/authenticated-session.sh +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/templates/capture-workflow.sh +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/agent-browser/templates/form-automation.sh +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/frontend-design/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/LICENSE.txt +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/references/sample-prompts.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/gpt-image-gen/scripts/image_gen.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/klaude-config/references/builtin-providers.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/klaude-config/references/memory-files.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/klaude-config/references/skill-system.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/cli.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/gemini-api.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/prompting.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/sample-prompts.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/references/vertex-setup.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/nano-banana-image-gen/scripts/gemini_image_gen.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/forms.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/reference.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/check_bounding_boxes.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/check_fillable_fields.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/convert_pdf_to_images.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/create_validation_image.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_field_info.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/extract_form_structure.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/fill_fillable_fields.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/LICENSE.txt +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/assets/playwright-small.svg +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/assets/playwright.png +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/references/workflows.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/playwright/scripts/playwright_cli.sh +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/3d.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/animations.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/charts-bar-chart.tsx +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/assets.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/audio-visualization.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/audio.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/calculate-metadata.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/can-decode.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/charts.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/compositions.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/display-captions.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/extract-frames.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/ffmpeg.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/fonts.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/get-audio-duration.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-dimensions.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/get-video-duration.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/gifs.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/images.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/import-srt-captions.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/light-leaks.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/lottie.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/maps.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-dom-nodes.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/measuring-text.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/parameters.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/sequencing.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/sfx.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/subtitles.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/tailwind.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/text-animations.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/timing.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transcribe-captions.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transitions.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/transparent-videos.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/trimming.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/videos.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/remotion-best-practices/rules/voiceover.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/.gitignore +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/package.json +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/references/config/first-time-setup.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/references/config/preferences-schema.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/references/templates/standalone.html +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/references/troubleshooting.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/scripts/render_mermaid.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/render-mermaid/scripts/setup.sh +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/session-logs/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/skills-lock.json +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/LICENSE.txt +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/assets/sora-small.svg +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/assets/sora.png +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/cinematic-shots.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/prompting.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/sample-prompts.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/social-ads.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/troubleshooting.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/references/video-api.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/sora/scripts/sora.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/svg-animations/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/svg-animations/examples/index.html +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/assets/web-search/SKILL.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/manager.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/skill/system_skills.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/agent_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/agent_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/ask_user_question_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/ask_user_question_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/core/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/core/abc.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/core/context.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/core/offload.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/core/registry.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/core/runner.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/_utils.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/apply_patch.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/apply_patch_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/edit_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/edit_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/read_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/file/write_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/handoff_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/handoff_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/rewind_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/rewind_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/shell/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/shell/bash_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/shell/command_safety.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/todo/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/todo/todo_write_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/todo/todo_write_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/todo/todo_write_tool_raw.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/external_content.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/ssrf.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/web_cache.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/web_fetch_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/web_fetch_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/web_search_tool.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tool/web/web_search_tool.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/auth_selector.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/command_abc.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/compact_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/continue_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/copy_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/debug_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/fork_session_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/login_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/logout_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/new_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/recap_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/refresh_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/registry.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/status_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/sub_agent_model_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/thinking_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/types.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/command/web_cmd.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/away_summary.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/bash_syntax.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/common.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/developer.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/errors.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/metadata.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/rich/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/rich/cjk_wrap.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/rich/quote.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/sub_agent.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/thinking.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_bash.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_common.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_dispatch.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_file.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_read.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_rewind.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_todo.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/components/tools/_web.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/AGENTS.md +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/drag_drop.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/input/images.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/status_runtime.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/ask_user_question.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/color.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/control.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/focus_tracker.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/image.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/notifier.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/tui/terminal/session_selector.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/app.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/display.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/abap-BdImnpbu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/actionscript-3-CoDkCxhg.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ada-bCR0ucgS.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/andromeeda-C4gqWexZ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/angular-html-CU67Zn6k.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/angular-ts-BwZT4LLn.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/apache-Pmp26Uib.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/apex-D8_7TLub.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/apl-dKokRX4l.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/applescript-Co6uUVPk.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ara-BRHolxvo.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/asciidoc-Ve4PFQV2.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/asm-D_Q5rh1f.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/astro-CbQHKStN.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/awk-DMzUqQB5.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ayu-light-BA47KaF1.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ballerina-BFfxhgS-.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/bat-BkioyH1T.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/beancount-k_qm7-4y.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/berry-uYugtg8r.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/bibtex-CHM0blh-.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/bicep-Bmn6On1c.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/bird2-DPOp833l.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/blade-D4QpJJKB.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/bsl-BO_Y6i37.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/c-BIGW1oBm.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/c3-eo99z4R2.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cadence-Bv_4Rxtq.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cairo-KRGpt6FW.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/clarity-D53aC0YG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/clojure-P80f7IUj.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cmake-D1j8_8rp.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cobol-nwyudZeR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/codeowners-Bp6g37R7.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/codeql-DsOJ9woJ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/coffee-Ch7k5sss.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/coq-DkFqJrB1.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cpp-CofmeUqb.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/crystal-tKQVLTB8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/csharp-COcwbKMJ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/css-DPfMkruS.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/csv-fuZLfV_i.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cue-D82EKSYY.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/cypher-COkxafJQ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/d-85-TOEBH.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dark-plus-C3mMm8J8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dart-CF10PKvl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dax-CEL-wOlO.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/desktop-BmXAJ9_W.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/diff-D97Zzqfu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/docker-BcOcwvcX.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dotenv-Da5cRb03.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dracula-BzJJZx-M.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/dream-maker-BtqSS_iP.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/edge-BkV0erSs.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/elixir-CDX3lj18.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/elm-DbKCFpqz.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/emacs-lisp-C9XAeP06.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/erb-B12qg9BL.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/erlang-DsQrWhSR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/everforest-light-C8M2exoo.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/fennel-BYunw83y.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/fish-BvzEVeQv.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/fluent-C4IJs8-o.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/fsharp-CXgrBDvD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gdresource-BOOCDP_w.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gdscript-C5YyOfLZ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gdshader-DkwncUOv.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/genie-D0YGMca9.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gherkin-DyxjwDmM.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/git-commit-F4YmCXRG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/git-rebase-r7XF79zn.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-dark-DHJKELXO.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-light-DAi9KRSo.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-light-default-D7oLnXFd.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gleam-BspZqrRM.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/glimmer-ts-U6CK756n.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/glsl-DplSGwfg.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gn-n2N0HUVH.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gnuplot-DdkO51Og.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/go-CxLEBnE3.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/graphql-ChdNCCLP.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/groovy-gcz8RCvz.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hack-CaT9iCJl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/haml-B8DHNrY2.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/handlebars-BL8al0AC.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/haskell-Df6bDoY_.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/haxe-CzTSHFRz.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hcl-BWvSN4gD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hjson-D5-asLiD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hlsl-D3lLCCz7.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/horizon-BUw7H-hv.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/horizon-bright-Cn-bp-IR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/houston-DnULxvSX.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/html-GMplVEZG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/html-derivative-BFtXZ54Q.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/http-jrhK8wxY.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hurl-irOxFIW8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hxml-Bvhsp5Yf.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/hy-DFXneXwc.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/imba-DGztddWO.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/index-TK8frDq8.css +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ini-BEwlwnbL.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/java-CylS5w8V.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/javascript-wDzz0qaB.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jinja-4LBKfQ-Z.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jison-wvAkD_A8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/json-Cp-IABpG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/json5-C9tS-k6U.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jsonc-Des-eS-w.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jsonl-DcaNXYhu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jsonnet-DFQXde-d.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jssm-C2t-YnRu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/jsx-g9-lgVsj.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/julia-CxzCAyBv.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/just-Cw27pwNe.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/kdl-DV7GczEv.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/kotlin-BdnUsdx6.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/kusto-DZf3V79B.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/laserwave-DUszq2jm.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/latex-CWtU0Tv5.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/lean-BZvkOJ9d.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/less-B1dDrJ26.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/light-plus-B7mTdjB0.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/liquid-DYVedYrR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/llvm-DjAJT7YJ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/log-2UxHyX5q.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/logo-BtOb2qkB.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/lua-BaeVxFsk.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/luau-C-HG3fhB.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/make-CHLpvVh8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/markdown-Cvjx9yec.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/marko-CnJfTvn9.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/material-theme-D5KoaKCx.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/matlab-D7o27uSR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/mdc-BMNejdWA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/mdx-Cmh6b_Ma.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/mermaid-mWjccvbQ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/min-dark-CafNBF8u.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/min-light-CTRr51gU.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/mipsasm-CKIfxQSi.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/mojo-rZm6bMo-.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/monokai-D4h5O-jR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/moonbit-_H4v1dQx.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/move-IF9eRakj.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/narrat-DRg8JJMk.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nextflow-Zz6hmt5N.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nextflow-groovy-BeH2EWoN.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nginx-BpAMiNFr.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/night-owl-C39BiMTA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nim-CVrawwO9.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nix-CwoSXNpI.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nord-Ddv68eIx.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/nushell-Cz2AlsmD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/objective-c-DXmwc3jG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/objective-cpp-CLxacb5B.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ocaml-C0hk2d4L.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/odin-BBf5iR-q.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/one-light-C3Wv6jpd.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/openscad-C4EeE6gA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/pascal-D93ZcfNL.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/perl-C0TMdlhV.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/php-Dhbhpdrm.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/pierre-dark-BXuwtOqb.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/pierre-light-dckrK0oj.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/pkl-u5AG7uiY.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/plastic-3e1v2bzS.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/plsql-ChMvpjG-.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/po-BTJTHyun.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/poimandres-CS3Unz2-.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/polar-C0HS_06l.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/postcss-CXtECtnM.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/powerquery-CEu0bR-o.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/powershell-Dpen1YoG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/prisma-Dd19v3D-.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/prolog-CbFg5uaA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/proto-C7zT0LnQ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/pug-CGlum2m_.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/puppet-BMWR74SV.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/purescript-CklMAg4u.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/python-B6aJPvgy.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/qml-3beO22l8.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/qmldir-C8lEn-DE.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/qss-IeuSbFQv.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/r-Dspwwk_N.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/racket-BqYA7rlc.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/raku-DXvB9xmW.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/razor-Uh8Bk_45.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/red-bN70gL4F.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/reg-C-SQnVFl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/regexp-CDVJQ6XC.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rel-C3B-1QV4.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/riscv-BM1_JUlF.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ron-D8l8udqQ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rose-pine-qdsjHGoJ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rosmsg-BJDFO7_C.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rst-BrH8l1NY.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ruby-Dw2BHqvy.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/rust-B1yitclQ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/sas-cz2c8ADy.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/sass-Cj5Yp3dK.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/scala-C151Ov-r.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/scheme-C98Dy4si.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/scss-OYdSNvt2.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/sdbl-DVxCFoDh.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/shellscript-Yzrsuije.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/shellsession-BADoaaVG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/slack-dark-BthQWCQV.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/slack-ochin-DqwNpetd.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/smalltalk-BERRCDM3.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/snazzy-light-Bw305WKR.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/solarized-dark-DXbdFlpD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/solarized-light-L9t79GZl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/solidity-rGO070M0.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/soy-Brmx7dQM.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/sparql-rVzFXLq3.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/splunk-BtCnVYZw.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/sql-BLtJtn59.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ssh-config-_ykCGR6B.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/stata-BH5u7GGu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/stylus-BEDo0Tqx.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/surrealql-Bq5Q-fJD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/svelte-C_ipcX3V.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/swift-D82vCrfD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/system-verilog-CnnmHF94.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/systemd-4A_iFExJ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/talonscript-CkByrt1z.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/tasl-QIJgUcNo.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/tcl-dwOrl1Do.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/templ-P3uqSqPl.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/terraform-BETggiCN.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/tex-idrVyKtj.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/tokyo-night-hegEt444.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/toml-vGWfd6FD.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/ts-tags-zn1MmPIZ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/tsv-B_m7g4N7.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/tsx-COt5Ahok.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/turtle-BsS91CYL.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/twig-DNn4PbVi.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/typescript-BPQ3VLAy.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/typespec-BGHnOYBU.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/typst-DHCkPAjA.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/v-BcVCzyr7.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vala-CsfeWuGM.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vb-D17OF-Vu.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/verilog-BQ8w6xss.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vesper-DU1UobuO.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vhdl-CeAyd5Ju.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/viml-CJc9bBzg.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vue-DN_0RTcg.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vue-html-AaS7Mt5G.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vue-vine-CQOfvN7w.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/vyper-CDx5xZoG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wasm-CG6Dc4jp.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wasm-MzD3tlZU.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wenyan-BV7otONQ.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wgsl-Dx-B1_4e.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wikitext-BhOHFoWU.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wit-5i3qLPDT.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/wolfram-lXgVvXCa.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/xml-sdJ4AIDG.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/xsl-CtQFsRM5.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/yaml-Buea-lGh.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/zenscript-DVFEvuxE.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/assets/zig-VOosw3JB.js +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/favicon.svg +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/fonts/InterVariable-Italic.woff2 +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/dist/fonts/InterVariable.woff2 +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/file_access.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/interaction.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/live_events.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/routes/__init__.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/routes/files.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/routes/skills.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/routes/ws.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/server.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/session_access.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/session_live.py +0 -0
- {klaude_code-2.27.0 → klaude_code-2.29.0}/src/klaude_code/web/state.py +0 -0
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: klaude-code
|
|
3
|
+
Version: 2.29.0
|
|
4
|
+
Summary: Minimal code agent CLI
|
|
5
|
+
Requires-Dist: anthropic[bedrock]>=0.66.0
|
|
6
|
+
Requires-Dist: chardet>=5.2.0,<6
|
|
7
|
+
Requires-Dist: diff-match-patch>=20241021
|
|
8
|
+
Requires-Dist: filelock>=3.20.3
|
|
9
|
+
Requires-Dist: fastapi
|
|
10
|
+
Requires-Dist: google-genai>=1.56.0
|
|
11
|
+
Requires-Dist: httpx[socks]>=0.28.1
|
|
12
|
+
Requires-Dist: markdown-it-py>=4.0.0
|
|
13
|
+
Requires-Dist: openai>=2.24.0
|
|
14
|
+
Requires-Dist: prompt-toolkit>=3.0.52
|
|
15
|
+
Requires-Dist: pydantic>=2.11.7
|
|
16
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
17
|
+
Requires-Dist: rich>=14.1.0
|
|
18
|
+
Requires-Dist: socksio>=1.0.0
|
|
19
|
+
Requires-Dist: sse-starlette
|
|
20
|
+
Requires-Dist: trafilatura>=2.0.0
|
|
21
|
+
Requires-Dist: typer>=0.17.3
|
|
22
|
+
Requires-Dist: uvicorn
|
|
23
|
+
Requires-Dist: readability-lxml>=0.8.4.1
|
|
24
|
+
Requires-Dist: pillow>=12.2.0
|
|
25
|
+
Requires-Python: >=3.13
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
1
28
|
# Klaude Code
|
|
2
29
|
|
|
3
30
|
Minimal code agent CLI.
|
|
@@ -107,9 +134,14 @@ klaude
|
|
|
107
134
|
|
|
108
135
|
On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
|
|
109
136
|
|
|
110
|
-
You can also configure fallback lists for helper models:
|
|
137
|
+
You can also configure fallback lists for the main model and helper models:
|
|
111
138
|
|
|
112
139
|
```yaml
|
|
140
|
+
main_model:
|
|
141
|
+
- gpt-5.5
|
|
142
|
+
- gpt-5.4
|
|
143
|
+
- opus
|
|
144
|
+
|
|
113
145
|
fast_model:
|
|
114
146
|
- haiku
|
|
115
147
|
- gemini-flash
|
|
@@ -120,7 +152,9 @@ compact_model:
|
|
|
120
152
|
- haiku
|
|
121
153
|
```
|
|
122
154
|
|
|
123
|
-
Klaude
|
|
155
|
+
Klaude expands each entry into concrete provider candidates in `provider_list` order, then falls through to the next model in the list. For example, `gpt-5.4` will try available providers such as `gpt-5.4@openai`, `gpt-5.4@github-copilot`, and `gpt-5.4@openrouter` before moving to the next model. Runtime fallback is used for non-retryable provider/model failures such as quota, billing, permission, or model-unavailable errors. `fast_model` is used for session-title generation; `compact_model` is used for compact/helper tasks.
|
|
156
|
+
|
|
157
|
+
When you switch models with `/model`, Klaude updates `main_model` without discarding the fallback chain: the selected model is moved to the front if it already exists, or inserted at the front otherwise.
|
|
124
158
|
|
|
125
159
|
#### Built-in Providers
|
|
126
160
|
|
|
@@ -196,7 +230,10 @@ You can add custom models to built-in providers or define new ones. Configuratio
|
|
|
196
230
|
|
|
197
231
|
```yaml
|
|
198
232
|
# ~/.klaude/klaude-config.yaml
|
|
199
|
-
main_model:
|
|
233
|
+
main_model:
|
|
234
|
+
- gpt-5.5
|
|
235
|
+
- gpt-5.4
|
|
236
|
+
- opus
|
|
200
237
|
|
|
201
238
|
fast_model:
|
|
202
239
|
- haiku
|
|
@@ -236,7 +273,8 @@ provider_list:
|
|
|
236
273
|
- **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
|
|
237
274
|
- **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
|
|
238
275
|
- **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
|
|
239
|
-
- **Model Preference Lists**: `fast_model
|
|
276
|
+
- **Model Preference Lists**: `main_model`, `fast_model`, and `compact_model` accept either a single string or a list of model selectors. When you provide a list, Klaude first tries matching providers in `provider_list` order for each selector, then moves to the next selector.
|
|
277
|
+
- **Updating Defaults**: `/model` keeps saving the selected model back to `main_model`, but preserves fallback order by moving or inserting the selected model at the front of the list.
|
|
240
278
|
|
|
241
279
|
##### Sub-agent Model Configuration
|
|
242
280
|
|
|
@@ -307,7 +345,7 @@ Inside the interactive session (`klaude`), use these commands to streamline your
|
|
|
307
345
|
- `/refresh-terminal` - Refresh terminal display.
|
|
308
346
|
- `/web` - Switch to web UI mode.
|
|
309
347
|
- `/new` - Start a new session (clears context).
|
|
310
|
-
- `/model` - Switch the active LLM
|
|
348
|
+
- `/model` - Switch the active LLM and update `main_model` in config while preserving fallback order (the selected model is moved/inserted to the front).
|
|
311
349
|
- `/sub-agent-model` - Configure sub-agent models at runtime.
|
|
312
350
|
- `/thinking` - Change thinking/reasoning level.
|
|
313
351
|
- `/status` - Show session usage statistics (cost, tokens, model breakdown).
|
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: klaude-code
|
|
3
|
-
Version: 2.27.0
|
|
4
|
-
Summary: Minimal code agent CLI
|
|
5
|
-
Requires-Dist: anthropic[bedrock]>=0.66.0
|
|
6
|
-
Requires-Dist: chardet>=5.2.0,<6
|
|
7
|
-
Requires-Dist: diff-match-patch>=20241021
|
|
8
|
-
Requires-Dist: filelock>=3.20.3
|
|
9
|
-
Requires-Dist: fastapi
|
|
10
|
-
Requires-Dist: google-genai>=1.56.0
|
|
11
|
-
Requires-Dist: markdown-it-py>=4.0.0
|
|
12
|
-
Requires-Dist: openai>=2.24.0
|
|
13
|
-
Requires-Dist: prompt-toolkit>=3.0.52
|
|
14
|
-
Requires-Dist: pydantic>=2.11.7
|
|
15
|
-
Requires-Dist: python-socks>=2.8.1
|
|
16
|
-
Requires-Dist: pyyaml>=6.0.2
|
|
17
|
-
Requires-Dist: rich>=14.1.0
|
|
18
|
-
Requires-Dist: sse-starlette
|
|
19
|
-
Requires-Dist: trafilatura>=2.0.0
|
|
20
|
-
Requires-Dist: typer>=0.17.3
|
|
21
|
-
Requires-Dist: uvicorn
|
|
22
|
-
Requires-Dist: readability-lxml>=0.8.4.1
|
|
23
|
-
Requires-Python: >=3.13
|
|
24
|
-
Description-Content-Type: text/markdown
|
|
25
|
-
|
|
26
1
|
# Klaude Code
|
|
27
2
|
|
|
28
3
|
Minimal code agent CLI.
|
|
@@ -132,9 +107,14 @@ klaude
|
|
|
132
107
|
|
|
133
108
|
On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
|
|
134
109
|
|
|
135
|
-
You can also configure fallback lists for helper models:
|
|
110
|
+
You can also configure fallback lists for the main model and helper models:
|
|
136
111
|
|
|
137
112
|
```yaml
|
|
113
|
+
main_model:
|
|
114
|
+
- gpt-5.5
|
|
115
|
+
- gpt-5.4
|
|
116
|
+
- opus
|
|
117
|
+
|
|
138
118
|
fast_model:
|
|
139
119
|
- haiku
|
|
140
120
|
- gemini-flash
|
|
@@ -145,7 +125,9 @@ compact_model:
|
|
|
145
125
|
- haiku
|
|
146
126
|
```
|
|
147
127
|
|
|
148
|
-
Klaude
|
|
128
|
+
Klaude expands each entry into concrete provider candidates in `provider_list` order, then falls through to the next model in the list. For example, `gpt-5.4` will try available providers such as `gpt-5.4@openai`, `gpt-5.4@github-copilot`, and `gpt-5.4@openrouter` before moving to the next model. Runtime fallback is used for non-retryable provider/model failures such as quota, billing, permission, or model-unavailable errors. `fast_model` is used for session-title generation; `compact_model` is used for compact/helper tasks.
|
|
129
|
+
|
|
130
|
+
When you switch models with `/model`, Klaude updates `main_model` without discarding the fallback chain: the selected model is moved to the front if it already exists, or inserted at the front otherwise.
|
|
149
131
|
|
|
150
132
|
#### Built-in Providers
|
|
151
133
|
|
|
@@ -221,7 +203,10 @@ You can add custom models to built-in providers or define new ones. Configuratio
|
|
|
221
203
|
|
|
222
204
|
```yaml
|
|
223
205
|
# ~/.klaude/klaude-config.yaml
|
|
224
|
-
main_model:
|
|
206
|
+
main_model:
|
|
207
|
+
- gpt-5.5
|
|
208
|
+
- gpt-5.4
|
|
209
|
+
- opus
|
|
225
210
|
|
|
226
211
|
fast_model:
|
|
227
212
|
- haiku
|
|
@@ -261,7 +246,8 @@ provider_list:
|
|
|
261
246
|
- **Merging**: If `provider_name` matches a built-in provider, settings like `protocol` and `api_key` are inherited.
|
|
262
247
|
- **Overriding**: Use the same `model_name` as a built-in model to override its parameters.
|
|
263
248
|
- **Environment Variables**: Use `${VAR_NAME}` syntax for secrets.
|
|
264
|
-
- **Model Preference Lists**: `fast_model
|
|
249
|
+
- **Model Preference Lists**: `main_model`, `fast_model`, and `compact_model` accept either a single string or a list of model selectors. When you provide a list, Klaude first tries matching providers in `provider_list` order for each selector, then moves to the next selector.
|
|
250
|
+
- **Updating Defaults**: `/model` keeps saving the selected model back to `main_model`, but preserves fallback order by moving or inserting the selected model at the front of the list.
|
|
265
251
|
|
|
266
252
|
##### Sub-agent Model Configuration
|
|
267
253
|
|
|
@@ -332,7 +318,7 @@ Inside the interactive session (`klaude`), use these commands to streamline your
|
|
|
332
318
|
- `/refresh-terminal` - Refresh terminal display.
|
|
333
319
|
- `/web` - Switch to web UI mode.
|
|
334
320
|
- `/new` - Start a new session (clears context).
|
|
335
|
-
- `/model` - Switch the active LLM
|
|
321
|
+
- `/model` - Switch the active LLM and update `main_model` in config while preserving fallback order (the selected model is moved/inserted to the front).
|
|
336
322
|
- `/sub-agent-model` - Configure sub-agent models at runtime.
|
|
337
323
|
- `/thinking` - Change thinking/reasoning level.
|
|
338
324
|
- `/status` - Show session usage statistics (cost, tokens, model breakdown).
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "klaude-code"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.29.0"
|
|
8
8
|
description = "Minimal code agent CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13"
|
|
@@ -15,18 +15,20 @@ dependencies = [
|
|
|
15
15
|
"filelock>=3.20.3",
|
|
16
16
|
"fastapi",
|
|
17
17
|
"google-genai>=1.56.0",
|
|
18
|
+
"httpx[socks]>=0.28.1",
|
|
18
19
|
"markdown-it-py>=4.0.0",
|
|
19
20
|
"openai>=2.24.0",
|
|
20
21
|
"prompt-toolkit>=3.0.52",
|
|
21
22
|
"pydantic>=2.11.7",
|
|
22
|
-
"python-socks>=2.8.1",
|
|
23
23
|
"pyyaml>=6.0.2",
|
|
24
24
|
"rich>=14.1.0",
|
|
25
|
+
"socksio>=1.0.0",
|
|
25
26
|
"sse-starlette",
|
|
26
27
|
"trafilatura>=2.0.0",
|
|
27
28
|
"typer>=0.17.3",
|
|
28
29
|
"uvicorn",
|
|
29
30
|
"readability-lxml>=0.8.4.1",
|
|
31
|
+
"pillow>=12.2.0",
|
|
30
32
|
]
|
|
31
33
|
|
|
32
34
|
[project.scripts]
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from collections.abc import AsyncGenerator, Awaitable, Callable, Iterable
|
|
4
4
|
|
|
5
|
-
from klaude_code.agent.agent_profile import AgentProfile
|
|
5
|
+
from klaude_code.agent.agent_profile import AgentProfile, ModelProfileProvider
|
|
6
6
|
from klaude_code.agent.task import SessionContext, TaskExecutionContext, TaskExecutor
|
|
7
7
|
from klaude_code.llm import LLMClientABC
|
|
8
8
|
from klaude_code.log import DebugType, log_debug
|
|
@@ -32,14 +32,17 @@ class Agent:
|
|
|
32
32
|
]
|
|
33
33
|
| None
|
|
34
34
|
) = None,
|
|
35
|
+
model_profile_provider: ModelProfileProvider | None = None,
|
|
35
36
|
):
|
|
36
37
|
self.session: Session = session
|
|
37
38
|
self.profile: AgentProfile = profile
|
|
38
39
|
self.compact_llm_client: LLMClientABC | None = compact_llm_client
|
|
39
40
|
self._current_task: TaskExecutor | None = None
|
|
41
|
+
self._follow_up_queue: list[UserInputPayload] = [item.model_copy(deep=True) for item in session.follow_up_queue]
|
|
40
42
|
self._last_interrupt_show_notice = True
|
|
41
43
|
self._last_interrupt_prefill_text: str | None = None
|
|
42
44
|
self.request_user_interaction = request_user_interaction
|
|
45
|
+
self._model_profile_provider = model_profile_provider
|
|
43
46
|
if not self.session.model_name:
|
|
44
47
|
self.session.model_name = profile.llm_client.model_name
|
|
45
48
|
|
|
@@ -52,6 +55,37 @@ class Agent:
|
|
|
52
55
|
self._last_interrupt_prefill_text = None
|
|
53
56
|
return text
|
|
54
57
|
|
|
58
|
+
def follow_up(self, user_input: UserInputPayload) -> int:
|
|
59
|
+
"""Queue a user message to run after the active task completes."""
|
|
60
|
+
|
|
61
|
+
self._follow_up_queue.append(user_input)
|
|
62
|
+
self.session.set_follow_up_queue(self._follow_up_queue)
|
|
63
|
+
return len(self._follow_up_queue)
|
|
64
|
+
|
|
65
|
+
def follow_up_count(self) -> int:
|
|
66
|
+
return len(self._follow_up_queue)
|
|
67
|
+
|
|
68
|
+
def follow_up_snapshot(self) -> tuple[UserInputPayload, ...]:
|
|
69
|
+
return tuple(self._follow_up_queue)
|
|
70
|
+
|
|
71
|
+
def pop_all_follow_up(self) -> tuple[UserInputPayload, ...]:
|
|
72
|
+
messages = tuple(self._follow_up_queue)
|
|
73
|
+
self._follow_up_queue.clear()
|
|
74
|
+
self.session.set_follow_up_queue(self._follow_up_queue)
|
|
75
|
+
return messages
|
|
76
|
+
|
|
77
|
+
def peek_next_follow_up(self) -> UserInputPayload | None:
|
|
78
|
+
if not self._follow_up_queue:
|
|
79
|
+
return None
|
|
80
|
+
return self._follow_up_queue[0]
|
|
81
|
+
|
|
82
|
+
def pop_next_follow_up(self) -> UserInputPayload | None:
|
|
83
|
+
if not self._follow_up_queue:
|
|
84
|
+
return None
|
|
85
|
+
message = self._follow_up_queue.pop(0)
|
|
86
|
+
self.session.set_follow_up_queue(self._follow_up_queue)
|
|
87
|
+
return message
|
|
88
|
+
|
|
55
89
|
def on_interrupt(self) -> Iterable[events.Event]:
|
|
56
90
|
"""Handle an interrupt by emitting best-effort cleanup events.
|
|
57
91
|
|
|
@@ -98,6 +132,7 @@ class Agent:
|
|
|
98
132
|
tool_registry=tool_registry,
|
|
99
133
|
sub_agent_state=self.session.sub_agent_state,
|
|
100
134
|
compact_llm_client=self.compact_llm_client,
|
|
135
|
+
apply_llm_client_change=self._apply_llm_client_change,
|
|
101
136
|
)
|
|
102
137
|
|
|
103
138
|
task = TaskExecutor(context)
|
|
@@ -127,6 +162,26 @@ class Agent:
|
|
|
127
162
|
self.profile = profile
|
|
128
163
|
self.session.model_name = profile.llm_client.model_name
|
|
129
164
|
|
|
165
|
+
def _apply_llm_client_change(self, llm_client: LLMClientABC) -> AgentProfile:
|
|
166
|
+
if self._model_profile_provider is None:
|
|
167
|
+
profile = AgentProfile(
|
|
168
|
+
llm_client=llm_client,
|
|
169
|
+
system_prompt=self.profile.system_prompt,
|
|
170
|
+
tools=self.profile.tools,
|
|
171
|
+
attachments=self.profile.attachments,
|
|
172
|
+
)
|
|
173
|
+
else:
|
|
174
|
+
sub_agent_type = None
|
|
175
|
+
if self.session.sub_agent_state is not None and not self.session.sub_agent_state.fork_context:
|
|
176
|
+
sub_agent_type = self.session.sub_agent_state.sub_agent_type
|
|
177
|
+
profile = self._model_profile_provider.build_profile(
|
|
178
|
+
llm_client,
|
|
179
|
+
sub_agent_type,
|
|
180
|
+
work_dir=self.session.work_dir,
|
|
181
|
+
)
|
|
182
|
+
self.set_model_profile(profile)
|
|
183
|
+
return profile
|
|
184
|
+
|
|
130
185
|
def get_llm_client(self) -> LLMClientABC:
|
|
131
186
|
return self.profile.llm_client
|
|
132
187
|
|
|
@@ -44,7 +44,7 @@ MAIN_AGENT_COMMON_BASE_TOOLS: list[str] = [tools.BASH, tools.READ]
|
|
|
44
44
|
MAIN_AGENT_GPT5_DIFF_TOOLS: list[str] = [tools.APPLY_PATCH, tools.TODO_WRITE]
|
|
45
45
|
MAIN_AGENT_NON_GPT5_DIFF_TOOLS: list[str] = [tools.EDIT, tools.WRITE, tools.TODO_WRITE]
|
|
46
46
|
MAIN_AGENT_COMMON_TOOLS: list[str] = [
|
|
47
|
-
tools.HANDOFF,
|
|
47
|
+
# tools.HANDOFF,
|
|
48
48
|
tools.AGENT,
|
|
49
49
|
tools.WEB_FETCH,
|
|
50
50
|
tools.WEB_SEARCH,
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Agent attachment package.
|
|
2
|
+
|
|
3
|
+
Shared helpers for <system-reminder> content produced by attachments live here.
|
|
4
|
+
Each concrete attachment (files, memory, skills, …) is responsible for
|
|
5
|
+
truncating its own output; these helpers provide a consistent Read-tool-style
|
|
6
|
+
notice so the agent always knows how to fetch the full content.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from dataclasses import dataclass
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass(frozen=True)
|
|
15
|
+
class LineTruncationResult:
|
|
16
|
+
"""Outcome of :func:`truncate_text_by_lines`."""
|
|
17
|
+
|
|
18
|
+
text: str
|
|
19
|
+
total_lines: int
|
|
20
|
+
kept_lines: int
|
|
21
|
+
truncated: bool
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def hidden_lines(self) -> int:
|
|
25
|
+
return max(0, self.total_lines - self.kept_lines)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def truncate_text_by_lines(text: str, *, max_lines: int) -> LineTruncationResult:
|
|
29
|
+
"""Keep the first ``max_lines`` lines; report total/hidden line counts.
|
|
30
|
+
|
|
31
|
+
The trailing newline (if any) is preserved only when the text was not
|
|
32
|
+
truncated, matching Read tool behaviour where a truncated view never
|
|
33
|
+
ends with a bare newline before the notice.
|
|
34
|
+
"""
|
|
35
|
+
if max_lines <= 0:
|
|
36
|
+
return LineTruncationResult(
|
|
37
|
+
text="", total_lines=text.count("\n") + (1 if text else 0), kept_lines=0, truncated=bool(text)
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
lines = text.splitlines()
|
|
41
|
+
total = len(lines)
|
|
42
|
+
if total <= max_lines:
|
|
43
|
+
return LineTruncationResult(text=text, total_lines=total, kept_lines=total, truncated=False)
|
|
44
|
+
|
|
45
|
+
kept = "\n".join(lines[:max_lines])
|
|
46
|
+
return LineTruncationResult(text=kept, total_lines=total, kept_lines=max_lines, truncated=True)
|
|
@@ -5,13 +5,17 @@ import re
|
|
|
5
5
|
import shlex
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
+
from klaude_code.const import ATTACHMENT_DIFF_MAX_LINES, ATTACHMENT_DIFF_SOURCE_MAX_BYTES
|
|
8
9
|
from klaude_code.prompts.attachments import (
|
|
9
10
|
FILE_ALREADY_IN_CONTEXT_TEMPLATE,
|
|
11
|
+
FILE_CHANGED_DIFF_SKIPPED_TEMPLATE,
|
|
12
|
+
FILE_CHANGED_DIFF_TRUNCATED_TEMPLATE,
|
|
10
13
|
FILE_CHANGED_EXTERNALLY_TEMPLATE,
|
|
11
14
|
PASTE_FILE_HINT_TEMPLATE,
|
|
12
15
|
TOOL_RESULT_TEMPLATE,
|
|
13
16
|
)
|
|
14
17
|
from klaude_code.protocol import message, tools
|
|
18
|
+
from klaude_code.protocol.input_syntax import AT_FILE_PATTERN
|
|
15
19
|
from klaude_code.protocol.models import (
|
|
16
20
|
AtFileImagesUIItem,
|
|
17
21
|
AtFileOp,
|
|
@@ -28,6 +32,7 @@ from klaude_code.session import Session
|
|
|
28
32
|
from klaude_code.skill.loader import discover_skills_near_paths
|
|
29
33
|
from klaude_code.tool import BashTool, ReadTool
|
|
30
34
|
|
|
35
|
+
from . import truncate_text_by_lines
|
|
31
36
|
from .memory import Memory, discover_memory_files_near_paths, format_memory_content
|
|
32
37
|
from .skills import build_dynamic_skill_listing_attachment
|
|
33
38
|
from .state import (
|
|
@@ -57,18 +62,6 @@ def _fmt_paste_file_hint(pasted_files: dict[str, str]) -> str:
|
|
|
57
62
|
return PASTE_FILE_HINT_TEMPLATE.format(mapping=mapping)
|
|
58
63
|
|
|
59
64
|
|
|
60
|
-
# Match @ preceded by whitespace, start of line, or -> (ReadTool line number arrow)
|
|
61
|
-
# Supports optional line range suffix: @file.txt#L10-20 or @file.txt#L10.
|
|
62
|
-
_AT_PLAIN_STOP_CHARS = (
|
|
63
|
-
r"\u3000-\u303f"
|
|
64
|
-
r"\uff01-\uff0f"
|
|
65
|
-
r"\uff1a-\uff20"
|
|
66
|
-
r"\uff3b-\uff40"
|
|
67
|
-
r"\uff5b-\uff65"
|
|
68
|
-
)
|
|
69
|
-
AT_FILE_PATTERN = re.compile(rf'(?:(?<!\S)|(?<=\u2192))@("(?P<quoted>[^"]+)"|(?P<plain>[^\s{_AT_PLAIN_STOP_CHARS}]+))')
|
|
70
|
-
|
|
71
|
-
|
|
72
65
|
class AtFileRef:
|
|
73
66
|
"""Parsed @file reference with optional line range."""
|
|
74
67
|
|
|
@@ -120,7 +113,7 @@ async def _load_at_file(
|
|
|
120
113
|
ref: AtFileRef,
|
|
121
114
|
at_ops: list[AtFileOp],
|
|
122
115
|
formatted_blocks: list[str],
|
|
123
|
-
collected_images: list[message.ImageURLPart],
|
|
116
|
+
collected_images: list[message.ImageURLPart | message.ImageFilePart],
|
|
124
117
|
collected_image_paths: list[str],
|
|
125
118
|
discovered_memories: list[Memory],
|
|
126
119
|
skill_discovery_paths: list[str],
|
|
@@ -141,7 +134,7 @@ async def _load_at_file(
|
|
|
141
134
|
limit = ref.line_end - ref.line_start + 1
|
|
142
135
|
args = ReadTool.ReadArguments(file_path=path_str, offset=offset, limit=limit)
|
|
143
136
|
tool_result = await ReadTool.call_with_args(args, tool_context)
|
|
144
|
-
images = [part for part in tool_result.parts if isinstance(part, message.ImageURLPart)]
|
|
137
|
+
images = [part for part in tool_result.parts if isinstance(part, (message.ImageURLPart, message.ImageFilePart))]
|
|
145
138
|
|
|
146
139
|
formatted_blocks.append(
|
|
147
140
|
_fmt_tool_result(tools.READ, args.model_dump_json(exclude_none=True), tool_result.output_text)
|
|
@@ -210,7 +203,7 @@ async def at_file_reader_attachment(session: Session) -> message.DeveloperMessag
|
|
|
210
203
|
|
|
211
204
|
at_ops: list[AtFileOp] = []
|
|
212
205
|
formatted_blocks: list[str] = []
|
|
213
|
-
collected_images: list[message.ImageURLPart] = []
|
|
206
|
+
collected_images: list[message.ImageURLPart | message.ImageFilePart] = []
|
|
214
207
|
collected_image_paths: list[str] = []
|
|
215
208
|
discovered_memories: list[Memory] = []
|
|
216
209
|
skill_discovery_paths: list[str] = []
|
|
@@ -254,7 +247,27 @@ async def at_file_reader_attachment(session: Session) -> message.DeveloperMessag
|
|
|
254
247
|
)
|
|
255
248
|
|
|
256
249
|
|
|
257
|
-
def _compute_diff_snippet(old_content: str, new_content: str) -> str:
|
|
250
|
+
def _compute_diff_snippet(old_content: str, new_content: str, file_path: str) -> str:
|
|
251
|
+
"""Render a small unified-style diff, capped so it cannot blow up context.
|
|
252
|
+
|
|
253
|
+
Guards (see ``const.ATTACHMENT_DIFF_*``):
|
|
254
|
+
|
|
255
|
+
* If ``old_content + new_content`` already exceeds the source size limit,
|
|
256
|
+
skip ``difflib`` entirely. Large HTML/minified blobs produce diffs that
|
|
257
|
+
approach ``2x`` the source, which in past sessions pushed the next turn
|
|
258
|
+
past the 1M-token ceiling even after a successful compaction.
|
|
259
|
+
* After the diff is built, keep only the first ``ATTACHMENT_DIFF_MAX_LINES``
|
|
260
|
+
lines and append a Read-tool-style notice, mirroring how the Read tool
|
|
261
|
+
truncates long files.
|
|
262
|
+
"""
|
|
263
|
+
combined_size_bytes = len(old_content.encode("utf-8")) + len(new_content.encode("utf-8"))
|
|
264
|
+
if combined_size_bytes > ATTACHMENT_DIFF_SOURCE_MAX_BYTES:
|
|
265
|
+
return FILE_CHANGED_DIFF_SKIPPED_TEMPLATE.format(
|
|
266
|
+
total_bytes=combined_size_bytes,
|
|
267
|
+
limit_bytes=ATTACHMENT_DIFF_SOURCE_MAX_BYTES,
|
|
268
|
+
file_path=file_path,
|
|
269
|
+
)
|
|
270
|
+
|
|
258
271
|
old_lines = old_content.splitlines(keepends=True)
|
|
259
272
|
new_lines = new_content.splitlines(keepends=True)
|
|
260
273
|
|
|
@@ -280,7 +293,15 @@ def _compute_diff_snippet(old_content: str, new_content: str) -> str:
|
|
|
280
293
|
diff_lines.append(f" {line_no:>6}+\t{line.rstrip()}")
|
|
281
294
|
diff_lines.append(" ------")
|
|
282
295
|
|
|
283
|
-
|
|
296
|
+
rendered = "\n".join(diff_lines).rstrip("\n -")
|
|
297
|
+
truncation = truncate_text_by_lines(rendered, max_lines=ATTACHMENT_DIFF_MAX_LINES)
|
|
298
|
+
if truncation.truncated:
|
|
299
|
+
return truncation.text + FILE_CHANGED_DIFF_TRUNCATED_TEMPLATE.format(
|
|
300
|
+
hidden_lines=truncation.hidden_lines,
|
|
301
|
+
total_lines=truncation.total_lines,
|
|
302
|
+
file_path=file_path,
|
|
303
|
+
)
|
|
304
|
+
return truncation.text
|
|
284
305
|
|
|
285
306
|
|
|
286
307
|
async def file_changed_externally_attachment(session: Session) -> message.DeveloperMessage | None:
|
|
@@ -316,7 +337,7 @@ async def file_changed_externally_attachment(session: Session) -> message.Develo
|
|
|
316
337
|
if new_status is None or new_status.cached_content is None:
|
|
317
338
|
continue
|
|
318
339
|
|
|
319
|
-
snippet = _compute_diff_snippet(old_content, new_status.cached_content)
|
|
340
|
+
snippet = _compute_diff_snippet(old_content, new_status.cached_content, path)
|
|
320
341
|
if not snippet:
|
|
321
342
|
continue
|
|
322
343
|
changed_files.append((path, snippet))
|
|
@@ -377,7 +398,15 @@ async def paste_file_attachment(session: Session) -> message.DeveloperMessage |
|
|
|
377
398
|
for item in reversed(session.conversation_history):
|
|
378
399
|
if isinstance(item, message.ToolResultMessage):
|
|
379
400
|
return None
|
|
380
|
-
if
|
|
401
|
+
if (
|
|
402
|
+
isinstance(item, message.DeveloperMessage)
|
|
403
|
+
and item.ui_extra is not None
|
|
404
|
+
and any(isinstance(ui_item, PasteFilesUIItem) for ui_item in item.ui_extra.items)
|
|
405
|
+
):
|
|
406
|
+
return None
|
|
407
|
+
if isinstance(item, message.UserMessage):
|
|
408
|
+
if not item.pasted_files:
|
|
409
|
+
return None
|
|
381
410
|
return message.DeveloperMessage(
|
|
382
411
|
parts=message.text_parts_from_str(
|
|
383
412
|
f"<system-reminder>{_fmt_paste_file_hint(item.pasted_files)}\n</system-reminder>"
|
|
@@ -5,11 +5,18 @@ from pathlib import Path
|
|
|
5
5
|
|
|
6
6
|
from pydantic import BaseModel
|
|
7
7
|
|
|
8
|
-
from klaude_code.const import
|
|
8
|
+
from klaude_code.const import (
|
|
9
|
+
ATTACHMENT_MEMORY_MAX_BYTES_PER_FILE,
|
|
10
|
+
ATTACHMENT_MEMORY_MAX_LINES,
|
|
11
|
+
ProjectPaths,
|
|
12
|
+
find_git_repo_root,
|
|
13
|
+
project_key_from_path,
|
|
14
|
+
)
|
|
9
15
|
from klaude_code.prompts.attachments import (
|
|
10
16
|
AUTO_MEMORY_HINT_TEMPLATE,
|
|
11
17
|
AUTO_MEMORY_INSTRUCTION,
|
|
12
18
|
DISCOVERED_MEMORY_INSTRUCTION,
|
|
19
|
+
MEMORY_FILE_BYTE_TRUNCATED_TEMPLATE,
|
|
13
20
|
MEMORY_FILE_TRUNCATED_TEMPLATE,
|
|
14
21
|
MEMORY_HEADER,
|
|
15
22
|
MEMORY_TRUNCATED_TEMPLATE,
|
|
@@ -20,13 +27,16 @@ from klaude_code.protocol import message
|
|
|
20
27
|
from klaude_code.protocol.models import DeveloperUIExtra, DeveloperUIItem, MemoryFileLoaded, MemoryLoadedUIItem
|
|
21
28
|
from klaude_code.session import Session
|
|
22
29
|
|
|
30
|
+
from . import truncate_text_by_lines
|
|
23
31
|
from .state import is_memory_loaded, mark_memory_loaded
|
|
24
32
|
|
|
25
33
|
MEMORY_FILE_NAMES = ["AGENTS.md", "CLAUDE.md", "AGENT.md"]
|
|
26
34
|
|
|
27
35
|
AUTO_MEMORY_FILE = "MEMORY.md"
|
|
28
|
-
|
|
29
|
-
|
|
36
|
+
# Kept as module-level aliases for backwards compatibility with existing tests
|
|
37
|
+
# and callers. See src/klaude_code/const.py for the canonical values.
|
|
38
|
+
AUTO_MEMORY_MAX_LINES = ATTACHMENT_MEMORY_MAX_LINES
|
|
39
|
+
MEMORY_MAX_BYTES_PER_FILE = ATTACHMENT_MEMORY_MAX_BYTES_PER_FILE
|
|
30
40
|
MEMORY_MAX_SESSION_BYTES = 60 * 1024
|
|
31
41
|
|
|
32
42
|
|
|
@@ -131,23 +141,31 @@ def format_memories_attachment(memories: list[Memory], include_header: bool = Tr
|
|
|
131
141
|
|
|
132
142
|
|
|
133
143
|
def truncate_memory_content(text: str, path: str) -> str:
|
|
134
|
-
"""Truncate memory content to the
|
|
144
|
+
"""Truncate memory content to the first :data:`AUTO_MEMORY_MAX_LINES` lines.
|
|
135
145
|
|
|
136
|
-
|
|
137
|
-
|
|
146
|
+
Mirrors Read tool behaviour: show a bounded prefix and tell the agent how
|
|
147
|
+
to fetch the rest. A generous byte cap still applies as a last-resort
|
|
148
|
+
guard against pathologically long single lines (e.g. minified JSON).
|
|
149
|
+
"""
|
|
150
|
+
truncation = truncate_text_by_lines(text, max_lines=AUTO_MEMORY_MAX_LINES)
|
|
151
|
+
result = truncation.text
|
|
138
152
|
|
|
139
|
-
if len(lines) > AUTO_MEMORY_MAX_LINES:
|
|
140
|
-
lines = lines[:AUTO_MEMORY_MAX_LINES]
|
|
141
|
-
truncated = True
|
|
142
|
-
|
|
143
|
-
result = "\n".join(lines)
|
|
144
153
|
if len(result.encode("utf-8")) > MEMORY_MAX_BYTES_PER_FILE:
|
|
145
154
|
encoded = result.encode("utf-8")[:MEMORY_MAX_BYTES_PER_FILE]
|
|
146
155
|
result = encoded.decode("utf-8", errors="ignore")
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
156
|
+
total_lines = truncation.total_lines or len(text.splitlines())
|
|
157
|
+
return result + MEMORY_FILE_BYTE_TRUNCATED_TEMPLATE.format(
|
|
158
|
+
max_bytes=MEMORY_MAX_BYTES_PER_FILE,
|
|
159
|
+
total_lines=total_lines,
|
|
160
|
+
path=path,
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
if truncation.truncated:
|
|
164
|
+
return result + MEMORY_FILE_TRUNCATED_TEMPLATE.format(
|
|
165
|
+
max_lines=AUTO_MEMORY_MAX_LINES,
|
|
166
|
+
total_lines=truncation.total_lines,
|
|
167
|
+
path=path,
|
|
168
|
+
)
|
|
151
169
|
return result
|
|
152
170
|
|
|
153
171
|
|