klaude-code 1.2.3__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.
Files changed (160) hide show
  1. klaude_code-1.2.3/PKG-INFO +178 -0
  2. klaude_code-1.2.3/README.md +161 -0
  3. klaude_code-1.2.3/pyproject.toml +77 -0
  4. klaude_code-1.2.3/src/klaude_code/__init__.py +0 -0
  5. klaude_code-1.2.3/src/klaude_code/cli/__init__.py +1 -0
  6. klaude_code-1.2.3/src/klaude_code/cli/main.py +298 -0
  7. klaude_code-1.2.3/src/klaude_code/cli/runtime.py +330 -0
  8. klaude_code-1.2.3/src/klaude_code/cli/session_cmd.py +80 -0
  9. klaude_code-1.2.3/src/klaude_code/command/__init__.py +41 -0
  10. klaude_code-1.2.3/src/klaude_code/command/clear_cmd.py +20 -0
  11. klaude_code-1.2.3/src/klaude_code/command/command_abc.py +92 -0
  12. klaude_code-1.2.3/src/klaude_code/command/diff_cmd.py +138 -0
  13. klaude_code-1.2.3/src/klaude_code/command/export_cmd.py +84 -0
  14. klaude_code-1.2.3/src/klaude_code/command/help_cmd.py +51 -0
  15. klaude_code-1.2.3/src/klaude_code/command/model_cmd.py +43 -0
  16. klaude_code-1.2.3/src/klaude_code/command/prompt-dev-docs-update.md +56 -0
  17. klaude_code-1.2.3/src/klaude_code/command/prompt-dev-docs.md +46 -0
  18. klaude_code-1.2.3/src/klaude_code/command/prompt-init.md +45 -0
  19. klaude_code-1.2.3/src/klaude_code/command/prompt_command.py +69 -0
  20. klaude_code-1.2.3/src/klaude_code/command/refresh_cmd.py +43 -0
  21. klaude_code-1.2.3/src/klaude_code/command/registry.py +110 -0
  22. klaude_code-1.2.3/src/klaude_code/command/terminal_setup_cmd.py +252 -0
  23. klaude_code-1.2.3/src/klaude_code/config/__init__.py +11 -0
  24. klaude_code-1.2.3/src/klaude_code/config/config.py +177 -0
  25. klaude_code-1.2.3/src/klaude_code/config/list_model.py +162 -0
  26. klaude_code-1.2.3/src/klaude_code/config/select_model.py +67 -0
  27. klaude_code-1.2.3/src/klaude_code/const/__init__.py +133 -0
  28. klaude_code-1.2.3/src/klaude_code/core/__init__.py +0 -0
  29. klaude_code-1.2.3/src/klaude_code/core/agent.py +165 -0
  30. klaude_code-1.2.3/src/klaude_code/core/executor.py +617 -0
  31. klaude_code-1.2.3/src/klaude_code/core/prompt.py +89 -0
  32. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-claude-code.md +98 -0
  33. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-codex.md +331 -0
  34. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-gemini.md +43 -0
  35. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-subagent-explore.md +27 -0
  36. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-subagent-oracle.md +23 -0
  37. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-subagent-webfetch.md +46 -0
  38. klaude_code-1.2.3/src/klaude_code/core/prompts/prompt-subagent.md +8 -0
  39. klaude_code-1.2.3/src/klaude_code/core/reminders.py +445 -0
  40. klaude_code-1.2.3/src/klaude_code/core/task.py +237 -0
  41. klaude_code-1.2.3/src/klaude_code/core/tool/__init__.py +75 -0
  42. klaude_code-1.2.3/src/klaude_code/core/tool/file/__init__.py +0 -0
  43. klaude_code-1.2.3/src/klaude_code/core/tool/file/apply_patch.py +492 -0
  44. klaude_code-1.2.3/src/klaude_code/core/tool/file/apply_patch_tool.md +1 -0
  45. klaude_code-1.2.3/src/klaude_code/core/tool/file/apply_patch_tool.py +204 -0
  46. klaude_code-1.2.3/src/klaude_code/core/tool/file/edit_tool.md +9 -0
  47. klaude_code-1.2.3/src/klaude_code/core/tool/file/edit_tool.py +274 -0
  48. klaude_code-1.2.3/src/klaude_code/core/tool/file/multi_edit_tool.md +42 -0
  49. klaude_code-1.2.3/src/klaude_code/core/tool/file/multi_edit_tool.py +199 -0
  50. klaude_code-1.2.3/src/klaude_code/core/tool/file/read_tool.md +14 -0
  51. klaude_code-1.2.3/src/klaude_code/core/tool/file/read_tool.py +326 -0
  52. klaude_code-1.2.3/src/klaude_code/core/tool/file/write_tool.md +8 -0
  53. klaude_code-1.2.3/src/klaude_code/core/tool/file/write_tool.py +146 -0
  54. klaude_code-1.2.3/src/klaude_code/core/tool/memory/__init__.py +0 -0
  55. klaude_code-1.2.3/src/klaude_code/core/tool/memory/memory_tool.md +16 -0
  56. klaude_code-1.2.3/src/klaude_code/core/tool/memory/memory_tool.py +462 -0
  57. klaude_code-1.2.3/src/klaude_code/core/tool/memory/skill_loader.py +245 -0
  58. klaude_code-1.2.3/src/klaude_code/core/tool/memory/skill_tool.md +24 -0
  59. klaude_code-1.2.3/src/klaude_code/core/tool/memory/skill_tool.py +97 -0
  60. klaude_code-1.2.3/src/klaude_code/core/tool/shell/__init__.py +0 -0
  61. klaude_code-1.2.3/src/klaude_code/core/tool/shell/bash_tool.md +43 -0
  62. klaude_code-1.2.3/src/klaude_code/core/tool/shell/bash_tool.py +125 -0
  63. klaude_code-1.2.3/src/klaude_code/core/tool/shell/command_safety.py +630 -0
  64. klaude_code-1.2.3/src/klaude_code/core/tool/sub_agent_tool.py +83 -0
  65. klaude_code-1.2.3/src/klaude_code/core/tool/todo/__init__.py +0 -0
  66. klaude_code-1.2.3/src/klaude_code/core/tool/todo/todo_write_tool.md +182 -0
  67. klaude_code-1.2.3/src/klaude_code/core/tool/todo/todo_write_tool.py +121 -0
  68. klaude_code-1.2.3/src/klaude_code/core/tool/todo/update_plan_tool.md +3 -0
  69. klaude_code-1.2.3/src/klaude_code/core/tool/todo/update_plan_tool.py +104 -0
  70. klaude_code-1.2.3/src/klaude_code/core/tool/tool_abc.py +25 -0
  71. klaude_code-1.2.3/src/klaude_code/core/tool/tool_context.py +106 -0
  72. klaude_code-1.2.3/src/klaude_code/core/tool/tool_registry.py +76 -0
  73. klaude_code-1.2.3/src/klaude_code/core/tool/tool_runner.py +252 -0
  74. klaude_code-1.2.3/src/klaude_code/core/tool/truncation.py +170 -0
  75. klaude_code-1.2.3/src/klaude_code/core/tool/web/__init__.py +0 -0
  76. klaude_code-1.2.3/src/klaude_code/core/tool/web/mermaid_tool.md +21 -0
  77. klaude_code-1.2.3/src/klaude_code/core/tool/web/mermaid_tool.py +76 -0
  78. klaude_code-1.2.3/src/klaude_code/core/tool/web/web_fetch_tool.md +8 -0
  79. klaude_code-1.2.3/src/klaude_code/core/tool/web/web_fetch_tool.py +159 -0
  80. klaude_code-1.2.3/src/klaude_code/core/turn.py +220 -0
  81. klaude_code-1.2.3/src/klaude_code/llm/__init__.py +21 -0
  82. klaude_code-1.2.3/src/klaude_code/llm/anthropic/__init__.py +3 -0
  83. klaude_code-1.2.3/src/klaude_code/llm/anthropic/client.py +221 -0
  84. klaude_code-1.2.3/src/klaude_code/llm/anthropic/input.py +197 -0
  85. klaude_code-1.2.3/src/klaude_code/llm/client.py +49 -0
  86. klaude_code-1.2.3/src/klaude_code/llm/input_common.py +239 -0
  87. klaude_code-1.2.3/src/klaude_code/llm/openai_compatible/__init__.py +3 -0
  88. klaude_code-1.2.3/src/klaude_code/llm/openai_compatible/client.py +211 -0
  89. klaude_code-1.2.3/src/klaude_code/llm/openai_compatible/input.py +108 -0
  90. klaude_code-1.2.3/src/klaude_code/llm/openai_compatible/tool_call_accumulator.py +80 -0
  91. klaude_code-1.2.3/src/klaude_code/llm/openrouter/__init__.py +3 -0
  92. klaude_code-1.2.3/src/klaude_code/llm/openrouter/client.py +200 -0
  93. klaude_code-1.2.3/src/klaude_code/llm/openrouter/input.py +159 -0
  94. klaude_code-1.2.3/src/klaude_code/llm/openrouter/reasoning_handler.py +209 -0
  95. klaude_code-1.2.3/src/klaude_code/llm/registry.py +22 -0
  96. klaude_code-1.2.3/src/klaude_code/llm/responses/__init__.py +3 -0
  97. klaude_code-1.2.3/src/klaude_code/llm/responses/client.py +216 -0
  98. klaude_code-1.2.3/src/klaude_code/llm/responses/input.py +167 -0
  99. klaude_code-1.2.3/src/klaude_code/llm/usage.py +109 -0
  100. klaude_code-1.2.3/src/klaude_code/protocol/__init__.py +4 -0
  101. klaude_code-1.2.3/src/klaude_code/protocol/commands.py +20 -0
  102. klaude_code-1.2.3/src/klaude_code/protocol/events.py +163 -0
  103. klaude_code-1.2.3/src/klaude_code/protocol/llm_param.py +147 -0
  104. klaude_code-1.2.3/src/klaude_code/protocol/model.py +280 -0
  105. klaude_code-1.2.3/src/klaude_code/protocol/op.py +89 -0
  106. klaude_code-1.2.3/src/klaude_code/protocol/op_handler.py +28 -0
  107. klaude_code-1.2.3/src/klaude_code/protocol/sub_agent.py +348 -0
  108. klaude_code-1.2.3/src/klaude_code/protocol/tools.py +15 -0
  109. klaude_code-1.2.3/src/klaude_code/session/__init__.py +4 -0
  110. klaude_code-1.2.3/src/klaude_code/session/export.py +626 -0
  111. klaude_code-1.2.3/src/klaude_code/session/selector.py +76 -0
  112. klaude_code-1.2.3/src/klaude_code/session/session.py +474 -0
  113. klaude_code-1.2.3/src/klaude_code/session/templates/export_session.html +1220 -0
  114. klaude_code-1.2.3/src/klaude_code/trace/__init__.py +3 -0
  115. klaude_code-1.2.3/src/klaude_code/trace/log.py +168 -0
  116. klaude_code-1.2.3/src/klaude_code/ui/__init__.py +91 -0
  117. klaude_code-1.2.3/src/klaude_code/ui/core/__init__.py +1 -0
  118. klaude_code-1.2.3/src/klaude_code/ui/core/display.py +103 -0
  119. klaude_code-1.2.3/src/klaude_code/ui/core/input.py +71 -0
  120. klaude_code-1.2.3/src/klaude_code/ui/core/stage_manager.py +55 -0
  121. klaude_code-1.2.3/src/klaude_code/ui/modes/__init__.py +1 -0
  122. klaude_code-1.2.3/src/klaude_code/ui/modes/debug/__init__.py +1 -0
  123. klaude_code-1.2.3/src/klaude_code/ui/modes/debug/display.py +36 -0
  124. klaude_code-1.2.3/src/klaude_code/ui/modes/exec/__init__.py +1 -0
  125. klaude_code-1.2.3/src/klaude_code/ui/modes/exec/display.py +63 -0
  126. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/__init__.py +51 -0
  127. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/clipboard.py +152 -0
  128. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/completers.py +429 -0
  129. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/display.py +60 -0
  130. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/event_handler.py +375 -0
  131. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/input_prompt_toolkit.py +198 -0
  132. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/key_bindings.py +170 -0
  133. klaude_code-1.2.3/src/klaude_code/ui/modes/repl/renderer.py +281 -0
  134. klaude_code-1.2.3/src/klaude_code/ui/renderers/__init__.py +0 -0
  135. klaude_code-1.2.3/src/klaude_code/ui/renderers/assistant.py +21 -0
  136. klaude_code-1.2.3/src/klaude_code/ui/renderers/common.py +8 -0
  137. klaude_code-1.2.3/src/klaude_code/ui/renderers/developer.py +103 -0
  138. klaude_code-1.2.3/src/klaude_code/ui/renderers/diffs.py +215 -0
  139. klaude_code-1.2.3/src/klaude_code/ui/renderers/errors.py +16 -0
  140. klaude_code-1.2.3/src/klaude_code/ui/renderers/metadata.py +190 -0
  141. klaude_code-1.2.3/src/klaude_code/ui/renderers/sub_agent.py +71 -0
  142. klaude_code-1.2.3/src/klaude_code/ui/renderers/thinking.py +39 -0
  143. klaude_code-1.2.3/src/klaude_code/ui/renderers/tools.py +551 -0
  144. klaude_code-1.2.3/src/klaude_code/ui/renderers/user_input.py +65 -0
  145. klaude_code-1.2.3/src/klaude_code/ui/rich/__init__.py +1 -0
  146. klaude_code-1.2.3/src/klaude_code/ui/rich/live.py +65 -0
  147. klaude_code-1.2.3/src/klaude_code/ui/rich/markdown.py +308 -0
  148. klaude_code-1.2.3/src/klaude_code/ui/rich/quote.py +34 -0
  149. klaude_code-1.2.3/src/klaude_code/ui/rich/searchable_text.py +71 -0
  150. klaude_code-1.2.3/src/klaude_code/ui/rich/status.py +240 -0
  151. klaude_code-1.2.3/src/klaude_code/ui/rich/theme.py +274 -0
  152. klaude_code-1.2.3/src/klaude_code/ui/terminal/__init__.py +1 -0
  153. klaude_code-1.2.3/src/klaude_code/ui/terminal/color.py +244 -0
  154. klaude_code-1.2.3/src/klaude_code/ui/terminal/control.py +147 -0
  155. klaude_code-1.2.3/src/klaude_code/ui/terminal/notifier.py +107 -0
  156. klaude_code-1.2.3/src/klaude_code/ui/terminal/progress_bar.py +87 -0
  157. klaude_code-1.2.3/src/klaude_code/ui/utils/__init__.py +1 -0
  158. klaude_code-1.2.3/src/klaude_code/ui/utils/common.py +108 -0
  159. klaude_code-1.2.3/src/klaude_code/ui/utils/debouncer.py +42 -0
  160. klaude_code-1.2.3/src/klaude_code/version.py +163 -0
@@ -0,0 +1,178 @@
1
+ Metadata-Version: 2.3
2
+ Name: klaude-code
3
+ Version: 1.2.3
4
+ Summary: Add your description here
5
+ Requires-Dist: anthropic>=0.66.0
6
+ Requires-Dist: openai>=1.102.0
7
+ Requires-Dist: pillow>=12.0.0
8
+ Requires-Dist: prompt-toolkit>=3.0.52
9
+ Requires-Dist: pydantic>=2.11.7
10
+ Requires-Dist: pyyaml>=6.0.2
11
+ Requires-Dist: questionary>=2.1.1
12
+ Requires-Dist: rich>=14.1.0
13
+ Requires-Dist: trafilatura>=2.0.0
14
+ Requires-Dist: typer>=0.17.3
15
+ Requires-Python: >=3.13
16
+ Description-Content-Type: text/markdown
17
+
18
+ # Minimal Code Agent CLI (Klaude Code)
19
+
20
+ An minimal and opinionated code agent with multi-model support.
21
+
22
+ ## Key Features
23
+ - **Adaptive Tooling**: Model-aware toolsets (Claude Code tools for Sonnet, Codex `apply_patch` for GPT-5.1/Codex).
24
+ - **Multi-Provider Support**: Compatible with `anthropic-messages-api`,`openai-responses-api`, and `openai-compatible-api`(`openrouter-api`), featuring interleaved thinking, OpenRouter's provider sorting etc.
25
+ - **Skill System**: Extensible support for loading Claude Skills.
26
+ - **Session Management**: Robust context preservation with resumable sessions (`--continue`).
27
+ - **Simple TUI**: Clean interface offering full visibility into model responses, reasoning and actions.
28
+ - **Core Utilities**: Slash commands, sub-agents, image pasting, terminal notifications, file mentioning, and auto-theming.
29
+
30
+ ## Installation
31
+
32
+ ```bash
33
+ uv tool install klaude-code
34
+ ```
35
+
36
+ To update:
37
+
38
+ ```bash
39
+ uv tool upgrade klaude-code
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ### Interactive Mode
45
+
46
+ ```bash
47
+ klaude [--model <name>] [--select-model]
48
+ ```
49
+
50
+ **Options:**
51
+ - `--version`/`-V`: Show version and exit.
52
+ - `--model`/`-m`: Select a model by logical name from config.
53
+ - `--select-model`/`-s`: Interactively choose a model at startup.
54
+ - `--continue`/`-c`: Resume the most recent session.
55
+ - `--resume`/`-r`: Select a session to resume for this project.
56
+ - `--vanilla`: Minimal mode with only basic tools (Bash, Read, Edit) and no system prompts.
57
+
58
+ **Debug Options:**
59
+ - `--debug`/`-d`: Enable debug mode with verbose logging and LLM trace.
60
+ - `--debug-filter`: Filter debug output by type (comma-separated).
61
+
62
+
63
+ ### Configuration
64
+
65
+ An example config will be created in `~/.klaude/config.yaml` when first run.
66
+
67
+ Open the configuration file in editor:
68
+
69
+ ```bash
70
+ klaude config
71
+ ```
72
+
73
+ An minimal example config yaml using OpenRouter's API Key:
74
+
75
+ ```yaml
76
+ provider_list:
77
+ - provider_name: openrouter-work
78
+ protocol: openrouter # support <responses|openrouter|anthropic|openai>
79
+ api_key: <your-openrouter-api-key>
80
+ model_list:
81
+ - model_name: gpt-5.1-codex
82
+ provider: openrouter
83
+ model_params:
84
+ model: openai/gpt-5.1-codex
85
+ context_limit: 368000
86
+ thinking:
87
+ reasoning_effort: medium
88
+ - model_name: gpt-5.1-high
89
+ provider: openrouter
90
+ model_params:
91
+ model: openai/gpt-5.1
92
+ context_limit: 368000
93
+ thinking:
94
+ reasoning_effort: high
95
+ - model_name: sonnet
96
+ provider: openrouter
97
+ model_params:
98
+ model: anthropic/claude-4.5-sonnet
99
+ context_limit: 168000
100
+ provider_routing:
101
+ sort: throughput
102
+ - model_name: haiku
103
+ provider: openrouter
104
+ model_params:
105
+ model: anthropic/claude-haiku-4.5
106
+ context_limit: 168000
107
+ provider_routing:
108
+ sort: throughput
109
+ main_model: gpt-5.1-codex
110
+ subagent_models:
111
+ oracle: gpt-5.1-high
112
+ explore: haiku
113
+ task: sonnet
114
+ ```
115
+
116
+ List configured providers and models:
117
+
118
+ ```bash
119
+ klaude list
120
+ ```
121
+
122
+ ### Session Management
123
+
124
+ Clean up sessions with few messages:
125
+
126
+ ```bash
127
+ # Remove sessions with fewer than 5 messages (default)
128
+ klaude session clean
129
+
130
+ # Remove sessions with fewer than 10 messages
131
+ klaude session clean --min 10
132
+
133
+ # Remove all sessions for the current project
134
+ klaude session clean-all
135
+ ```
136
+
137
+ ### Slash Commands
138
+
139
+ Inside the interactive session (`klaude`), use these commands to streamline your workflow:
140
+
141
+ - `/dev-doc [feature]` - Generate a comprehensive execution plan for a feature.
142
+ - `/export` - Export last assistant message to a temp Markdown file.
143
+ - `/init` - Bootstrap a new project structure or module.
144
+ - `/model` - Switch the active LLM during the session.
145
+ - `/clear` - Clear the current conversation context.
146
+ - `/diff` - Show local git diff changes.
147
+ - `/help` - List all available commands.
148
+
149
+
150
+ ### Input Shortcuts
151
+
152
+ | Key | Action |
153
+ | -------------------- | ------------------------------------------- |
154
+ | `Enter` | Submit input |
155
+ | `Shift+Enter` | Insert newline (requires `/terminal-setup`) |
156
+ | `Ctrl+J` | Insert newline |
157
+ | `Ctrl+V` | Paste image from clipboard |
158
+ | `Left/Right` | Move cursor (wraps across lines) |
159
+ | `Backspace` | Delete character or selected text |
160
+ | `c` (with selection) | Copy selected text to clipboard |
161
+
162
+ Mouse support is automatically enabled when input spans multiple lines.
163
+
164
+
165
+ ### Non-Interactive Headless Mode (exec)
166
+
167
+ Execute a single command without starting the interactive REPL:
168
+
169
+ ```bash
170
+ # Direct input
171
+ klaude exec "what is 2+2?"
172
+
173
+ # Pipe input
174
+ echo "hello world" | klaude exec
175
+
176
+ # With model selection
177
+ echo "generate quicksort in python" | klaude exec --model gpt-5.1
178
+ ```
@@ -0,0 +1,161 @@
1
+ # Minimal Code Agent CLI (Klaude Code)
2
+
3
+ An minimal and opinionated code agent with multi-model support.
4
+
5
+ ## Key Features
6
+ - **Adaptive Tooling**: Model-aware toolsets (Claude Code tools for Sonnet, Codex `apply_patch` for GPT-5.1/Codex).
7
+ - **Multi-Provider Support**: Compatible with `anthropic-messages-api`,`openai-responses-api`, and `openai-compatible-api`(`openrouter-api`), featuring interleaved thinking, OpenRouter's provider sorting etc.
8
+ - **Skill System**: Extensible support for loading Claude Skills.
9
+ - **Session Management**: Robust context preservation with resumable sessions (`--continue`).
10
+ - **Simple TUI**: Clean interface offering full visibility into model responses, reasoning and actions.
11
+ - **Core Utilities**: Slash commands, sub-agents, image pasting, terminal notifications, file mentioning, and auto-theming.
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ uv tool install klaude-code
17
+ ```
18
+
19
+ To update:
20
+
21
+ ```bash
22
+ uv tool upgrade klaude-code
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ### Interactive Mode
28
+
29
+ ```bash
30
+ klaude [--model <name>] [--select-model]
31
+ ```
32
+
33
+ **Options:**
34
+ - `--version`/`-V`: Show version and exit.
35
+ - `--model`/`-m`: Select a model by logical name from config.
36
+ - `--select-model`/`-s`: Interactively choose a model at startup.
37
+ - `--continue`/`-c`: Resume the most recent session.
38
+ - `--resume`/`-r`: Select a session to resume for this project.
39
+ - `--vanilla`: Minimal mode with only basic tools (Bash, Read, Edit) and no system prompts.
40
+
41
+ **Debug Options:**
42
+ - `--debug`/`-d`: Enable debug mode with verbose logging and LLM trace.
43
+ - `--debug-filter`: Filter debug output by type (comma-separated).
44
+
45
+
46
+ ### Configuration
47
+
48
+ An example config will be created in `~/.klaude/config.yaml` when first run.
49
+
50
+ Open the configuration file in editor:
51
+
52
+ ```bash
53
+ klaude config
54
+ ```
55
+
56
+ An minimal example config yaml using OpenRouter's API Key:
57
+
58
+ ```yaml
59
+ provider_list:
60
+ - provider_name: openrouter-work
61
+ protocol: openrouter # support <responses|openrouter|anthropic|openai>
62
+ api_key: <your-openrouter-api-key>
63
+ model_list:
64
+ - model_name: gpt-5.1-codex
65
+ provider: openrouter
66
+ model_params:
67
+ model: openai/gpt-5.1-codex
68
+ context_limit: 368000
69
+ thinking:
70
+ reasoning_effort: medium
71
+ - model_name: gpt-5.1-high
72
+ provider: openrouter
73
+ model_params:
74
+ model: openai/gpt-5.1
75
+ context_limit: 368000
76
+ thinking:
77
+ reasoning_effort: high
78
+ - model_name: sonnet
79
+ provider: openrouter
80
+ model_params:
81
+ model: anthropic/claude-4.5-sonnet
82
+ context_limit: 168000
83
+ provider_routing:
84
+ sort: throughput
85
+ - model_name: haiku
86
+ provider: openrouter
87
+ model_params:
88
+ model: anthropic/claude-haiku-4.5
89
+ context_limit: 168000
90
+ provider_routing:
91
+ sort: throughput
92
+ main_model: gpt-5.1-codex
93
+ subagent_models:
94
+ oracle: gpt-5.1-high
95
+ explore: haiku
96
+ task: sonnet
97
+ ```
98
+
99
+ List configured providers and models:
100
+
101
+ ```bash
102
+ klaude list
103
+ ```
104
+
105
+ ### Session Management
106
+
107
+ Clean up sessions with few messages:
108
+
109
+ ```bash
110
+ # Remove sessions with fewer than 5 messages (default)
111
+ klaude session clean
112
+
113
+ # Remove sessions with fewer than 10 messages
114
+ klaude session clean --min 10
115
+
116
+ # Remove all sessions for the current project
117
+ klaude session clean-all
118
+ ```
119
+
120
+ ### Slash Commands
121
+
122
+ Inside the interactive session (`klaude`), use these commands to streamline your workflow:
123
+
124
+ - `/dev-doc [feature]` - Generate a comprehensive execution plan for a feature.
125
+ - `/export` - Export last assistant message to a temp Markdown file.
126
+ - `/init` - Bootstrap a new project structure or module.
127
+ - `/model` - Switch the active LLM during the session.
128
+ - `/clear` - Clear the current conversation context.
129
+ - `/diff` - Show local git diff changes.
130
+ - `/help` - List all available commands.
131
+
132
+
133
+ ### Input Shortcuts
134
+
135
+ | Key | Action |
136
+ | -------------------- | ------------------------------------------- |
137
+ | `Enter` | Submit input |
138
+ | `Shift+Enter` | Insert newline (requires `/terminal-setup`) |
139
+ | `Ctrl+J` | Insert newline |
140
+ | `Ctrl+V` | Paste image from clipboard |
141
+ | `Left/Right` | Move cursor (wraps across lines) |
142
+ | `Backspace` | Delete character or selected text |
143
+ | `c` (with selection) | Copy selected text to clipboard |
144
+
145
+ Mouse support is automatically enabled when input spans multiple lines.
146
+
147
+
148
+ ### Non-Interactive Headless Mode (exec)
149
+
150
+ Execute a single command without starting the interactive REPL:
151
+
152
+ ```bash
153
+ # Direct input
154
+ klaude exec "what is 2+2?"
155
+
156
+ # Pipe input
157
+ echo "hello world" | klaude exec
158
+
159
+ # With model selection
160
+ echo "generate quicksort in python" | klaude exec --model gpt-5.1
161
+ ```
@@ -0,0 +1,77 @@
1
+ [build-system]
2
+ requires = ["uv_build>=0.8.5,<0.9.0"]
3
+ build-backend = "uv_build"
4
+
5
+ [project]
6
+ name = "klaude-code"
7
+ version = "1.2.3"
8
+ description = "Add your description here"
9
+ readme = "README.md"
10
+ requires-python = ">=3.13"
11
+ dependencies = [
12
+ "anthropic>=0.66.0",
13
+ "openai>=1.102.0",
14
+ "pillow>=12.0.0",
15
+ "prompt-toolkit>=3.0.52",
16
+ "pydantic>=2.11.7",
17
+ "pyyaml>=6.0.2",
18
+ "questionary>=2.1.1",
19
+ "rich>=14.1.0",
20
+ "trafilatura>=2.0.0",
21
+ "typer>=0.17.3",
22
+ ]
23
+
24
+ [project.scripts]
25
+ klaude = "klaude_code.cli.main:app"
26
+
27
+ [tool.uv.build-backend]
28
+ module-name = "klaude_code"
29
+
30
+ [dependency-groups]
31
+ dev = [
32
+ "import-linter>=2.6",
33
+ "isort>=6.0.1",
34
+ "pyright>=1.1.407",
35
+ "pytest>=8.4.1",
36
+ ]
37
+
38
+
39
+
40
+ [tool.pytest.ini_options]
41
+ markers = [
42
+ "network: marks tests as requiring network access (deselect with '-m \"not network\"')",
43
+ ]
44
+
45
+ [tool.ruff]
46
+ line-length = 120
47
+
48
+ [tool.pyright]
49
+ typeCheckingMode = "strict"
50
+ pythonVersion = "3.13"
51
+ venvPath = "."
52
+ venv = ".venv"
53
+ extraPaths = ["src"]
54
+ reportMissingImports = "warning"
55
+ reportMissingModuleSource = "warning"
56
+ exclude = [".venv/"]
57
+
58
+ [[tool.pyright.executionEnvironments]]
59
+ root = "."
60
+ extraPaths = ["src"]
61
+
62
+ [tool.importlinter]
63
+ root_packages = ["klaude_code"]
64
+ include_external_packages = false
65
+
66
+ [[tool.importlinter.contracts]]
67
+ name = "Layered architecture"
68
+ type = "layers"
69
+ layers = [
70
+ "klaude_code.cli",
71
+ "klaude_code.core",
72
+ "klaude_code.session",
73
+ "klaude_code.config",
74
+ "klaude_code.llm",
75
+ "klaude_code.protocol",
76
+ "klaude_code.const",
77
+ ]
File without changes
@@ -0,0 +1 @@
1
+ # Package init for CLI; intentionally empty.