klaude-code 1.4.0__tar.gz → 1.4.2__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-1.4.0 → klaude_code-1.4.2}/PKG-INFO +1 -1
- {klaude_code-1.4.0 → klaude_code-1.4.2}/pyproject.toml +1 -1
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/thinking_cmd.py +4 -1
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/config/select_model.py +7 -7
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/completers.py +65 -12
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/input_prompt_toolkit.py +25 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/selector.py +20 -10
- {klaude_code-1.4.0 → klaude_code-1.4.2}/README.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/auth/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/auth/codex/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/auth/codex/exceptions.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/auth/codex/jwt_utils.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/auth/codex/oauth.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/auth/codex/token_manager.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/auth_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/config_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/debug.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/list_model.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/main.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/runtime.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/self_update.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/cli/session_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/clear_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/command_abc.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/debug_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/export_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/export_online_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/fork_session_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/help_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/model_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/prompt-init.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/prompt-jj-describe.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/prompt_command.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/refresh_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/registry.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/release_notes_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/resume_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/status_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/command/terminal_setup_cmd.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/config/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/config/assets/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/config/assets/builtin_config.yaml +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/config/builtin_config.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/config/config.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/const.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/agent.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/executor.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/manager/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/manager/llm_clients.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/manager/llm_clients_builder.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/manager/sub_agent_manager.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompt.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-claude-code.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-gemini.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-minimal.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-oracle.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-web.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/reminders.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/task.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/_utils.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/apply_patch.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/apply_patch_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/apply_patch_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/diff_builder.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/edit_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/edit_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/move_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/move_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/read_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/read_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/write_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/file/write_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/report_back_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/bash_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/bash_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/shell/command_safety.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/skill/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/skill/skill_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/skill/skill_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/sub_agent_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/update_plan_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/update_plan_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_abc.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_context.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_registry.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/tool_runner.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/truncation.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/mermaid_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/mermaid_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_fetch_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_fetch_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_search_tool.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/web/web_search_tool.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/turn.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/anthropic/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/anthropic/client.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/anthropic/input.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/client.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/codex/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/codex/client.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/input_common.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/client.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/input.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/stream.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openai_compatible/tool_call_accumulator.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/client.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/input.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/openrouter/reasoning.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/registry.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/responses/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/responses/client.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/responses/input.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/llm/usage.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/commands.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/events.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/llm_param.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/model.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/op.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/op_handler.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/explore.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/oracle.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/task.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/sub_agent/web.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/protocol/tools.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/codec.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/export.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/selector.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/session.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/store.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/templates/export_session.html +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/session/templates/mermaid_viewer.html +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/assets/deslop/SKILL.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/assets/dev-docs/SKILL.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/assets/handoff/SKILL.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/assets/jj-workspace/SKILL.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/assets/skill-creator/SKILL.md +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/loader.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/manager.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/skill/system_skills.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/trace/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/trace/log.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/core/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/core/display.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/core/input.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/core/stage_manager.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/debug/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/debug/display.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/exec/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/exec/display.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/clipboard.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/display.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/event_handler.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/key_bindings.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/renderer.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/assistant.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/bash_syntax.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/common.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/developer.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/diffs.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/errors.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/mermaid_viewer.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/metadata.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/sub_agent.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/thinking.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/tools.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/renderers/user_input.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/cjk_wrap.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/code_panel.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/live.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/markdown.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/quote.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/searchable_text.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/status.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/rich/theme.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/color.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/control.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/notifier.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/terminal/progress_bar.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/utils/__init__.py +0 -0
- {klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/utils/common.py +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
from typing import Literal, cast
|
|
2
3
|
|
|
3
4
|
from prompt_toolkit.styles import Style
|
|
4
5
|
|
|
@@ -6,6 +7,8 @@ from klaude_code.command.command_abc import Agent, CommandABC, CommandResult
|
|
|
6
7
|
from klaude_code.protocol import commands, events, llm_param, model
|
|
7
8
|
from klaude_code.ui.terminal.selector import SelectItem, select_one
|
|
8
9
|
|
|
10
|
+
ReasoningEffort = Literal["high", "medium", "low", "minimal", "none", "xhigh"]
|
|
11
|
+
|
|
9
12
|
# Thinking level options for different protocols
|
|
10
13
|
RESPONSES_LEVELS = ["low", "medium", "high"]
|
|
11
14
|
RESPONSES_GPT51_LEVELS = ["none", "low", "medium", "high"]
|
|
@@ -148,7 +151,7 @@ def _select_responses_thinking_sync(model_name: str | None) -> llm_param.Thinkin
|
|
|
148
151
|
|
|
149
152
|
if result is None:
|
|
150
153
|
return None
|
|
151
|
-
return llm_param.Thinking(reasoning_effort=result)
|
|
154
|
+
return llm_param.Thinking(reasoning_effort=cast(ReasoningEffort, result))
|
|
152
155
|
except KeyboardInterrupt:
|
|
153
156
|
return None
|
|
154
157
|
|
|
@@ -119,7 +119,7 @@ def select_model_from_config(preferred: str | None = None) -> str | None:
|
|
|
119
119
|
if not thinking:
|
|
120
120
|
return ""
|
|
121
121
|
if thinking.reasoning_effort:
|
|
122
|
-
return f"reasoning
|
|
122
|
+
return f"reasoning {thinking.reasoning_effort}"
|
|
123
123
|
if thinking.budget_tokens:
|
|
124
124
|
return f"thinking budget {thinking.budget_tokens}"
|
|
125
125
|
return "thinking (configured)"
|
|
@@ -127,18 +127,18 @@ def select_model_from_config(preferred: str | None = None) -> str | None:
|
|
|
127
127
|
items: list[SelectItem[str]] = []
|
|
128
128
|
for m in filtered_models:
|
|
129
129
|
model_id = m.model_params.model or "N/A"
|
|
130
|
-
first_line_prefix = f"{m.model_name:<{max_model_name_length}}
|
|
130
|
+
first_line_prefix = f"{m.model_name:<{max_model_name_length}} → "
|
|
131
131
|
thinking_info = _thinking_info(m)
|
|
132
|
-
meta_parts = [m.provider]
|
|
132
|
+
meta_parts: list[str] = [m.provider]
|
|
133
133
|
if thinking_info:
|
|
134
134
|
meta_parts.append(thinking_info)
|
|
135
135
|
if m.model_params.verbosity:
|
|
136
136
|
meta_parts.append(f"verbosity {m.model_params.verbosity}")
|
|
137
|
-
|
|
137
|
+
meta_str = " · ".join(meta_parts)
|
|
138
138
|
title = [
|
|
139
139
|
("class:msg", first_line_prefix),
|
|
140
|
-
("class:msg bold",
|
|
141
|
-
("class:meta", f"{
|
|
140
|
+
("class:msg bold", model_id),
|
|
141
|
+
("class:meta", f" {meta_str}\n"),
|
|
142
142
|
]
|
|
143
143
|
search_text = f"{m.model_name} {model_id} {m.provider}"
|
|
144
144
|
items.append(SelectItem(title=title, value=m.model_name, search_text=search_text))
|
|
@@ -158,7 +158,7 @@ def select_model_from_config(preferred: str | None = None) -> str | None:
|
|
|
158
158
|
("msg", ""),
|
|
159
159
|
("meta", "fg:ansibrightblack"),
|
|
160
160
|
("text", "ansibrightblack"),
|
|
161
|
-
("question", ""),
|
|
161
|
+
("question", "bold"),
|
|
162
162
|
("search_prefix", "ansibrightblack"),
|
|
163
163
|
# search filter colors at the bottom
|
|
164
164
|
("search_success", "noinherit fg:ansigreen"),
|
|
@@ -107,9 +107,9 @@ class _SlashCommandCompleter(Completer):
|
|
|
107
107
|
label_len = len(cmd_name) + len(hint)
|
|
108
108
|
padding = " " * (align_width - label_len)
|
|
109
109
|
|
|
110
|
-
# Using HTML for formatting:
|
|
110
|
+
# Using HTML for formatting: default color command name, normal hint, gray summary
|
|
111
111
|
display_text = HTML(
|
|
112
|
-
f"<
|
|
112
|
+
f"<style color='ansidefault'>{cmd_name}</style>{hint}{padding}<style color='ansibrightblack'>{cmd_obj.summary}</style>" # pyright: ignore[reportUnknownMemberType, reportAttributeAccessIssue]
|
|
113
113
|
)
|
|
114
114
|
completion_text = f"/{cmd_name} "
|
|
115
115
|
yield Completion(
|
|
@@ -181,9 +181,9 @@ class _SkillCompleter(Completer):
|
|
|
181
181
|
padding_name = " " * (align_width - len(name))
|
|
182
182
|
location_tag = f"[{location}]".ljust(9)
|
|
183
183
|
|
|
184
|
-
# Using HTML for formatting:
|
|
184
|
+
# Using HTML for formatting: default color skill name, cyan location tag, gray description
|
|
185
185
|
display_text = HTML(
|
|
186
|
-
f"<
|
|
186
|
+
f"<style color='ansidefault'>{name}</style>{padding_name}<style color='ansicyan'>{location_tag}</style> "
|
|
187
187
|
f"<style color='ansibrightblack'>{desc}</style>"
|
|
188
188
|
)
|
|
189
189
|
completion_text = f"${name} "
|
|
@@ -318,11 +318,14 @@ class _AtFilesCompleter(Completer):
|
|
|
318
318
|
if not suggestions:
|
|
319
319
|
return [] # type: ignore[reportUnknownVariableType]
|
|
320
320
|
start_position = token_start_in_input - len(text_before)
|
|
321
|
-
|
|
321
|
+
visible_suggestions = suggestions[: self._max_results]
|
|
322
|
+
display_align = self._display_align_width(visible_suggestions)
|
|
323
|
+
|
|
324
|
+
for s in visible_suggestions:
|
|
322
325
|
yield Completion(
|
|
323
326
|
text=self._format_completion_text(s, is_quoted=is_quoted),
|
|
324
327
|
start_position=start_position,
|
|
325
|
-
display=s,
|
|
328
|
+
display=self._format_display_label(s, display_align),
|
|
326
329
|
)
|
|
327
330
|
return [] # type: ignore[reportUnknownVariableType]
|
|
328
331
|
|
|
@@ -333,12 +336,15 @@ class _AtFilesCompleter(Completer):
|
|
|
333
336
|
|
|
334
337
|
# Prepare Completion objects. Replace from the '@' character.
|
|
335
338
|
start_position = token_start_in_input - len(text_before) # negative
|
|
336
|
-
|
|
339
|
+
visible_suggestions = suggestions[: self._max_results]
|
|
340
|
+
display_align = self._display_align_width(visible_suggestions)
|
|
341
|
+
|
|
342
|
+
for s in visible_suggestions:
|
|
337
343
|
# Insert formatted text (with quoting when needed) so that subsequent typing does not keep triggering
|
|
338
344
|
yield Completion(
|
|
339
345
|
text=self._format_completion_text(s, is_quoted=is_quoted),
|
|
340
346
|
start_position=start_position,
|
|
341
|
-
display=s,
|
|
347
|
+
display=self._format_display_label(s, display_align),
|
|
342
348
|
)
|
|
343
349
|
|
|
344
350
|
# ---- Core logic ----
|
|
@@ -457,11 +463,13 @@ class _AtFilesCompleter(Completer):
|
|
|
457
463
|
keyword_norm: str,
|
|
458
464
|
) -> list[str]:
|
|
459
465
|
# Filter to keyword (case-insensitive) and rank by:
|
|
460
|
-
# 1.
|
|
461
|
-
# 2.
|
|
466
|
+
# 1. Hidden files (starting with .) are deprioritized
|
|
467
|
+
# 2. Paths containing "test" are deprioritized
|
|
468
|
+
# 3. Directory depth (shallower first)
|
|
469
|
+
# 4. Basename hit first, then path hit position, then length
|
|
462
470
|
# Since both fd and rg now search from current directory, all paths are relative to cwd
|
|
463
471
|
kn = keyword_norm
|
|
464
|
-
out: list[tuple[str, tuple[int, int, int, int, int]]] = []
|
|
472
|
+
out: list[tuple[str, tuple[int, int, int, int, int, int, int]]] = []
|
|
465
473
|
for p in paths_from_root:
|
|
466
474
|
pl = p.lower()
|
|
467
475
|
if kn not in pl:
|
|
@@ -477,7 +485,15 @@ class _AtFilesCompleter(Completer):
|
|
|
477
485
|
base_pos = base.find(kn)
|
|
478
486
|
path_pos = pl.find(kn)
|
|
479
487
|
depth = rel_to_cwd.rstrip("/").count("/")
|
|
488
|
+
|
|
489
|
+
# Deprioritize hidden files/directories (any path segment starting with .)
|
|
490
|
+
is_hidden = any(seg.startswith(".") for seg in rel_to_cwd.split("/") if seg)
|
|
491
|
+
# Deprioritize paths containing "test"
|
|
492
|
+
has_test = "test" in pl
|
|
493
|
+
|
|
480
494
|
score = (
|
|
495
|
+
1 if is_hidden else 0,
|
|
496
|
+
1 if has_test else 0,
|
|
481
497
|
depth,
|
|
482
498
|
0 if base_pos != -1 else 1,
|
|
483
499
|
base_pos if base_pos != -1 else 10_000,
|
|
@@ -523,6 +539,34 @@ class _AtFilesCompleter(Completer):
|
|
|
523
539
|
return f'@"{suggestion}" '
|
|
524
540
|
return f"@{suggestion} "
|
|
525
541
|
|
|
542
|
+
def _format_display_label(self, suggestion: str, align_width: int) -> HTML:
|
|
543
|
+
"""Format visible label for a completion option.
|
|
544
|
+
|
|
545
|
+
Shows the basename (or directory name) aligned, followed by the full path in gray.
|
|
546
|
+
"""
|
|
547
|
+
|
|
548
|
+
name = self._display_name(suggestion)
|
|
549
|
+
padding = " " * (max(align_width - len(name), 0) + 2)
|
|
550
|
+
return HTML(f"<style color='ansidefault'>{name}</style>{padding}<style color='ansibrightblack'>{suggestion}</style>")
|
|
551
|
+
|
|
552
|
+
def _display_align_width(self, suggestions: list[str]) -> int:
|
|
553
|
+
"""Calculate alignment width for display labels."""
|
|
554
|
+
|
|
555
|
+
return max((len(self._display_name(s)) for s in suggestions), default=0)
|
|
556
|
+
|
|
557
|
+
def _display_name(self, suggestion: str) -> str:
|
|
558
|
+
"""Return the basename (with trailing slash for directories) for display."""
|
|
559
|
+
|
|
560
|
+
if not suggestion:
|
|
561
|
+
return suggestion
|
|
562
|
+
|
|
563
|
+
is_dir = suggestion.endswith("/")
|
|
564
|
+
stripped = suggestion.rstrip("/")
|
|
565
|
+
base = stripped.split("/")[-1] if stripped else suggestion
|
|
566
|
+
if is_dir:
|
|
567
|
+
return f"{base}/"
|
|
568
|
+
return base
|
|
569
|
+
|
|
526
570
|
def _same_scope(self, prev_key: str, cur_key: str) -> bool:
|
|
527
571
|
# Consider same scope if they share the same base directory and one prefix startswith the other
|
|
528
572
|
try:
|
|
@@ -677,11 +721,20 @@ class _AtFilesCompleter(Completer):
|
|
|
677
721
|
|
|
678
722
|
Avoids running external tools; shows immediate directories first, then files.
|
|
679
723
|
Filters out .git, .venv, and node_modules to reduce noise.
|
|
724
|
+
Hidden files and paths containing "test" are deprioritized.
|
|
680
725
|
"""
|
|
681
726
|
excluded = {".git", ".venv", "node_modules"}
|
|
682
727
|
items: list[str] = []
|
|
683
728
|
try:
|
|
684
|
-
|
|
729
|
+
# Sort by: hidden files last, test paths last, directories first, then name
|
|
730
|
+
def sort_key(p: Path) -> tuple[int, int, int, str]:
|
|
731
|
+
name = p.name
|
|
732
|
+
is_hidden = name.startswith(".")
|
|
733
|
+
has_test = "test" in name.lower()
|
|
734
|
+
is_file = not p.is_dir()
|
|
735
|
+
return (1 if is_hidden else 0, 1 if has_test else 0, 1 if is_file else 0, name.lower())
|
|
736
|
+
|
|
737
|
+
for p in sorted(cwd.iterdir(), key=sort_key):
|
|
685
738
|
name = p.name
|
|
686
739
|
if name in excluded:
|
|
687
740
|
continue
|
{klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/ui/modes/repl/input_prompt_toolkit.py
RENAMED
|
@@ -11,6 +11,8 @@ from prompt_toolkit.completion import ThreadedCompleter
|
|
|
11
11
|
from prompt_toolkit.cursor_shapes import CursorShape
|
|
12
12
|
from prompt_toolkit.formatted_text import FormattedText
|
|
13
13
|
from prompt_toolkit.history import FileHistory
|
|
14
|
+
from prompt_toolkit.layout.containers import Container, FloatContainer
|
|
15
|
+
from prompt_toolkit.layout.menus import CompletionsMenu, MultiColumnCompletionsMenu
|
|
14
16
|
from prompt_toolkit.patch_stdout import patch_stdout
|
|
15
17
|
from prompt_toolkit.styles import Style
|
|
16
18
|
|
|
@@ -42,6 +44,25 @@ PLACEHOLDER_SYMBOL_STYLE_LIGHT_BG = "bg:#e6e6e6 fg:#7a7a7a"
|
|
|
42
44
|
PLACEHOLDER_SYMBOL_STYLE_UNKNOWN_BG = "bg:#2a2a2a fg:#8a8a8a"
|
|
43
45
|
|
|
44
46
|
|
|
47
|
+
def _left_align_completion_menus(container: Container) -> None:
|
|
48
|
+
"""Force completion menus to render at column 0.
|
|
49
|
+
|
|
50
|
+
prompt_toolkit's default completion menu floats are positioned relative to the
|
|
51
|
+
cursor (`xcursor=True`). That makes the popup indent as the caret moves.
|
|
52
|
+
We walk the layout tree and rewrite the Float positioning for completion menus
|
|
53
|
+
to keep them fixed at the left edge.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
if isinstance(container, FloatContainer):
|
|
57
|
+
for flt in container.floats:
|
|
58
|
+
if isinstance(flt.content, (CompletionsMenu, MultiColumnCompletionsMenu)):
|
|
59
|
+
flt.xcursor = False
|
|
60
|
+
flt.left = 0
|
|
61
|
+
|
|
62
|
+
for child in container.get_children():
|
|
63
|
+
_left_align_completion_menus(child)
|
|
64
|
+
|
|
65
|
+
|
|
45
66
|
class PromptToolkitInput(InputProviderABC):
|
|
46
67
|
def __init__(
|
|
47
68
|
self,
|
|
@@ -106,6 +127,10 @@ class PromptToolkitInput(InputProviderABC):
|
|
|
106
127
|
),
|
|
107
128
|
)
|
|
108
129
|
|
|
130
|
+
# Keep completion popups left-aligned instead of shifting with the caret.
|
|
131
|
+
with contextlib.suppress(Exception):
|
|
132
|
+
_left_align_completion_menus(self._session.app.layout.container)
|
|
133
|
+
|
|
109
134
|
def _select_first_completion_on_open(buf) -> None: # type: ignore[no-untyped-def]
|
|
110
135
|
"""Default to selecting the first completion without inserting it."""
|
|
111
136
|
|
|
@@ -9,11 +9,11 @@ from prompt_toolkit.application import Application
|
|
|
9
9
|
from prompt_toolkit.application.current import get_app
|
|
10
10
|
from prompt_toolkit.buffer import Buffer
|
|
11
11
|
from prompt_toolkit.filters import Always, Condition
|
|
12
|
-
from prompt_toolkit.key_binding import KeyBindings, merge_key_bindings
|
|
12
|
+
from prompt_toolkit.key_binding import KeyBindings, KeyPressEvent, merge_key_bindings
|
|
13
13
|
from prompt_toolkit.key_binding.defaults import load_key_bindings
|
|
14
14
|
from prompt_toolkit.keys import Keys
|
|
15
15
|
from prompt_toolkit.layout import ConditionalContainer, Float, FloatContainer, HSplit, Layout, VSplit, Window
|
|
16
|
-
from prompt_toolkit.layout.containers import ScrollOffsets
|
|
16
|
+
from prompt_toolkit.layout.containers import Container, ScrollOffsets
|
|
17
17
|
from prompt_toolkit.layout.controls import BufferControl, FormattedTextControl
|
|
18
18
|
from prompt_toolkit.styles import Style, merge_styles
|
|
19
19
|
|
|
@@ -118,23 +118,29 @@ def select_one[T](
|
|
|
118
118
|
|
|
119
119
|
@kb.add(Keys.ControlC, eager=True)
|
|
120
120
|
@kb.add(Keys.ControlQ, eager=True)
|
|
121
|
-
def _cancel(event):
|
|
121
|
+
def _cancel(event: KeyPressEvent) -> None:
|
|
122
122
|
event.app.exit(result=None)
|
|
123
123
|
|
|
124
|
+
_ = _cancel # registered via decorator
|
|
125
|
+
|
|
124
126
|
@kb.add(Keys.Down, eager=True)
|
|
125
|
-
def _down(event):
|
|
127
|
+
def _down(event: KeyPressEvent) -> None:
|
|
126
128
|
nonlocal pointed_at
|
|
127
129
|
pointed_at += 1
|
|
128
130
|
event.app.invalidate()
|
|
129
131
|
|
|
132
|
+
_ = _down # registered via decorator
|
|
133
|
+
|
|
130
134
|
@kb.add(Keys.Up, eager=True)
|
|
131
|
-
def _up(event):
|
|
135
|
+
def _up(event: KeyPressEvent) -> None:
|
|
132
136
|
nonlocal pointed_at
|
|
133
137
|
pointed_at -= 1
|
|
134
138
|
event.app.invalidate()
|
|
135
139
|
|
|
140
|
+
_ = _up # registered via decorator
|
|
141
|
+
|
|
136
142
|
@kb.add(Keys.Enter, eager=True)
|
|
137
|
-
def _enter(event):
|
|
143
|
+
def _enter(event: KeyPressEvent) -> None:
|
|
138
144
|
indices, _ = visible_indices()
|
|
139
145
|
if not indices:
|
|
140
146
|
event.app.exit(result=None)
|
|
@@ -142,8 +148,10 @@ def select_one[T](
|
|
|
142
148
|
idx = indices[pointed_at % len(indices)]
|
|
143
149
|
event.app.exit(result=items[idx].value)
|
|
144
150
|
|
|
151
|
+
_ = _enter # registered via decorator
|
|
152
|
+
|
|
145
153
|
@kb.add(Keys.Escape, eager=True)
|
|
146
|
-
def _esc(event):
|
|
154
|
+
def _esc(event: KeyPressEvent) -> None:
|
|
147
155
|
nonlocal pointed_at
|
|
148
156
|
if use_search_filter and search_buffer is not None and search_buffer.text:
|
|
149
157
|
search_buffer.reset(append_to_history=False)
|
|
@@ -152,6 +160,8 @@ def select_one[T](
|
|
|
152
160
|
return
|
|
153
161
|
event.app.exit(result=None)
|
|
154
162
|
|
|
163
|
+
_ = _esc # registered via decorator
|
|
164
|
+
|
|
155
165
|
if use_search_filter and search_buffer is not None:
|
|
156
166
|
search_buffer.on_text_changed += _on_search_changed
|
|
157
167
|
|
|
@@ -208,7 +218,7 @@ def select_one[T](
|
|
|
208
218
|
dont_extend_height=Always(),
|
|
209
219
|
always_hide_cursor=Always(),
|
|
210
220
|
),
|
|
211
|
-
filter=Condition(lambda: search_buffer
|
|
221
|
+
filter=Condition(lambda: search_buffer.text == ""),
|
|
212
222
|
)
|
|
213
223
|
search_input_window = input_window
|
|
214
224
|
search_input_container = FloatContainer(
|
|
@@ -216,7 +226,7 @@ def select_one[T](
|
|
|
216
226
|
floats=[Float(content=placeholder_window, top=0, left=0)],
|
|
217
227
|
)
|
|
218
228
|
|
|
219
|
-
def _rounded_frame(body) -> HSplit:
|
|
229
|
+
def _rounded_frame(body: Container) -> HSplit:
|
|
220
230
|
border = partial(Window, style="class:frame.border", height=1)
|
|
221
231
|
top = VSplit(
|
|
222
232
|
[
|
|
@@ -258,7 +268,7 @@ def select_one[T](
|
|
|
258
268
|
)
|
|
259
269
|
merged_style = merge_styles([base_style, style] if style is not None else [base_style])
|
|
260
270
|
|
|
261
|
-
root_children = [header_window, spacer_window, list_window]
|
|
271
|
+
root_children: list[Container] = [header_window, spacer_window, list_window]
|
|
262
272
|
if search_container is not None:
|
|
263
273
|
root_children.append(search_container)
|
|
264
274
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-explore.md
RENAMED
|
File without changes
|
{klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-oracle.md
RENAMED
|
File without changes
|
{klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/prompts/prompt-sub-agent-web.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{klaude_code-1.4.0 → klaude_code-1.4.2}/src/klaude_code/core/tool/todo/todo_write_tool_raw.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|