klaude-code 1.2.26__py3-none-any.whl → 1.2.28__py3-none-any.whl

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 (52) hide show
  1. klaude_code/cli/config_cmd.py +1 -5
  2. klaude_code/cli/debug.py +9 -1
  3. klaude_code/cli/list_model.py +170 -129
  4. klaude_code/cli/main.py +76 -19
  5. klaude_code/cli/runtime.py +15 -11
  6. klaude_code/cli/self_update.py +2 -1
  7. klaude_code/cli/session_cmd.py +1 -1
  8. klaude_code/command/__init__.py +3 -0
  9. klaude_code/command/export_online_cmd.py +15 -12
  10. klaude_code/command/fork_session_cmd.py +42 -0
  11. klaude_code/config/__init__.py +3 -1
  12. klaude_code/config/assets/__init__.py +1 -0
  13. klaude_code/config/assets/builtin_config.yaml +233 -0
  14. klaude_code/config/builtin_config.py +37 -0
  15. klaude_code/config/config.py +332 -112
  16. klaude_code/config/select_model.py +46 -8
  17. klaude_code/core/executor.py +6 -3
  18. klaude_code/core/manager/llm_clients_builder.py +4 -1
  19. klaude_code/core/reminders.py +52 -16
  20. klaude_code/core/tool/file/edit_tool.py +4 -4
  21. klaude_code/core/tool/file/write_tool.py +4 -4
  22. klaude_code/core/tool/shell/bash_tool.py +2 -2
  23. klaude_code/core/tool/web/mermaid_tool.md +17 -0
  24. klaude_code/core/tool/web/mermaid_tool.py +2 -2
  25. klaude_code/llm/openai_compatible/stream.py +2 -1
  26. klaude_code/llm/openai_compatible/tool_call_accumulator.py +17 -1
  27. klaude_code/protocol/commands.py +1 -0
  28. klaude_code/protocol/model.py +1 -0
  29. klaude_code/session/export.py +52 -7
  30. klaude_code/session/selector.py +2 -2
  31. klaude_code/session/session.py +26 -4
  32. klaude_code/trace/log.py +7 -1
  33. klaude_code/ui/modes/repl/__init__.py +3 -44
  34. klaude_code/ui/modes/repl/completers.py +39 -7
  35. klaude_code/ui/modes/repl/event_handler.py +8 -6
  36. klaude_code/ui/modes/repl/input_prompt_toolkit.py +33 -66
  37. klaude_code/ui/modes/repl/key_bindings.py +4 -4
  38. klaude_code/ui/modes/repl/renderer.py +1 -6
  39. klaude_code/ui/renderers/common.py +11 -4
  40. klaude_code/ui/renderers/developer.py +17 -0
  41. klaude_code/ui/renderers/diffs.py +1 -1
  42. klaude_code/ui/renderers/errors.py +10 -5
  43. klaude_code/ui/renderers/metadata.py +2 -2
  44. klaude_code/ui/renderers/tools.py +8 -4
  45. klaude_code/ui/rich/markdown.py +5 -5
  46. klaude_code/ui/rich/theme.py +7 -3
  47. klaude_code/ui/terminal/color.py +1 -1
  48. klaude_code/ui/terminal/control.py +4 -4
  49. {klaude_code-1.2.26.dist-info → klaude_code-1.2.28.dist-info}/METADATA +121 -127
  50. {klaude_code-1.2.26.dist-info → klaude_code-1.2.28.dist-info}/RECORD +52 -48
  51. {klaude_code-1.2.26.dist-info → klaude_code-1.2.28.dist-info}/entry_points.txt +1 -0
  52. {klaude_code-1.2.26.dist-info → klaude_code-1.2.28.dist-info}/WHEEL +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.2.26
4
- Summary: Add your description here
3
+ Version: 1.2.28
4
+ Summary: Minimal code agent CLI
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: chardet>=5.2.0
7
7
  Requires-Dist: ddgs>=9.9.3
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
21
21
 
22
22
  # Klaude Code
23
23
 
24
- Multi-model code agent CLI.
24
+ Minimal code agent CLI.
25
25
 
26
26
  ## Features
27
27
  - **Multi-provider**: Anthropic, OpenAI Responses API, OpenRouter
@@ -92,147 +92,141 @@ klaude [--model <name>] [--select-model]
92
92
 
93
93
  ### Configuration
94
94
 
95
- An example config will be created in `~/.klaude/klaude-config.yaml` when first run.
95
+ #### Quick Start (Zero Config)
96
96
 
97
- Open the configuration file in editor:
97
+ Klaude comes with built-in provider configurations. Just set an API key environment variable and start using it:
98
+
99
+ ```bash
100
+ # Pick one (or more) of these:
101
+ export ANTHROPIC_API_KEY=sk-ant-xxx # Claude models
102
+ export OPENAI_API_KEY=sk-xxx # GPT models
103
+ export OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (multi-provider)
104
+ export DEEPSEEK_API_KEY=sk-xxx # DeepSeek models
105
+ export MOONSHOT_API_KEY=sk-xxx # Moonshot/Kimi models
106
+
107
+ # Then just run:
108
+ klaude
109
+ ```
110
+
111
+ On first run, you'll be prompted to select a model. Your choice is saved as `main_model`.
112
+
113
+ #### Built-in Providers
114
+
115
+ | Provider | Env Variable | Models |
116
+ |-------------|-----------------------|-------------------------------------------------------------------------------|
117
+ | anthropic | `ANTHROPIC_API_KEY` | sonnet, opus |
118
+ | openai | `OPENAI_API_KEY` | gpt-5.2 |
119
+ | openrouter | `OPENROUTER_API_KEY` | gpt-5.2, gpt-5.2-fast, gpt-5.1-codex-max, sonnet, opus, haiku, kimi, gemini-* |
120
+ | deepseek | `DEEPSEEK_API_KEY` | deepseek |
121
+ | moonshot | `MOONSHOT_API_KEY` | kimi@moonshot |
122
+ | codex | N/A (OAuth) | gpt-5.2-codex |
123
+
124
+ List all configured providers and models:
125
+
126
+ ```bash
127
+ klaude list
128
+ ```
129
+
130
+ Models from providers without a valid API key are shown as dimmed/unavailable.
131
+
132
+ #### Custom Configuration
133
+
134
+ User config file: `~/.klaude/klaude-config.yaml`
135
+
136
+ Open in editor:
98
137
 
99
138
  ```bash
100
139
  klaude config
101
140
  ```
102
141
 
103
- An example config yaml:
142
+ ##### Adding Models to Built-in Providers
143
+
144
+ You can add custom models to existing providers without redefining the entire provider:
104
145
 
105
146
  ```yaml
147
+ # Just specify provider_name and your new models - no need for protocol/api_key
106
148
  provider_list:
107
- - provider_name: openrouter
108
- protocol: openrouter # support <responses|openrouter|anthropic|openai>
109
- api_key: <your-openrouter-api-key>
110
-
111
- - provider_name: openai-responses
112
- protocol: responses
113
- api_key: <your-openai-api-key>
114
-
115
- - provider_name: anthropic
116
- protocol: anthropic
117
- api_key: <your-anthropic-api-key>
118
-
119
- - provider_name: moonshot
120
- protocol: anthropic
121
- base_url: https://api.moonshot.cn/anthropic
122
- api_key: <your-api-key>
123
-
124
- - provider_name: deepseek
125
- protocol: anthropic
126
- base_url: https://api.deepseek.com/anthropic
127
- api_key: <your-api-key>
128
-
129
- model_list:
130
-
131
- - model_name: deepseek
132
- provider: deepseek
133
- model_params:
134
- model: deepseek-reasoner
135
- context_limit: 128000
136
- thinking:
137
- type: enabled
138
- budget_tokens: 8192
139
- cost:
140
- currency: CNY
141
- input: 2
142
- output: 3
143
- cache_read: 0.2
144
-
145
- - model_name: codex-max
146
- provider: openai-responses
147
- model_params:
148
- model: gpt-5.1-codex-max
149
- thinking:
150
- reasoning_effort: medium
151
- context_limit: 400000
152
- max_tokens: 128000
153
- cost:
154
- input: 1.25
155
- output: 10
156
- cache_read: 0.13
157
-
158
- - model_name: gpt-5.1
159
- provider: openrouter
160
- model_params:
161
- model: openai/gpt-5.1
162
- context_limit: 400000
163
- max_tokens: 128000
164
- verbosity: high
165
- thinking:
166
- reasoning_effort: high
167
- cost:
168
- input: 1.25
169
- output: 10
170
- cache_read: 0.13
171
-
172
- - model_name: kimi@moonshot
173
- provider: moonshot
174
- model_params:
175
- model: kimi-k2-thinking
176
- context_limit: 262144
177
- thinking:
178
- type: enabled
179
- budget_tokens: 8192
180
- cost:
181
- currency: CNY
182
- input: 4
183
- output: 16
184
- cache_read: 1
185
-
186
- - model_name: opus
187
- provider: openrouter
188
- model_params:
189
- model: anthropic/claude-4.5-opus
190
- context_limit: 200000
191
- provider_routing:
192
- only: [ google-vertex ]
193
- verbosity: high
194
- thinking:
195
- type: enabled
196
- budget_tokens: 31999
197
- cost:
198
- input: 5
199
- output: 25
200
- cache_read: 0.5
201
- cache_write: 6.25
202
-
203
- - model_name: gemini
204
- provider: openrouter
205
- model_params:
206
- model: google/gemini-3-pro-preview
207
- context_limit: 1048576
208
- thinking:
209
- reasoning_effort: medium
210
- cost:
211
- input: 2
212
- output: 12
213
- cache_read: 0.2
214
-
215
- - model_name: haiku
216
- provider: anthropic
217
- model_params:
218
- model: claude-haiku-4-5-20251001
219
- context_limit: 200000
220
- cost:
221
- input: 1
222
- output: 5
223
- cache_read: 0.1
224
- cache_write: 1.25
149
+ - provider_name: openrouter
150
+ model_list:
151
+ - model_name: my-custom-model
152
+ model_params:
153
+ model: some-provider/some-model-id
154
+ context_limit: 200000
155
+ ```
156
+
157
+ Your models are merged with built-in models. To override a built-in model, use the same `model_name`.
225
158
 
159
+ ##### Overriding Provider Settings
160
+
161
+ Override provider-level settings (like api_key) while keeping built-in models:
162
+
163
+ ```yaml
164
+ provider_list:
165
+ - provider_name: anthropic
166
+ api_key: sk-my-custom-key # Override the default ${ANTHROPIC_API_KEY}
167
+ # Built-in models (sonnet, opus) are still available
168
+ ```
169
+
170
+ ##### Adding New Providers
171
+
172
+ For providers not in the built-in list, you must specify `protocol`:
173
+
174
+ ```yaml
175
+ provider_list:
176
+ - provider_name: my-azure-openai
177
+ protocol: openai
178
+ api_key: ${AZURE_OPENAI_KEY}
179
+ base_url: https://my-instance.openai.azure.com/
180
+ is_azure: true
181
+ azure_api_version: "2024-02-15-preview"
182
+ model_list:
183
+ - model_name: gpt-4-azure
184
+ model_params:
185
+ model: gpt-4
186
+ context_limit: 128000
187
+ ```
188
+
189
+ ##### Full Example
190
+
191
+ ```yaml
192
+ # User configuration - merged with built-in config
226
193
  main_model: opus
227
194
 
228
195
  sub_agent_models:
229
- oracle: gpt-5.1
230
- explore: haiku
196
+ oracle: gpt-4.1
197
+ explore: sonnet
231
198
  task: opus
232
- webagent: haiku
199
+ webagent: sonnet
233
200
 
201
+ provider_list:
202
+ # Add models to built-in openrouter
203
+ - provider_name: openrouter
204
+ model_list:
205
+ - model_name: qwen-coder
206
+ model_params:
207
+ model: qwen/qwen-2.5-coder-32b-instruct
208
+ context_limit: 131072
209
+
210
+ # Add a completely new provider
211
+ - provider_name: local-ollama
212
+ protocol: openai
213
+ base_url: http://localhost:11434/v1
214
+ api_key: ollama
215
+ model_list:
216
+ - model_name: local-llama
217
+ model_params:
218
+ model: llama3.2
219
+ context_limit: 8192
234
220
  ```
235
221
 
222
+ ##### Supported Protocols
223
+
224
+ - `anthropic` - Anthropic Claude API
225
+ - `openai` - OpenAI-compatible API
226
+ - `responses` - OpenAI Responses API (for o-series, GPT-5, Codex)
227
+ - `openrouter` - OpenRouter API
228
+ - `codex` - OpenAI Codex CLI (OAuth-based)
229
+
236
230
  List configured providers and models:
237
231
 
238
232
  ```bash
@@ -7,19 +7,20 @@ klaude_code/auth/codex/oauth.py,sha256=4hAGZ2Dv87NC3loEws7U5yNyPyIrryGm5YXY2FkHe
7
7
  klaude_code/auth/codex/token_manager.py,sha256=F4xH5PhE9cksqTiWsU_YAboNe284VgUFWF2VY1sZV9U,2720
8
8
  klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
9
9
  klaude_code/cli/auth_cmd.py,sha256=UWMHjn9xZp2o8OZc-x8y9MnkZgRWOkFXk05iKJYcySE,2561
10
- klaude_code/cli/config_cmd.py,sha256=SBFmBnHvkf5IJtpsDDuHsHWQCmYd2i4PtIMBOKpxmOM,2894
11
- klaude_code/cli/debug.py,sha256=vizBXc3648vBZQonreMqvv_b5UdRgcQoOIT-iEIx1G4,2318
12
- klaude_code/cli/list_model.py,sha256=9YOxhWE0J59NaY-SrgPA9_jA1A8rlOGwWmzK0TRuos4,8011
13
- klaude_code/cli/main.py,sha256=pyU2W2X3lg7Z-4adiOzA9_2l-5QSejYm68HrhAiu470,10469
14
- klaude_code/cli/runtime.py,sha256=XqF1d53UnIgnmnlqKGR3YBdBNlBFuoyc7BvUfr22CGw,14824
15
- klaude_code/cli/self_update.py,sha256=fekLNRm3ivZ-Xbc-79rcgDBXbq-Zb-BkSQOGMRLeTAs,7986
16
- klaude_code/cli/session_cmd.py,sha256=jAopkqq_DGgoDIcGxT-RSzn9R4yqBC8NCaNgK1GLqnQ,2634
17
- klaude_code/command/__init__.py,sha256=B39fxrrvxb51B6qeQJoh3lXWCsPoI81BJvdSLb-8CYg,3117
10
+ klaude_code/cli/config_cmd.py,sha256=-DILuXlGbCP2WBXBVxOTVEjCej7z9CWQYO1CBN4dCJA,2783
11
+ klaude_code/cli/debug.py,sha256=cPQ7cgATcJTyBIboleW_Q4Pa_t-tGG6x-Hj3woeeuHE,2669
12
+ klaude_code/cli/list_model.py,sha256=5_LJoNgVLRUQaQyT5jNr-WcNEFAaFohFRYk5fE85nRg,9248
13
+ klaude_code/cli/main.py,sha256=td_nMg0AyFDdyh3TLi7WCpi9DyAehduI4jZSOAaCNXI,12857
14
+ klaude_code/cli/runtime.py,sha256=EGlfr839OWAJjLSfYHnTxwG7W-IxkmktgDOj8npKkFo,15219
15
+ klaude_code/cli/self_update.py,sha256=iGuj0i869Zi0M70W52-VVLxZp90ISr30fQpZkHGMK2o,8059
16
+ klaude_code/cli/session_cmd.py,sha256=mVL2fDi76nmpK2bWYrU7Wh6jCi90A9YK8hv3UNo4GI0,2661
17
+ klaude_code/command/__init__.py,sha256=8igz3QYo0lST-OSRQ4jwUvq1BRbj60OtRuNgL9ZrAqA,3255
18
18
  klaude_code/command/clear_cmd.py,sha256=DzCg6vQ5Eve7Rx4HdL-uta1pBDRQinOW6nwx5YlOA24,658
19
19
  klaude_code/command/command_abc.py,sha256=wUGE8NkCWWKy8lZXcW-UcQyMGnVikxTrCIycLlPU5dY,2350
20
20
  klaude_code/command/debug_cmd.py,sha256=9sBIAwHz28QoI-tHsU3ksQlDObF1ilIbtAAEAVMR0v0,2734
21
21
  klaude_code/command/export_cmd.py,sha256=Cs7YXWtos-ZfN9OEppIl8Xrb017kDG7R6hGiilqt2bM,1623
22
- klaude_code/command/export_online_cmd.py,sha256=kOVmFEW7gEEFvaKnXL8suNenktLyTW-13bT64NBGwUQ,5861
22
+ klaude_code/command/export_online_cmd.py,sha256=RYYLnkLtg6edsgysmhsfTw16ncFRIT6PqeTdWhWXLHE,6094
23
+ klaude_code/command/fork_session_cmd.py,sha256=t2viSAswSDnRjVdA3r40jN9uHHN4SNBe16fF7z2oeAo,1586
23
24
  klaude_code/command/help_cmd.py,sha256=yQJnVtj6sgXQdGsi4u9aS7EcjJLSrXccUA-v_bqmsRw,1633
24
25
  klaude_code/command/model_cmd.py,sha256=GmDln1N6u7eWLK15tm_lcdDJBY8qI0ih48h6AhijafI,1665
25
26
  klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
@@ -31,16 +32,19 @@ klaude_code/command/release_notes_cmd.py,sha256=FIrBRfKTlXEp8mBh15buNjgOrl_GMX7F
31
32
  klaude_code/command/status_cmd.py,sha256=sYmzfex7RVhgrBCjRyD8fsZ6ioZvjVzQ_-FvmcsA7fo,5365
32
33
  klaude_code/command/terminal_setup_cmd.py,sha256=SivM1gX_anGY_8DCQNFZ5VblFqt4sVgCMEWPRlo6K5w,10911
33
34
  klaude_code/command/thinking_cmd.py,sha256=8EdSN6huXihM5NHJEryZLA7CkgRT7mZgMVTJsT1-x8U,9108
34
- klaude_code/config/__init__.py,sha256=Qrqvi8nizkj6N77h2vDj0r4rbgCiqxvz2HLBPFuWulA,120
35
- klaude_code/config/config.py,sha256=2jvM6a8zoC-TdRFaLIw3OW5paxxeXC6l-o05ds4RysA,7263
36
- klaude_code/config/select_model.py,sha256=KCdFjaoHXyO9QidNna_OGdDrvlEXtRUXKfG-F8kdNLk,5188
35
+ klaude_code/config/__init__.py,sha256=ZZJfbchFHpkazsEk2MNxbsJUqcCwLG1LLoZVLj-R8nY,220
36
+ klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
37
+ klaude_code/config/assets/builtin_config.yaml,sha256=8_ZFxtYirfDvZ5Za9mO7ukTjKjlApfxrdn26cwAiQmI,5352
38
+ klaude_code/config/builtin_config.py,sha256=RgbawLV4yKk1IhJsQn04RkitDyLLhCwTqQ3nJkdvHGI,1113
39
+ klaude_code/config/config.py,sha256=6eseVTYzpIOHnLHq--KcvFkbXgzNtfl5X2uVxZTY2SE,16195
40
+ klaude_code/config/select_model.py,sha256=vj4Qs1cl9-u6ucAjDwDvoODmlplwdYo1U57jUcKPya4,7035
37
41
  klaude_code/const.py,sha256=Xc6UKku2sGQE05mvPNCpBbKK205vJrS9CaNAeKvu1AA,4612
38
42
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
43
  klaude_code/core/agent.py,sha256=bWm-UFX_0-KAy5j_YHH8X8o3MJT4-40Ni2EaDP2SL5k,5819
40
- klaude_code/core/executor.py,sha256=MkfKPOZWknjyQzSUl_qCGRxsyYY9zetQVnerO_dWqx4,26827
44
+ klaude_code/core/executor.py,sha256=wykM6_lsumuJbVw0q4H9KdZ7nWWDR4RWSGr2dtqRYTw,26955
41
45
  klaude_code/core/manager/__init__.py,sha256=hdIbpnYj6i18byiWjtJIm5l7NYYDQMvafw8fePVPydc,562
42
46
  klaude_code/core/manager/llm_clients.py,sha256=X2oMFWgJcP0tK8GEtMMDYR3HyR6_H8FuyCqpzWF5x2k,871
43
- klaude_code/core/manager/llm_clients_builder.py,sha256=pPZ_xBh-_ipV66L-9a1fnwNos4iik82Zkq0E0y3WrfI,1521
47
+ klaude_code/core/manager/llm_clients_builder.py,sha256=vvNV6hSpWtUCMZORQN6OfFWyA_3OAOGS5SFGy6oaKMs,1641
44
48
  klaude_code/core/manager/sub_agent_manager.py,sha256=DCRlPimgmW_wykkjqAK_dUeeKxNavS8fJ4mhhT7As-E,4872
45
49
  klaude_code/core/prompt.py,sha256=piHP0Cu_u583_RHPjhVvTkdp5GgHQ29y3IM2QFVHITY,3869
46
50
  klaude_code/core/prompts/prompt-claude-code.md,sha256=uuWBv6GrG63mdmBedAHT5U9yOpbHSKFYbbS2xBnUzOE,8290
@@ -53,7 +57,7 @@ klaude_code/core/prompts/prompt-sub-agent-explore.md,sha256=21kFodjhvN0L-c_ZFo4y
53
57
  klaude_code/core/prompts/prompt-sub-agent-oracle.md,sha256=1PLI3snvxnenCOPVrL0IxZnBl5b2xxGhlufHAyLyf60,1376
54
58
  klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=ewS7-h8_u4QZftFpqrZWpht9Ap08s7zF9D4k4md8oD8,2360
55
59
  klaude_code/core/prompts/prompt-sub-agent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
56
- klaude_code/core/reminders.py,sha256=ivY7k2Iw9XVgsWfMDckSGsbonFRgGjCJM8MeI0dzuEs,23448
60
+ klaude_code/core/reminders.py,sha256=M_YPlOuZ2TpTjoxfEp1FbswB4yuk9_XUgSGb9MoMBCA,24741
57
61
  klaude_code/core/task.py,sha256=yJAcs_hFm1NYaLbjj-qbGiJr65Nu76uLD2lGGfseYYg,11773
58
62
  klaude_code/core/tool/__init__.py,sha256=fOEwgJMGHT8NkYYE6l1FZ0fDRUmHzC6laA8wESo9j60,1939
59
63
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -63,15 +67,15 @@ klaude_code/core/tool/file/apply_patch_tool.md,sha256=KVDsjUiLDa97gym0NrZNVG4jA1
63
67
  klaude_code/core/tool/file/apply_patch_tool.py,sha256=LGH0vfKAEGy91Q-quo75JQERUGeoojOao7NvEdQONTI,8059
64
68
  klaude_code/core/tool/file/diff_builder.py,sha256=b53S4Ebw7aPmd9AZ97Pxu6MRcnUIdVD36MJ2yTDrAjI,5872
65
69
  klaude_code/core/tool/file/edit_tool.md,sha256=rEcUjJuPC46t1nXWjTDxplDcxWDbzTWsr6_bYt5_aRI,1110
66
- klaude_code/core/tool/file/edit_tool.py,sha256=wuXISJRTWobNCKjkQ01UpoA13I0Zxcg1r7hXErAQxnQ,10897
70
+ klaude_code/core/tool/file/edit_tool.py,sha256=VZoSPNIFWPG07G7wTBZG_Cti16l-eRYvCvnUiX8x_vA,10925
67
71
  klaude_code/core/tool/file/read_tool.md,sha256=74SLSl1tq3L0por73M0QV_ws41MRIvGXQpfLb8dmtp0,1351
68
72
  klaude_code/core/tool/file/read_tool.py,sha256=HFA4lYaS_eV9C0UjXCuIVXhbD6OKrpkq4WN33z0EgP0,12877
69
73
  klaude_code/core/tool/file/write_tool.md,sha256=CNnYgtieUasuHdpXLDpTEsqe492Pf7v75M4RQ3oIer8,613
70
- klaude_code/core/tool/file/write_tool.py,sha256=j9OCPnCXIg4RC-DF5yw7U5_X1KMNBnqxn1exF-XqFeo,5682
74
+ klaude_code/core/tool/file/write_tool.py,sha256=suQyzR3mzluaSV_APqiOQP9J6LQ-2kauxX8P1AOo3qk,5693
71
75
  klaude_code/core/tool/report_back_tool.py,sha256=KRZzQAIxniwXe58SDJcfK_DCf9TFFAx8XC75wPEjmpY,3246
72
76
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
77
  klaude_code/core/tool/shell/bash_tool.md,sha256=ILKpnRCBTkU2uSDEdZQjNYo1l6hsM4TO-3RD5zWC61c,3935
74
- klaude_code/core/tool/shell/bash_tool.py,sha256=NSWXU_MzKqJBtkljOPNWGTwtAZwxMrCF-y8GC5MysFI,14465
78
+ klaude_code/core/tool/shell/bash_tool.py,sha256=jVX05vbslWLkBxDm7u05nlk22-kiQj30bEDlSlijS6Y,14497
75
79
  klaude_code/core/tool/shell/command_safety.py,sha256=bGsooLovuzq8WmLcZ2v24AVBDj3bZv2p4GSL0IlixvM,13192
76
80
  klaude_code/core/tool/skill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
81
  klaude_code/core/tool/skill/skill_tool.md,sha256=UfjJK5EGAd3mf7ym5rIrRdPyV3kBTxNnwzOjNnHOBrE,973
@@ -89,8 +93,8 @@ klaude_code/core/tool/tool_registry.py,sha256=VFB0Z4BWtYKIWtpZVGhjSLcgfK244gow_U
89
93
  klaude_code/core/tool/tool_runner.py,sha256=A_RviRFr8kF6TjdGOzdgCIingeyJLBxNbZpcTnzT64E,10695
90
94
  klaude_code/core/tool/truncation.py,sha256=YPKzelOM45rHW_OkcfX5_Ojg_pPi8yDZu7lSnwl9b_k,7334
91
95
  klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- klaude_code/core/tool/web/mermaid_tool.md,sha256=gyNkf1rSra-_4EyDFJOyoLBg8CoADVkEcWEuJFFz2VM,1564
93
- klaude_code/core/tool/web/mermaid_tool.py,sha256=Ok0A27oHLnV1c__74bheUuy3wpqDJ1zaXUSxuuqsNPI,2630
96
+ klaude_code/core/tool/web/mermaid_tool.md,sha256=vvPSWxbY3P_cBpHh6AM8Je9JJoMY4FBTJzoteEkwuDU,2095
97
+ klaude_code/core/tool/web/mermaid_tool.py,sha256=w_YAWgUjtfhHlNfFmxsiC6gM2rHDVT-R-BcOYOg6o9c,2578
94
98
  klaude_code/core/tool/web/web_fetch_tool.md,sha256=jIrW-EAmfl50bBevcfioQ3Vrg8kWlHSut8ze_sRgRGw,486
95
99
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=7WzOsAHdfijROOlk3JixtHUV1D2Cuwnf-AhoznrqATw,8551
96
100
  klaude_code/core/tool/web/web_search_tool.md,sha256=l5gGPx-fXHFel1zLBljm8isy9pwEYXGrq5cFzzw1VBw,1135
@@ -107,8 +111,8 @@ klaude_code/llm/input_common.py,sha256=NxiYlhGRFntiLiKm5sKLCF0xGYW6DwcyvIhj6KAZo
107
111
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
108
112
  klaude_code/llm/openai_compatible/client.py,sha256=sMzHxaDZ4CRDgwSr1pZPqpG6YbHJA-Zk0cFyC_r-ihA,4396
109
113
  klaude_code/llm/openai_compatible/input.py,sha256=rtWVjpwb9tLrinucezmncQXet8MerUxE5Gxc32sfDr4,3750
110
- klaude_code/llm/openai_compatible/stream.py,sha256=_OlnD5IBAq4xS5tb3mZUObZFGjXP-66lY4g8cxErRoo,10808
111
- klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=kuw3ceDgenQz2Ccc9KYqBkDo6F1sDb5Aga6m41AIECA,4071
114
+ klaude_code/llm/openai_compatible/stream.py,sha256=KeB3FhfvIq_NkYJTUlyv_aV9DVu4OLxTf9_oij6kwD0,10839
115
+ klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=Tpcs2od48qNXSCHGNyzgJcFa2jlsCFuZOGK1DoOmj3o,4651
112
116
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
113
117
  klaude_code/llm/openrouter/client.py,sha256=zUkH7wkiYUJMGS_8iaVwdhzUnry7WLw4Q1IDQtncmK0,4864
114
118
  klaude_code/llm/openrouter/input.py,sha256=aHVJCejkwzWaTM_EBbgmzKWyZfttAws2Y7QDW_NCnZk,5671
@@ -119,10 +123,10 @@ klaude_code/llm/responses/client.py,sha256=XEsVehevQJ0WFbEVxIkI-su7VwIcaeq0P9eSr
119
123
  klaude_code/llm/responses/input.py,sha256=qr61LmQJdcb_f-ofrAz06WpK_k4PEcI36XsyuZAXbKk,6805
120
124
  klaude_code/llm/usage.py,sha256=cq6yZNSKBhRVVjFqBYJQrK3mw9ZSLXaTpbDeal-BjBQ,4205
121
125
  klaude_code/protocol/__init__.py,sha256=aGUgzhYqvhuT3Mk2vj7lrHGriH4h9TSbqV1RsRFAZjQ,194
122
- klaude_code/protocol/commands.py,sha256=GN6GX9fo7YYtfumrBTpOmOvZofsnzZN2SAxP2X0BjTk,644
126
+ klaude_code/protocol/commands.py,sha256=RjeZYsHxanDaEdBGvw8xt1nBFLiqfXD7I-kPqKFjTdU,678
123
127
  klaude_code/protocol/events.py,sha256=KUMf1rLNdHQO9cZiQ9Pa1VsKkP1PTMbUkp18bu_jGy8,3935
124
128
  klaude_code/protocol/llm_param.py,sha256=cb4ubLq21PIsMOC8WJb0aid12z_sT1b7FsbNJMr-jLg,4255
125
- klaude_code/protocol/model.py,sha256=bHTSVKwkEBlMELtPEANzxu2c_GvOSZOCk9AP6mpronY,14128
129
+ klaude_code/protocol/model.py,sha256=Dyp3KRPvwNd0MxJkxu0qIKMZpoPmgE79Gq5FsBJaHpU,14238
126
130
  klaude_code/protocol/op.py,sha256=zG8AGFcTx1vIZFN0lNZjIjucjmDYM4eVOR7tRiLofF4,4589
127
131
  klaude_code/protocol/op_handler.py,sha256=feTMdrz2QBwnjdv6ndizTinbBA9HFeH4oiBDeQBRKoY,1749
128
132
  klaude_code/protocol/sub_agent/__init__.py,sha256=Abap5lPLgnSCQsVD3axfeqnj2UtxOcDLGX8e9HugfSU,3964
@@ -133,9 +137,9 @@ klaude_code/protocol/sub_agent/web.py,sha256=Z5vUM367kz8CIexN6UVPG4XxzVOaaRek-Ga
133
137
  klaude_code/protocol/tools.py,sha256=OpGCr47ARKaCHcIlljhEN-p-2h4djgbP5jtfTIoKB-A,359
134
138
  klaude_code/session/__init__.py,sha256=oXcDA5w-gJCbzmlF8yuWy3ezIW9DgFBNUs-gJHUJ-Rc,121
135
139
  klaude_code/session/codec.py,sha256=ummbqT7t6uHHXtaS9lOkyhi1h0YpMk7SNSms8DyGAHU,2015
136
- klaude_code/session/export.py,sha256=_xJGVHSjaVbDOLR5yrYUoVFuY4oIKyq5gNq_jupuVkc,29303
137
- klaude_code/session/selector.py,sha256=gijwWQkSV20XYP3Fxr27mFXuqP4ChY2DQm_YuBOTQKw,2888
138
- klaude_code/session/session.py,sha256=LDrRlxv35_jJGwxv6Lv_WdBYNY2UZZAZ4vippq8pN_o,16016
140
+ klaude_code/session/export.py,sha256=Ool-6mxesX_DedaJpGi_2r3HuB1VChr8KRXl4jwT6vQ,31128
141
+ klaude_code/session/selector.py,sha256=uJQTQAw1ce9LzNOswSFEPkB7_PTzoJRXbA9rwK8hvdQ,2913
142
+ klaude_code/session/session.py,sha256=P5FBbXJ9x_npBkSBD1c-QTcdamp1-4xBDfETgg5edEM,17030
139
143
  klaude_code/session/store.py,sha256=-e-lInCB3N1nFLlet7bipkmPk1PXmGthuMxv5z3hg5o,6953
140
144
  klaude_code/session/templates/export_session.html,sha256=bA27AkcC7DQRoWmcMBeaR8WOx1z76hezEDf0aYH-0HQ,119780
141
145
  klaude_code/skill/__init__.py,sha256=yeWeCfRGPOhT4mx_pjdo4fLondQ_Vx0edBtnFusLhls,839
@@ -148,7 +152,7 @@ klaude_code/skill/loader.py,sha256=3xGh4udco7tXlrnGFh4Kr5yljtadJ391jKYjaQ2Z3js,1
148
152
  klaude_code/skill/manager.py,sha256=XRSGgGpNJo2Q9pHKpWo-VyMqf_y-dEt9JGtDoC3Eq-U,2088
149
153
  klaude_code/skill/system_skills.py,sha256=cfhxk5Jc1OFip-Lamr6RwlAEPq-UA60M3NdwSneKGco,6124
150
154
  klaude_code/trace/__init__.py,sha256=q8uOYhWr2_Mia1aEK_vkqx91YAfFM25ItIB6J8n3_pM,352
151
- klaude_code/trace/log.py,sha256=0H_RqkytSpt6AAIFDg-MV_8vA9zsR9BB1UqT6moTTTg,9134
155
+ klaude_code/trace/log.py,sha256=ivvs60XfMT1n7WUt060cit_8YAumsT_6crr7Us_fdEY,9231
152
156
  klaude_code/ui/__init__.py,sha256=XuEQsFUkJet8HI04cRmNLwnHOUqaPCRy4hF7PJnIfCY,2737
153
157
  klaude_code/ui/core/__init__.py,sha256=2NakrTDcxem5D0atyEY_Rxv1BbKCeZweF63L6AAq6r8,23
154
158
  klaude_code/ui/core/display.py,sha256=NwFQ9oKi8i3T5EsYDRrTpGBr3BZI0Ggns37JuQEOH54,3540
@@ -159,42 +163,42 @@ klaude_code/ui/modes/debug/__init__.py,sha256=1-1tAk7FtENdYzExSttYdHiJ-qH3DIQ5yY
159
163
  klaude_code/ui/modes/debug/display.py,sha256=7_j9NGZqL4wE2LWhF1TjDHac4MfaWlYN2RHZCTfQad8,1096
160
164
  klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJd3yhVf_k,12
161
165
  klaude_code/ui/modes/exec/display.py,sha256=m2kkgaUoGD9rEVUmcm7Vs_PyAI2iruKCJYRhANjSsKo,1965
162
- klaude_code/ui/modes/repl/__init__.py,sha256=35a6SUiL1SDi2i43X2VjHQw97rR7yhbLBzkGI5aC6Bc,1526
166
+ klaude_code/ui/modes/repl/__init__.py,sha256=_0II73jlz5JUtvJsZ9sGRJzeHIQyJJpaI0egvmryYNw,286
163
167
  klaude_code/ui/modes/repl/clipboard.py,sha256=ZCpk7kRSXGhh0Q_BWtUUuSYT7ZOqRjAoRcg9T9n48Wo,5137
164
- klaude_code/ui/modes/repl/completers.py,sha256=GIvUS9TAFMMPDpoXLuIupEccoqIMEpSEw4IZmKjVo4c,28560
168
+ klaude_code/ui/modes/repl/completers.py,sha256=AElBFnWculNsSadom7ScnKf-P_vilC4V5AUn2qpRkXE,30005
165
169
  klaude_code/ui/modes/repl/display.py,sha256=06wawOHWO2ItEA9EIEh97p3GDID7TJhAtpaA03nPQXs,2335
166
- klaude_code/ui/modes/repl/event_handler.py,sha256=bX8QFE9nccpe6DP8bGXUi9gcSxcYHK5cb6hliwg_hyM,25530
167
- klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=F1p4JZp-KjDvTEZVR6bC0nb4ayd2VaEYsLmEA0KJOUM,9054
168
- klaude_code/ui/modes/repl/key_bindings.py,sha256=Fxz9Ey2SnOHvfleMeSYVduxuofY0Yo-97hMRs-OMe-o,7800
169
- klaude_code/ui/modes/repl/renderer.py,sha256=XcBztFI3ZfbuzWuqjRTVzAWbGKSY8F6uCmzZblU3vPM,15981
170
+ klaude_code/ui/modes/repl/event_handler.py,sha256=iimcdcoEKJYOCYXoocYefNsSuRgbUvB85_1dspvh1F4,25694
171
+ klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=5OqFRphfTvy46M7lrX7CCLSYGRSmXAfJzGJnXQR-NX4,7748
172
+ klaude_code/ui/modes/repl/key_bindings.py,sha256=gc7b0s5S_mYC-__OJMtNcx-JxSm1DKof-hodj2XKfiY,7896
173
+ klaude_code/ui/modes/repl/renderer.py,sha256=7cum6SuKSuuBePDSyk4UvWs6q5dwgLA0NrJZ3eD9tHw,15902
170
174
  klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
175
  klaude_code/ui/renderers/assistant.py,sha256=nO_QNJ2e9TwtU2IlojO9lCMWNFUNmcE9Ezz-WW748_w,743
172
- klaude_code/ui/renderers/common.py,sha256=5RdXC3ngtlhfmxRlbwOPtHtbXhAoWwbHoGX78tZcaTc,2284
173
- klaude_code/ui/renderers/developer.py,sha256=CawltuPSt_8s5lLoYKWYD9htwORbjgHeb4Ap0L2q7R4,6881
174
- klaude_code/ui/renderers/diffs.py,sha256=A37Wuz1_UIg0-st5le68-DRGz4-kot6N-wy9xEMKdz0,10403
175
- klaude_code/ui/renderers/errors.py,sha256=o9pOHRqZ0nxMPwkmV4CG81X7taW1-izvga6RY3fFRMI,516
176
- klaude_code/ui/renderers/metadata.py,sha256=b1aNqLjyaqErP4O5YSEXg7ychJcNTKpZ6hTmdcNJX84,8190
176
+ klaude_code/ui/renderers/common.py,sha256=_EEgx7GTWk2eV8wEGcRcMmkeOBCMU9kjF2ZneM03V3s,2535
177
+ klaude_code/ui/renderers/developer.py,sha256=e1oc5D9EbrWuUIGpTC3IHTgYdp1RZ5eJmaSK6hCW_UY,7679
178
+ klaude_code/ui/renderers/diffs.py,sha256=uLpgYTudH38wucozoUw4xbPWMC6uYTQTaDTHcg-0zvM,10418
179
+ klaude_code/ui/renderers/errors.py,sha256=-geQA6neIkeQK_m0jaboSdVHmO61qd9620lo1a029bU,656
180
+ klaude_code/ui/renderers/metadata.py,sha256=_3OIAgnssoz05lq9t8Hm-3zlRWyfYzOTPSwG6guVKiE,8223
177
181
  klaude_code/ui/renderers/sub_agent.py,sha256=g8QCFXTtFX_w8oTaGMYGuy6u5KqbFMlvzWofER0hGKk,5946
178
182
  klaude_code/ui/renderers/thinking.py,sha256=nwKotPFS3WInsdrHFquqOHyvR8dTEKZ0JS5SMKJ_GgA,1946
179
- klaude_code/ui/renderers/tools.py,sha256=x4L9880HZAwXnr89M4GxbMybhwXjs6jWA7QVcI3n4_c,23524
183
+ klaude_code/ui/renderers/tools.py,sha256=KFNawj2zP4X9KodWBLVIRF2o2U71Okw9FfmwA1sTgoU,23710
180
184
  klaude_code/ui/renderers/user_input.py,sha256=e2hZS7UUnzQuQ6UqzSKRDkFJMkKTLUoub1JclHMX40g,3941
181
185
  klaude_code/ui/rich/__init__.py,sha256=zEZjnHR3Fnv_sFMxwIMjoJfwDoC4GRGv3lHJzAGRq_o,236
182
186
  klaude_code/ui/rich/cjk_wrap.py,sha256=ncmifgTwF6q95iayHQyazGbntt7BRQb_Ed7aXc8JU6Y,7551
183
187
  klaude_code/ui/rich/code_panel.py,sha256=ZKuJHh-kh-hIkBXSGLERLaDbJ7I9hvtvmYKocJn39_w,4744
184
188
  klaude_code/ui/rich/live.py,sha256=qiBLPSE4KW_Dpemy5MZ5BKhkFWEN2fjXBiQHmhJrPSM,2722
185
- klaude_code/ui/rich/markdown.py,sha256=bZqnhJ_NvJ4d4G4IfXMn8XacJ_cPoRC-qhRvFaimZn8,15297
189
+ klaude_code/ui/rich/markdown.py,sha256=ltcm4qVX6fsqUNkPWeOwX636FsQ6-gST6uLLcXAl9yA,15397
186
190
  klaude_code/ui/rich/quote.py,sha256=tZcxN73SfDBHF_qk0Jkh9gWBqPBn8VLp9RF36YRdKEM,1123
187
191
  klaude_code/ui/rich/searchable_text.py,sha256=DCVZgEFv7_ergAvT2v7XrfQAUXUzhmAwuVAchlIx8RY,2448
188
192
  klaude_code/ui/rich/status.py,sha256=QHg4oWmPSQH19H81vOFpImEqWyDtAbIXjuCGsuDjBPA,9278
189
- klaude_code/ui/rich/theme.py,sha256=AKgl84dsn-xV8R7V6_lXllf2HAoRenc6SgM_sdbvjxk,13145
193
+ klaude_code/ui/rich/theme.py,sha256=eG69OjiTDjJxEXOgEli6EDm9S3djoAVfy_QPXLf-f3k,13391
190
194
  klaude_code/ui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
191
- klaude_code/ui/terminal/color.py,sha256=M-i09DVlLAhAyhQjfeAi7OipoGi1p_OVkaZxeRfykY0,7135
192
- klaude_code/ui/terminal/control.py,sha256=6SGNwxorP3jMW9xqnZy2BC0OsJd4DSrS13O3t6YlZzs,4916
195
+ klaude_code/ui/terminal/color.py,sha256=jvVbuysf5pnI0uAjUVeyW2HwU58dutTg2msykbu2w4Y,7197
196
+ klaude_code/ui/terminal/control.py,sha256=WhkqEWdtzUO4iWULp-iI9VazAWmzzW52qTQXk-4Dr4s,4922
193
197
  klaude_code/ui/terminal/notifier.py,sha256=wkRM66d98Oh6PujnN4bB7NiQxIYEHqQXverMKU43H5E,3187
194
198
  klaude_code/ui/terminal/progress_bar.py,sha256=MDnhPbqCnN4GDgLOlxxOEVZPDwVC_XL2NM5sl1MFNcQ,2133
195
199
  klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlshyOQ,15
196
200
  klaude_code/ui/utils/common.py,sha256=tqHqwgLtAyP805kwRFyoAL4EgMutcNb3Y-GAXJ4IeuM,2263
197
- klaude_code-1.2.26.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
198
- klaude_code-1.2.26.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
199
- klaude_code-1.2.26.dist-info/METADATA,sha256=CI9hiFD-OVRxM4BY8dohWKSA-skNFZ4bfpW5jpdzwwQ,7762
200
- klaude_code-1.2.26.dist-info/RECORD,,
201
+ klaude_code-1.2.28.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
202
+ klaude_code-1.2.28.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
203
+ klaude_code-1.2.28.dist-info/METADATA,sha256=YgDl2WjdndyfpyLcS70-1184bdcDCJqWaQ1eo8AUgfQ,9126
204
+ klaude_code-1.2.28.dist-info/RECORD,,
@@ -1,3 +1,4 @@
1
1
  [console_scripts]
2
2
  klaude = klaude_code.cli.main:app
3
+ klaude-code = klaude_code.cli.main:app
3
4