klaude-code 1.4.0__py3-none-any.whl → 1.4.1__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.
@@ -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 effort {thinking.reasoning_effort}"
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
- meta_line = " " + " · ".join(meta_parts)
137
+ meta_str = " · ".join(meta_parts)
138
138
  title = [
139
139
  ("class:msg", first_line_prefix),
140
- ("class:msg bold", f"{model_id}\n"),
141
- ("class:meta", f"{meta_line}\n\n"),
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"),
@@ -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 is not None and search_buffer.text == ""),
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: # type: ignore[no-untyped-def]
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: Minimal code agent CLI
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: chardet>=5.2.0
@@ -32,13 +32,13 @@ klaude_code/command/release_notes_cmd.py,sha256=FIrBRfKTlXEp8mBh15buNjgOrl_GMX7F
32
32
  klaude_code/command/resume_cmd.py,sha256=z5PNVZ_jzH-8YWPd0Qjj8mFwE8kjPSpM_GohExXL_QA,1970
33
33
  klaude_code/command/status_cmd.py,sha256=95cp4-Qg7ju4TZhKIV6_dfv1rrjcyNO6816NHtfk6v0,5413
34
34
  klaude_code/command/terminal_setup_cmd.py,sha256=SivM1gX_anGY_8DCQNFZ5VblFqt4sVgCMEWPRlo6K5w,10911
35
- klaude_code/command/thinking_cmd.py,sha256=uqOSoSYTsAV7aozRI-CiodTjv_yQqqznIolvCi5zVBs,9191
35
+ klaude_code/command/thinking_cmd.py,sha256=uip1Cvam2f9j44yyT57j8H5LjPeLP7mkRK3A5bmuAMU,9327
36
36
  klaude_code/config/__init__.py,sha256=Qe1BeMekBfO2-Zd30x33lB70hdM1QQZGrp4DbWSQ-II,353
37
37
  klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
38
38
  klaude_code/config/assets/builtin_config.yaml,sha256=9sfpcVqY3uWVGSdyteH3P_B8ZDwPhfJAoT2Q5o7I1bk,5605
39
39
  klaude_code/config/builtin_config.py,sha256=RgbawLV4yKk1IhJsQn04RkitDyLLhCwTqQ3nJkdvHGI,1113
40
40
  klaude_code/config/config.py,sha256=rTMU-7IYl_fmthB4LsrCaSgUVttNSw7Agif8XRCmU1g,16331
41
- klaude_code/config/select_model.py,sha256=_oScIaiszIHfW9BNb-1Fw98h8krFxAnlbhLlxnXHTZc,7313
41
+ klaude_code/config/select_model.py,sha256=0ON5O2ITBvyBNU80uEFQr65z2wbhdHtlzYLVTYx0AjA,7303
42
42
  klaude_code/const.py,sha256=Xc6UKku2sGQE05mvPNCpBbKK205vJrS9CaNAeKvu1AA,4612
43
43
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
44
  klaude_code/core/agent.py,sha256=bWm-UFX_0-KAy5j_YHH8X8o3MJT4-40Ni2EaDP2SL5k,5819
@@ -202,10 +202,10 @@ klaude_code/ui/terminal/color.py,sha256=jvVbuysf5pnI0uAjUVeyW2HwU58dutTg2msykbu2
202
202
  klaude_code/ui/terminal/control.py,sha256=WhkqEWdtzUO4iWULp-iI9VazAWmzzW52qTQXk-4Dr4s,4922
203
203
  klaude_code/ui/terminal/notifier.py,sha256=wkRM66d98Oh6PujnN4bB7NiQxIYEHqQXverMKU43H5E,3187
204
204
  klaude_code/ui/terminal/progress_bar.py,sha256=MDnhPbqCnN4GDgLOlxxOEVZPDwVC_XL2NM5sl1MFNcQ,2133
205
- klaude_code/ui/terminal/selector.py,sha256=E6Z1M9xH61QYWJ7knz4nyJquzayIIhROiMnfmLD9knY,9311
205
+ klaude_code/ui/terminal/selector.py,sha256=v0akaR4Jw5U_3fgK4INqf0R2nIhRZC-JqhECsF3z22I,9633
206
206
  klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlshyOQ,15
207
207
  klaude_code/ui/utils/common.py,sha256=tqHqwgLtAyP805kwRFyoAL4EgMutcNb3Y-GAXJ4IeuM,2263
208
- klaude_code-1.4.0.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
209
- klaude_code-1.4.0.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
210
- klaude_code-1.4.0.dist-info/METADATA,sha256=aP_OupEAaxU4WRFb6C20pW2JZ1MJZfOfya5s6ozNDz0,9091
211
- klaude_code-1.4.0.dist-info/RECORD,,
208
+ klaude_code-1.4.1.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
209
+ klaude_code-1.4.1.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
210
+ klaude_code-1.4.1.dist-info/METADATA,sha256=5cZHqchLcz-Jw9wBBudFwewS-S97SSJS3b8bJ3iEo4Y,9091
211
+ klaude_code-1.4.1.dist-info/RECORD,,