klaude-code 2.0.0__py3-none-any.whl → 2.0.2__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.
- klaude_code/cli/cost_cmd.py +1 -1
- klaude_code/cli/runtime.py +1 -8
- klaude_code/command/debug_cmd.py +1 -1
- klaude_code/command/export_online_cmd.py +4 -4
- klaude_code/command/fork_session_cmd.py +6 -6
- klaude_code/command/help_cmd.py +1 -1
- klaude_code/command/model_cmd.py +1 -1
- klaude_code/command/registry.py +10 -1
- klaude_code/command/release_notes_cmd.py +1 -1
- klaude_code/command/resume_cmd.py +2 -2
- klaude_code/command/status_cmd.py +2 -2
- klaude_code/command/terminal_setup_cmd.py +2 -2
- klaude_code/command/thinking_cmd.py +1 -1
- klaude_code/config/assets/builtin_config.yaml +4 -0
- klaude_code/const.py +5 -3
- klaude_code/core/executor.py +15 -36
- klaude_code/core/reminders.py +55 -68
- klaude_code/core/tool/__init__.py +0 -2
- klaude_code/core/tool/file/edit_tool.py +3 -2
- klaude_code/core/tool/todo/todo_write_tool.py +1 -2
- klaude_code/core/tool/tool_registry.py +3 -3
- klaude_code/protocol/events.py +1 -0
- klaude_code/protocol/message.py +3 -11
- klaude_code/protocol/model.py +79 -13
- klaude_code/protocol/op.py +0 -13
- klaude_code/protocol/op_handler.py +0 -5
- klaude_code/protocol/sub_agent/explore.py +0 -15
- klaude_code/protocol/sub_agent/task.py +1 -1
- klaude_code/protocol/sub_agent/web.py +1 -17
- klaude_code/protocol/tools.py +0 -1
- klaude_code/ui/modes/exec/display.py +2 -3
- klaude_code/ui/modes/repl/display.py +1 -1
- klaude_code/ui/modes/repl/event_handler.py +2 -10
- klaude_code/ui/modes/repl/input_prompt_toolkit.py +5 -1
- klaude_code/ui/modes/repl/key_bindings.py +135 -1
- klaude_code/ui/modes/repl/renderer.py +2 -1
- klaude_code/ui/renderers/bash_syntax.py +36 -4
- klaude_code/ui/renderers/common.py +8 -6
- klaude_code/ui/renderers/developer.py +113 -97
- klaude_code/ui/renderers/metadata.py +28 -15
- klaude_code/ui/renderers/tools.py +17 -59
- klaude_code/ui/rich/markdown.py +69 -11
- klaude_code/ui/rich/theme.py +22 -17
- klaude_code/ui/terminal/selector.py +36 -17
- {klaude_code-2.0.0.dist-info → klaude_code-2.0.2.dist-info}/METADATA +1 -1
- {klaude_code-2.0.0.dist-info → klaude_code-2.0.2.dist-info}/RECORD +48 -50
- klaude_code/core/tool/file/move_tool.md +0 -41
- klaude_code/core/tool/file/move_tool.py +0 -435
- {klaude_code-2.0.0.dist-info → klaude_code-2.0.2.dist-info}/WHEEL +0 -0
- {klaude_code-2.0.0.dist-info → klaude_code-2.0.2.dist-info}/entry_points.txt +0 -0
klaude_code/ui/rich/markdown.py
CHANGED
|
@@ -18,7 +18,12 @@ from rich.table import Table
|
|
|
18
18
|
from rich.text import Text
|
|
19
19
|
from rich.theme import Theme
|
|
20
20
|
|
|
21
|
-
from klaude_code.const import
|
|
21
|
+
from klaude_code.const import (
|
|
22
|
+
MARKDOWN_RIGHT_MARGIN,
|
|
23
|
+
MARKDOWN_STREAM_LIVE_REPAINT_ENABLED,
|
|
24
|
+
MARKDOWN_STREAM_SYNCHRONIZED_OUTPUT_ENABLED,
|
|
25
|
+
UI_REFRESH_RATE_FPS,
|
|
26
|
+
)
|
|
22
27
|
from klaude_code.ui.rich.code_panel import CodePanel
|
|
23
28
|
|
|
24
29
|
|
|
@@ -201,6 +206,52 @@ class MarkdownStream:
|
|
|
201
206
|
def _get_base_width(self) -> int:
|
|
202
207
|
return self.console.options.max_width
|
|
203
208
|
|
|
209
|
+
def _should_use_synchronized_output(self) -> bool:
|
|
210
|
+
if not MARKDOWN_STREAM_SYNCHRONIZED_OUTPUT_ENABLED:
|
|
211
|
+
return False
|
|
212
|
+
if self._live_sink is None:
|
|
213
|
+
return False
|
|
214
|
+
console_file = getattr(self.console, "file", None)
|
|
215
|
+
if console_file is None:
|
|
216
|
+
return False
|
|
217
|
+
isatty = getattr(console_file, "isatty", None)
|
|
218
|
+
if isatty is None:
|
|
219
|
+
return False
|
|
220
|
+
return bool(isatty())
|
|
221
|
+
|
|
222
|
+
@contextlib.contextmanager
|
|
223
|
+
def _synchronized_output(self) -> Any:
|
|
224
|
+
"""Batch terminal updates to reduce flicker.
|
|
225
|
+
|
|
226
|
+
Uses xterm's "Synchronized Output" mode (DECSET/DECRST 2026). Terminals that
|
|
227
|
+
don't support it will typically ignore the escape codes.
|
|
228
|
+
"""
|
|
229
|
+
|
|
230
|
+
if not self._should_use_synchronized_output():
|
|
231
|
+
yield
|
|
232
|
+
return
|
|
233
|
+
|
|
234
|
+
console_file = self.console.file
|
|
235
|
+
enabled = False
|
|
236
|
+
try:
|
|
237
|
+
console_file.write("\x1b[?2026h")
|
|
238
|
+
flush = getattr(console_file, "flush", None)
|
|
239
|
+
if flush is not None:
|
|
240
|
+
flush()
|
|
241
|
+
enabled = True
|
|
242
|
+
except Exception:
|
|
243
|
+
pass
|
|
244
|
+
|
|
245
|
+
try:
|
|
246
|
+
yield
|
|
247
|
+
finally:
|
|
248
|
+
if enabled:
|
|
249
|
+
with contextlib.suppress(Exception):
|
|
250
|
+
console_file.write("\x1b[?2026l")
|
|
251
|
+
flush = getattr(console_file, "flush", None)
|
|
252
|
+
if flush is not None:
|
|
253
|
+
flush()
|
|
254
|
+
|
|
204
255
|
def compute_candidate_stable_line(self, text: str) -> int:
|
|
205
256
|
"""Return the start line of the last top-level block, or 0.
|
|
206
257
|
|
|
@@ -427,26 +478,22 @@ class MarkdownStream:
|
|
|
427
478
|
|
|
428
479
|
start = time.time()
|
|
429
480
|
|
|
481
|
+
stable_chunk_to_print: str | None = None
|
|
430
482
|
stable_changed = final or stable_line > self._stable_source_line_count
|
|
431
483
|
if stable_changed and stable_source:
|
|
432
484
|
stable_ansi = self.render_stable_ansi(stable_source, has_live_suffix=bool(live_source), final=final)
|
|
433
485
|
stable_lines = stable_ansi.splitlines(keepends=True)
|
|
434
486
|
new_lines = stable_lines[len(self._stable_rendered_lines) :]
|
|
435
487
|
if new_lines:
|
|
436
|
-
|
|
437
|
-
self.console.print(Text.from_ansi(stable_chunk), end="\n")
|
|
488
|
+
stable_chunk_to_print = "".join(new_lines)
|
|
438
489
|
self._stable_rendered_lines = stable_lines
|
|
439
490
|
self._stable_source_line_count = stable_line
|
|
440
491
|
elif final and not stable_source:
|
|
441
492
|
self._stable_rendered_lines = []
|
|
442
493
|
self._stable_source_line_count = stable_line
|
|
443
494
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
self._live_sink(None)
|
|
447
|
-
return
|
|
448
|
-
|
|
449
|
-
if MARKDOWN_STREAM_LIVE_REPAINT_ENABLED and self._live_sink is not None:
|
|
495
|
+
live_text_to_set: Text | None = None
|
|
496
|
+
if not final and MARKDOWN_STREAM_LIVE_REPAINT_ENABLED and self._live_sink is not None:
|
|
450
497
|
apply_mark_live = self._stable_source_line_count == 0
|
|
451
498
|
live_lines = self._render_markdown_to_lines(live_source, apply_mark=apply_mark_live)
|
|
452
499
|
|
|
@@ -468,8 +515,19 @@ class MarkdownStream:
|
|
|
468
515
|
if drop > 0:
|
|
469
516
|
live_lines = live_lines[drop:]
|
|
470
517
|
|
|
471
|
-
|
|
472
|
-
|
|
518
|
+
live_text_to_set = Text.from_ansi("".join(live_lines))
|
|
519
|
+
|
|
520
|
+
with self._synchronized_output():
|
|
521
|
+
if stable_chunk_to_print:
|
|
522
|
+
self.console.print(Text.from_ansi(stable_chunk_to_print), end="\n")
|
|
523
|
+
|
|
524
|
+
if final:
|
|
525
|
+
if self._live_sink is not None:
|
|
526
|
+
self._live_sink(None)
|
|
527
|
+
return
|
|
528
|
+
|
|
529
|
+
if live_text_to_set is not None and self._live_sink is not None:
|
|
530
|
+
self._live_sink(live_text_to_set)
|
|
473
531
|
|
|
474
532
|
elapsed = time.time() - start
|
|
475
533
|
self.min_delay = min(max(elapsed * 6, 1.0 / 30), 0.5)
|
klaude_code/ui/rich/theme.py
CHANGED
|
@@ -53,24 +53,24 @@ LIGHT_PALETTE = Palette(
|
|
|
53
53
|
grey2="#93a4b1",
|
|
54
54
|
grey3="#c4ced4",
|
|
55
55
|
grey_green="#96a096",
|
|
56
|
-
purple="#
|
|
56
|
+
purple="#5f5fb7",
|
|
57
57
|
lavender="#5f87af",
|
|
58
58
|
diff_add="#2e5a32 on #dafbe1",
|
|
59
59
|
diff_add_char="#2e5a32 on #aceebb",
|
|
60
60
|
diff_remove="#82071e on #ffecec",
|
|
61
61
|
diff_remove_char="#82071e on #ffcfcf",
|
|
62
62
|
code_theme="ansi_light",
|
|
63
|
-
code_background="#
|
|
64
|
-
green_background="#
|
|
65
|
-
blue_grey_background="#
|
|
66
|
-
cyan_background="#
|
|
67
|
-
green_sub_background="#
|
|
68
|
-
blue_sub_background="#
|
|
69
|
-
purple_background="#
|
|
70
|
-
orange_background="#
|
|
71
|
-
red_background="#
|
|
72
|
-
grey_background="#
|
|
73
|
-
yellow_background="#
|
|
63
|
+
code_background="#ebebeb",
|
|
64
|
+
green_background="#f0f7f1",
|
|
65
|
+
blue_grey_background="#f0f1f7",
|
|
66
|
+
cyan_background="#ecf7f7",
|
|
67
|
+
green_sub_background="#ecf7ec",
|
|
68
|
+
blue_sub_background="#ecf1f9",
|
|
69
|
+
purple_background="#f5ecf9",
|
|
70
|
+
orange_background="#f9f3ec",
|
|
71
|
+
red_background="#f9ecec",
|
|
72
|
+
grey_background="#f0f0f0",
|
|
73
|
+
yellow_background="#f9f9ec",
|
|
74
74
|
)
|
|
75
75
|
|
|
76
76
|
DARK_PALETTE = Palette(
|
|
@@ -93,7 +93,7 @@ DARK_PALETTE = Palette(
|
|
|
93
93
|
diff_remove="#ffcdd2 on #3d1f23",
|
|
94
94
|
diff_remove_char="#ffcdd2 on #7a3a42",
|
|
95
95
|
code_theme="ansi_dark",
|
|
96
|
-
code_background="#
|
|
96
|
+
code_background="#1a1f2a",
|
|
97
97
|
green_background="#23342c",
|
|
98
98
|
blue_grey_background="#313848",
|
|
99
99
|
cyan_background="#1a3333",
|
|
@@ -110,6 +110,9 @@ DARK_PALETTE = Palette(
|
|
|
110
110
|
class ThemeKey(str, Enum):
|
|
111
111
|
LINES = "lines"
|
|
112
112
|
|
|
113
|
+
# CODE
|
|
114
|
+
CODE_BACKGROUND = "code_background"
|
|
115
|
+
|
|
113
116
|
# PANEL
|
|
114
117
|
SUB_AGENT_RESULT_PANEL = "panel.sub_agent_result"
|
|
115
118
|
WRITE_MARKDOWN_PANEL = "panel.write_markdown"
|
|
@@ -224,6 +227,8 @@ def get_theme(theme: str | None = None) -> Themes:
|
|
|
224
227
|
app_theme=Theme(
|
|
225
228
|
styles={
|
|
226
229
|
ThemeKey.LINES.value: palette.grey3,
|
|
230
|
+
# CODE
|
|
231
|
+
ThemeKey.CODE_BACKGROUND.value: f"on {palette.code_background}",
|
|
227
232
|
# PANEL
|
|
228
233
|
ThemeKey.SUB_AGENT_RESULT_PANEL.value: f"on {palette.blue_grey_background}",
|
|
229
234
|
ThemeKey.WRITE_MARKDOWN_PANEL.value: f"on {palette.green_background}",
|
|
@@ -260,7 +265,7 @@ def get_theme(theme: str | None = None) -> Themes:
|
|
|
260
265
|
ThemeKey.STATUS_HINT.value: palette.grey2,
|
|
261
266
|
# REMINDER
|
|
262
267
|
ThemeKey.REMINDER.value: palette.grey1,
|
|
263
|
-
ThemeKey.REMINDER_BOLD.value:
|
|
268
|
+
ThemeKey.REMINDER_BOLD.value: palette.grey1,
|
|
264
269
|
# TOOL
|
|
265
270
|
ThemeKey.INVALID_TOOL_CALL_ARGS.value: palette.yellow,
|
|
266
271
|
ThemeKey.TOOL_NAME.value: "bold",
|
|
@@ -268,13 +273,13 @@ def get_theme(theme: str | None = None) -> Themes:
|
|
|
268
273
|
ThemeKey.TOOL_PARAM.value: palette.green,
|
|
269
274
|
ThemeKey.TOOL_PARAM_BOLD.value: "bold " + palette.green,
|
|
270
275
|
ThemeKey.TOOL_RESULT.value: palette.grey_green,
|
|
271
|
-
ThemeKey.TOOL_RESULT_TREE_PREFIX.value: palette.
|
|
276
|
+
ThemeKey.TOOL_RESULT_TREE_PREFIX.value: palette.grey3 + " dim",
|
|
272
277
|
ThemeKey.TOOL_RESULT_BOLD.value: "bold " + palette.grey_green,
|
|
273
|
-
ThemeKey.TOOL_RESULT_TRUNCATED.value: palette.
|
|
278
|
+
ThemeKey.TOOL_RESULT_TRUNCATED.value: palette.grey1,
|
|
274
279
|
ThemeKey.TOOL_MARK.value: "bold",
|
|
275
280
|
ThemeKey.TOOL_APPROVED.value: palette.green + " bold reverse",
|
|
276
281
|
ThemeKey.TOOL_REJECTED.value: palette.red + " bold reverse",
|
|
277
|
-
ThemeKey.TOOL_TIMEOUT.value: palette.
|
|
282
|
+
ThemeKey.TOOL_TIMEOUT.value: palette.grey2,
|
|
278
283
|
ThemeKey.TOOL_RESULT_MERMAID: palette.blue + " underline",
|
|
279
284
|
ThemeKey.SUB_AGENT_FOOTER.value: "dim " + palette.grey2,
|
|
280
285
|
# BASH SYNTAX
|
|
@@ -238,9 +238,31 @@ def _build_choices_tokens[T](
|
|
|
238
238
|
return tokens
|
|
239
239
|
|
|
240
240
|
|
|
241
|
-
def _build_rounded_frame(body: Container) -> HSplit:
|
|
241
|
+
def _build_rounded_frame(body: Container, *, padding_x: int = 0, padding_y: int = 0) -> HSplit:
|
|
242
242
|
"""Build a rounded border frame around the given container."""
|
|
243
243
|
border = partial(Window, style="class:frame.border", height=1)
|
|
244
|
+
pad = partial(Window, style="class:frame", char=" ", always_hide_cursor=Always())
|
|
245
|
+
|
|
246
|
+
inner: Container = body
|
|
247
|
+
if padding_y > 0:
|
|
248
|
+
inner = HSplit(
|
|
249
|
+
[
|
|
250
|
+
pad(height=padding_y, dont_extend_height=Always()),
|
|
251
|
+
body,
|
|
252
|
+
pad(height=padding_y, dont_extend_height=Always()),
|
|
253
|
+
],
|
|
254
|
+
padding=0,
|
|
255
|
+
style="class:frame",
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
middle_children: list[Container] = [border(width=1, char="│")]
|
|
259
|
+
if padding_x > 0:
|
|
260
|
+
middle_children.append(pad(width=padding_x))
|
|
261
|
+
middle_children.append(inner)
|
|
262
|
+
if padding_x > 0:
|
|
263
|
+
middle_children.append(pad(width=padding_x))
|
|
264
|
+
middle_children.append(border(width=1, char="│"))
|
|
265
|
+
|
|
244
266
|
top = VSplit(
|
|
245
267
|
[
|
|
246
268
|
border(width=1, char="╭"),
|
|
@@ -250,14 +272,7 @@ def _build_rounded_frame(body: Container) -> HSplit:
|
|
|
250
272
|
height=1,
|
|
251
273
|
padding=0,
|
|
252
274
|
)
|
|
253
|
-
middle = VSplit(
|
|
254
|
-
[
|
|
255
|
-
border(width=1, char="│"),
|
|
256
|
-
body,
|
|
257
|
-
border(width=1, char="│"),
|
|
258
|
-
],
|
|
259
|
-
padding=0,
|
|
260
|
-
)
|
|
275
|
+
middle = VSplit(middle_children, padding=0)
|
|
261
276
|
bottom = VSplit(
|
|
262
277
|
[
|
|
263
278
|
border(width=1, char="╰"),
|
|
@@ -273,6 +288,8 @@ def _build_rounded_frame(body: Container) -> HSplit:
|
|
|
273
288
|
def _build_search_container(
|
|
274
289
|
search_buffer: Buffer,
|
|
275
290
|
search_placeholder: str,
|
|
291
|
+
*,
|
|
292
|
+
frame: bool = True,
|
|
276
293
|
) -> tuple[Window, Container]:
|
|
277
294
|
"""Build the search input container with placeholder."""
|
|
278
295
|
placeholder_text = f"{search_placeholder} · ↑↓ to select · esc to quit"
|
|
@@ -303,8 +320,10 @@ def _build_search_container(
|
|
|
303
320
|
content=input_window,
|
|
304
321
|
floats=[Float(content=placeholder_window, top=0, left=0)],
|
|
305
322
|
)
|
|
306
|
-
|
|
307
|
-
|
|
323
|
+
search_row: Container = VSplit([search_prefix_window, search_input_container], padding=0)
|
|
324
|
+
if frame:
|
|
325
|
+
return input_window, _build_rounded_frame(search_row)
|
|
326
|
+
return input_window, search_row
|
|
308
327
|
|
|
309
328
|
|
|
310
329
|
# ---------------------------------------------------------------------------
|
|
@@ -436,7 +455,7 @@ def select_one[T](
|
|
|
436
455
|
|
|
437
456
|
base_style = Style(
|
|
438
457
|
[
|
|
439
|
-
("frame.border", "fg:ansibrightblack"),
|
|
458
|
+
("frame.border", "fg:ansibrightblack dim"),
|
|
440
459
|
("frame.label", "fg:ansibrightblack italic"),
|
|
441
460
|
("search_prefix", "fg:ansibrightblack"),
|
|
442
461
|
("search_placeholder", "fg:ansibrightblack italic"),
|
|
@@ -619,17 +638,17 @@ class SelectOverlay[T]:
|
|
|
619
638
|
search_container: Container | None = None
|
|
620
639
|
if self._use_search_filter and self._search_buffer is not None:
|
|
621
640
|
self._search_input_window, search_container = _build_search_container(
|
|
622
|
-
self._search_buffer,
|
|
641
|
+
self._search_buffer,
|
|
642
|
+
self._search_placeholder,
|
|
643
|
+
frame=False,
|
|
623
644
|
)
|
|
624
645
|
|
|
625
646
|
root_children: list[Container] = [header_window, spacer_window, list_window]
|
|
626
647
|
if search_container is not None:
|
|
627
648
|
root_children.append(search_container)
|
|
628
649
|
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
filter=Condition(lambda: self._is_open),
|
|
632
|
-
)
|
|
650
|
+
framed_content = _build_rounded_frame(HSplit(root_children, padding=0), padding_x=1)
|
|
651
|
+
return ConditionalContainer(content=framed_content, filter=Condition(lambda: self._is_open))
|
|
633
652
|
|
|
634
653
|
@property
|
|
635
654
|
def is_open(self) -> bool:
|
|
@@ -13,44 +13,44 @@ klaude_code/auth/codex/token_manager.py,sha256=EiEdxEErh_mcnW8USWbvdbN91LK7nyk0P
|
|
|
13
13
|
klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
|
|
14
14
|
klaude_code/cli/auth_cmd.py,sha256=7Kuwe_ZWTCRYNHKpfV1aGgA-7rdnYsT800bDiKNv_uE,6068
|
|
15
15
|
klaude_code/cli/config_cmd.py,sha256=b-UnoeaJhPpt2LdhEMTFrW7CtfQF3_l6sDJwtAaQ3Pg,3392
|
|
16
|
-
klaude_code/cli/cost_cmd.py,sha256=
|
|
16
|
+
klaude_code/cli/cost_cmd.py,sha256=GHbtgqWJnDg_TffPgSMx51gr1V-xzC-btaCIjMvCg9Q,12467
|
|
17
17
|
klaude_code/cli/debug.py,sha256=cPQ7cgATcJTyBIboleW_Q4Pa_t-tGG6x-Hj3woeeuHE,2669
|
|
18
18
|
klaude_code/cli/list_model.py,sha256=3nYjw3l77eFqinGVZWt2yCurRPTrJlO1D8pv9pW8yA4,12793
|
|
19
19
|
klaude_code/cli/main.py,sha256=cMO47Hn6MiSyTVK992pJa2UVUR9tl7IQgj36N2ydlUY,13557
|
|
20
|
-
klaude_code/cli/runtime.py,sha256=
|
|
20
|
+
klaude_code/cli/runtime.py,sha256=HB0FislVFeQepopzicEvPPj4ygV-UtFiI7LHaCF2qto,19529
|
|
21
21
|
klaude_code/cli/self_update.py,sha256=Eo8bz3WrsmuMCGl1L7xMDI0Kk_os1E-rpM1fL2UVHZQ,8059
|
|
22
22
|
klaude_code/cli/session_cmd.py,sha256=Ki8AhkIsdnISVzTeOPbAJzgnwSbPQ0FtPoJG1wrmIQU,3199
|
|
23
23
|
klaude_code/command/__init__.py,sha256=IK2jz2SFMLVIcVzD5evKk3zWv6u1CjgCgfJXzWdvDlk,3470
|
|
24
24
|
klaude_code/command/clear_cmd.py,sha256=9zoCtYVtkfOqc9LxTdDe0lu7KmCTEEMh6hP_bFQj0RA,800
|
|
25
25
|
klaude_code/command/command_abc.py,sha256=d1i4QbFqWC5V4LPmofMHTxGrxNLwOWe-z_bUKoAmRiQ,2540
|
|
26
|
-
klaude_code/command/debug_cmd.py,sha256=
|
|
26
|
+
klaude_code/command/debug_cmd.py,sha256=PwiHloiGMeFQqH74SUAMdIqLG_V6hbHZCPI2z6lhSR8,2764
|
|
27
27
|
klaude_code/command/export_cmd.py,sha256=uTslAHoKvgi_YJns_UmPDZJ_3wMKgi-XnoKO6a9_7Gk,1627
|
|
28
|
-
klaude_code/command/export_online_cmd.py,sha256=
|
|
29
|
-
klaude_code/command/fork_session_cmd.py,sha256=
|
|
30
|
-
klaude_code/command/help_cmd.py,sha256=
|
|
31
|
-
klaude_code/command/model_cmd.py,sha256=
|
|
28
|
+
klaude_code/command/export_online_cmd.py,sha256=tI5katypHbZbFXnHEp9RMGkKmoOLl7FL05Oemy1ng20,6181
|
|
29
|
+
klaude_code/command/fork_session_cmd.py,sha256=Pi6zbi4VG7hZOO0KVC8Lo2OyyeuM7NwA2ElD0lwrWPU,10237
|
|
30
|
+
klaude_code/command/help_cmd.py,sha256=aAfR524lRo6qLovVJkqghELX_grUHoKR8tVZH1-WJdw,1696
|
|
31
|
+
klaude_code/command/model_cmd.py,sha256=rF8rj6zCFm64kYsCZ-5w6cw7C1iEI99v7MrM_F6sXhI,2986
|
|
32
32
|
klaude_code/command/model_select.py,sha256=bHfhmRk217_dLjcXs1j2UFq6ReNpqF4C_2rEfZSmrMk,3190
|
|
33
33
|
klaude_code/command/prompt-commit.md,sha256=6hv1lrf8SkwNp1ptw0wn8uNydg5uxgna88eUo6Uqr3w,2400
|
|
34
34
|
klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
|
|
35
35
|
klaude_code/command/prompt_command.py,sha256=zKBWVShD5AtsnLUjH3LC3UNMco2fb9jgMxkIFH3UT8A,2780
|
|
36
36
|
klaude_code/command/refresh_cmd.py,sha256=RAlWx6ZLJjnlbzFUjF0shXyW9yAWRBdJzaBZ7DXHU74,1296
|
|
37
|
-
klaude_code/command/registry.py,sha256=
|
|
38
|
-
klaude_code/command/release_notes_cmd.py,sha256=
|
|
39
|
-
klaude_code/command/resume_cmd.py,sha256=
|
|
40
|
-
klaude_code/command/status_cmd.py,sha256=
|
|
41
|
-
klaude_code/command/terminal_setup_cmd.py,sha256=
|
|
42
|
-
klaude_code/command/thinking_cmd.py,sha256=
|
|
37
|
+
klaude_code/command/registry.py,sha256=JwL-zTBn3RfOnxH_WRlIsx4PcUP_mLJ6L2t8m-dALu8,7284
|
|
38
|
+
klaude_code/command/release_notes_cmd.py,sha256=qv4DVVEFfvN4NPEKv-6NJztC_iNvbk6k1EJuPGSIfgU,2704
|
|
39
|
+
klaude_code/command/resume_cmd.py,sha256=V7dijyIeOdr7G_9XvdScrInXEF3ngMn1lxNd7FQ7Dx0,4263
|
|
40
|
+
klaude_code/command/status_cmd.py,sha256=zJ2UPhBQfh1bHSC97z9Pj4CMN-sR8TfB07LYgS97e_8,5435
|
|
41
|
+
klaude_code/command/terminal_setup_cmd.py,sha256=b3K1cyfPacVf_fDY2LLu6UzIg1ca2vM1_I5__Tt4djM,10928
|
|
42
|
+
klaude_code/command/thinking_cmd.py,sha256=WyNnjUx9s-jcjghILf-CvugEPfdoR0h-RgyctL-uPtM,3089
|
|
43
43
|
klaude_code/config/__init__.py,sha256=Qe1BeMekBfO2-Zd30x33lB70hdM1QQZGrp4DbWSQ-II,353
|
|
44
44
|
klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
|
|
45
|
-
klaude_code/config/assets/builtin_config.yaml,sha256=
|
|
45
|
+
klaude_code/config/assets/builtin_config.yaml,sha256=fXCvNZci7g7T6uUjDFq_lxTYAvszffsrpBeC41RZkb4,8214
|
|
46
46
|
klaude_code/config/builtin_config.py,sha256=1rHcFWmS0k6rXeIqR6sF_OgGXSbEd4ugh9bh2N6VSS0,1494
|
|
47
47
|
klaude_code/config/config.py,sha256=Oxh5uernxcS694RMwi_pdmhMj4mDQm5hiWMGV0ZXNj0,18211
|
|
48
48
|
klaude_code/config/select_model.py,sha256=PPbQ-BAJkwXPINBcCSPAlZjiXm4rEtg2y0hPnZE8Bnc,5183
|
|
49
49
|
klaude_code/config/thinking.py,sha256=1FFN9UgPVEFyTzahTvNOM5Y4b8Bo7G1jIc93xjX3Uvk,9323
|
|
50
|
-
klaude_code/const.py,sha256=
|
|
50
|
+
klaude_code/const.py,sha256=PFkpHYgx27rCKFw10i_nhVpAB5zi-efNTxpYhuTPdyg,10617
|
|
51
51
|
klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
klaude_code/core/agent.py,sha256=rmNuMDuEGRAX_XGEQeyNvfyRPKRsHItN1Bw8WRZBTqc,5291
|
|
53
|
-
klaude_code/core/executor.py,sha256=
|
|
53
|
+
klaude_code/core/executor.py,sha256=3errUXJN72ra_RtoY2N-vUaYhWcIsAe7oSs9IAaGlYg,27721
|
|
54
54
|
klaude_code/core/manager/__init__.py,sha256=hdIbpnYj6i18byiWjtJIm5l7NYYDQMvafw8fePVPydc,562
|
|
55
55
|
klaude_code/core/manager/llm_clients.py,sha256=X2oMFWgJcP0tK8GEtMMDYR3HyR6_H8FuyCqpzWF5x2k,871
|
|
56
56
|
klaude_code/core/manager/llm_clients_builder.py,sha256=vvNV6hSpWtUCMZORQN6OfFWyA_3OAOGS5SFGy6oaKMs,1641
|
|
@@ -66,9 +66,9 @@ klaude_code/core/prompts/prompt-sub-agent-explore.md,sha256=21kFodjhvN0L-c_ZFo4y
|
|
|
66
66
|
klaude_code/core/prompts/prompt-sub-agent-image-gen.md,sha256=tXYKSzFd04OiC0dmVO9suMKeD5f9qo_4NsvqGo7irfI,78
|
|
67
67
|
klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=n7fcIs26Xnu_CvHda_S_k5LGTpV3njY04yo88FT_S9A,3602
|
|
68
68
|
klaude_code/core/prompts/prompt-sub-agent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
|
|
69
|
-
klaude_code/core/reminders.py,sha256=
|
|
69
|
+
klaude_code/core/reminders.py,sha256=lxSy4NgsKSoPTl0R39Txuqsr-EIJdVRprPVThCieuEQ,25259
|
|
70
70
|
klaude_code/core/task.py,sha256=PdzC8XEsDNbBSMamrxbj9oHPWfQGwynygeMiW8HIWUA,11852
|
|
71
|
-
klaude_code/core/tool/__init__.py,sha256=
|
|
71
|
+
klaude_code/core/tool/__init__.py,sha256=fOEwgJMGHT8NkYYE6l1FZ0fDRUmHzC6laA8wESo9j60,1939
|
|
72
72
|
klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
73
|
klaude_code/core/tool/file/_utils.py,sha256=OG4BE9WyJqzH8ilVCL3D9yvAcHk-r-L9snd-E8gO_io,967
|
|
74
74
|
klaude_code/core/tool/file/apply_patch.py,sha256=LZd3pYQ9ow_TxiFnqYuzD216HmvkLX6lW6BoMd9iQRs,17080
|
|
@@ -76,9 +76,7 @@ klaude_code/core/tool/file/apply_patch_tool.md,sha256=KVDsjUiLDa97gym0NrZNVG4jA1
|
|
|
76
76
|
klaude_code/core/tool/file/apply_patch_tool.py,sha256=bHj4dHyeJ_2Y0f9jBrZ28DB9bD5jYIue4f-TPau7l5o,8123
|
|
77
77
|
klaude_code/core/tool/file/diff_builder.py,sha256=d3n0RYBuhOD3yophmqNw4ok-da2kxerNixcTf_IXJHk,5911
|
|
78
78
|
klaude_code/core/tool/file/edit_tool.md,sha256=rEcUjJuPC46t1nXWjTDxplDcxWDbzTWsr6_bYt5_aRI,1110
|
|
79
|
-
klaude_code/core/tool/file/edit_tool.py,sha256=
|
|
80
|
-
klaude_code/core/tool/file/move_tool.md,sha256=vG5tpr-48ylcEh6KLAv0bP4nZKIJbpo4oaZYATNfb0g,1432
|
|
81
|
-
klaude_code/core/tool/file/move_tool.py,sha256=5KeKgL2NYQ69eC0HP1YrHgXMCR1MMaexC-kE2qoqnpk,18442
|
|
79
|
+
klaude_code/core/tool/file/edit_tool.py,sha256=xwFypH8FhC9AVMT4r8BDe8stufwFGGY-LcMT3_OcGbw,11157
|
|
82
80
|
klaude_code/core/tool/file/read_tool.md,sha256=74SLSl1tq3L0por73M0QV_ws41MRIvGXQpfLb8dmtp0,1351
|
|
83
81
|
klaude_code/core/tool/file/read_tool.py,sha256=U_g6Syk7mgM8C267JCKQMtTfLEd1rSlaBgl0pwaWURQ,13111
|
|
84
82
|
klaude_code/core/tool/file/write_tool.md,sha256=CNnYgtieUasuHdpXLDpTEsqe492Pf7v75M4RQ3oIer8,613
|
|
@@ -94,13 +92,13 @@ klaude_code/core/tool/skill/skill_tool.py,sha256=5YL3wCdwQ8_NJ0fM34y4UNRJk84PZQb
|
|
|
94
92
|
klaude_code/core/tool/sub_agent_tool.py,sha256=LRMkVOZo6ldcrhstF1t6959XhxRZtUfSgh8g_-8xOOE,4628
|
|
95
93
|
klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
94
|
klaude_code/core/tool/todo/todo_write_tool.md,sha256=BFP9qIkzkakzskHwIOPVtDhehkh0F90A5oosyDuC_BE,1682
|
|
97
|
-
klaude_code/core/tool/todo/todo_write_tool.py,sha256=
|
|
95
|
+
klaude_code/core/tool/todo/todo_write_tool.py,sha256=AItmUtRJJD0kOgwXa8zeJRYF-4zcHIwPYpnZGEnohPI,4454
|
|
98
96
|
klaude_code/core/tool/todo/todo_write_tool_raw.md,sha256=AJ2OkZGcccQYDXkydPAr5JI2SExBF8qJd0rXsHySLps,9711
|
|
99
97
|
klaude_code/core/tool/todo/update_plan_tool.md,sha256=OoEF4voHHd5J3VDv7tq3UCHdXApkBvxdHXUf5tVOkE8,157
|
|
100
98
|
klaude_code/core/tool/todo/update_plan_tool.py,sha256=S_Kuw3l39Ux-eP6Cv4e3gXGeNmruLI6Xk1D1VQ7Oob8,3838
|
|
101
99
|
klaude_code/core/tool/tool_abc.py,sha256=dLFRDIkdklL8rccb4RszJ3n92dZstT4zwFCjL7FeXq8,1186
|
|
102
100
|
klaude_code/core/tool/tool_context.py,sha256=cr2oDty3k6QFJ6VQ9aAq76XrMgCJGs6WDFBgzeHfPks,5068
|
|
103
|
-
klaude_code/core/tool/tool_registry.py,sha256=
|
|
101
|
+
klaude_code/core/tool/tool_registry.py,sha256=VFB0Z4BWtYKIWtpZVGhjSLcgfK244gow_UYZn1IcJQY,2642
|
|
104
102
|
klaude_code/core/tool/tool_runner.py,sha256=-25-C2dOA06fmTgRtfKiyGijtq_Wy9V_KrxA9JyrU04,12873
|
|
105
103
|
klaude_code/core/tool/truncation.py,sha256=LEK7mgGQ3f08vgouviIcVr53xptiRJAyhgQa0ALITJk,7691
|
|
106
104
|
klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -143,18 +141,18 @@ klaude_code/llm/responses/input.py,sha256=BYZFBh6qa85pQjVrHds9q3A_aMfhSN2GB0e7VX
|
|
|
143
141
|
klaude_code/llm/usage.py,sha256=Hukt4hKGUb2EnmwGy2-1Ku0oxEI6J7gOU0EsOSBBJAk,5034
|
|
144
142
|
klaude_code/protocol/__init__.py,sha256=TTPnuyQ22RypoTGKdoiS7ZEgHzinuaRHUrauzHDh7Xo,246
|
|
145
143
|
klaude_code/protocol/commands.py,sha256=4tFt98CD_KvS9C-XEaHLN-S-QFsbDxQb_kGKnPkQlrk,958
|
|
146
|
-
klaude_code/protocol/events.py,sha256=
|
|
144
|
+
klaude_code/protocol/events.py,sha256=jHJkrjUmD5vtP7edjz2T2d_oG14Dagba6Q3PG_0F2mQ,4234
|
|
147
145
|
klaude_code/protocol/llm_param.py,sha256=nyk5bW3AF8KziDawcImwDLiFiv07bu1ci62TslWxUkg,5161
|
|
148
|
-
klaude_code/protocol/message.py,sha256=
|
|
149
|
-
klaude_code/protocol/model.py,sha256=
|
|
150
|
-
klaude_code/protocol/op.py,sha256=
|
|
151
|
-
klaude_code/protocol/op_handler.py,sha256=
|
|
146
|
+
klaude_code/protocol/message.py,sha256=gG9GSr4Tysafe7Rl93LZ-xJnqkfn9rFaUEbAG6_H5gE,6208
|
|
147
|
+
klaude_code/protocol/model.py,sha256=tBwvGlmsI_GPsYrCuk5-QHqC-v0UgBSdm9UjEPOvTiM,10805
|
|
148
|
+
klaude_code/protocol/op.py,sha256=CEANh8tO0opdgcdtYtrMHPC0UmhpKtSKtzUY5pv-m5A,5297
|
|
149
|
+
klaude_code/protocol/op_handler.py,sha256=NgQWyLZwPqRRH93hMvPH-TCK8YbLeDpnKeNVnlt27_o,1765
|
|
152
150
|
klaude_code/protocol/sub_agent/__init__.py,sha256=KkSdKAD45DERZoMS7zyTg0AWPgVmK-po0uv5rt_d-zE,3972
|
|
153
|
-
klaude_code/protocol/sub_agent/explore.py,sha256=
|
|
151
|
+
klaude_code/protocol/sub_agent/explore.py,sha256=beDpcPFUds54JLhQyVEpuhVp5xm5hRnkp6F3gMCIvw8,2712
|
|
154
152
|
klaude_code/protocol/sub_agent/image_gen.py,sha256=e2iRpGnWUHdZw96wC-f-Ik8HXYnvxTqQRqWXhNtUv2E,4812
|
|
155
|
-
klaude_code/protocol/sub_agent/task.py,sha256=
|
|
156
|
-
klaude_code/protocol/sub_agent/web.py,sha256=
|
|
157
|
-
klaude_code/protocol/tools.py,sha256=
|
|
153
|
+
klaude_code/protocol/sub_agent/task.py,sha256=96XHxbySu_zdM2K6WjlkPFGXoVDVrLiK2hew1cmwGS4,4290
|
|
154
|
+
klaude_code/protocol/sub_agent/web.py,sha256=XZEfY-bKhpw9RZPkrcohLQDMufQITeeweW7ZOHgk2Ao,3200
|
|
155
|
+
klaude_code/protocol/tools.py,sha256=OpGCr47ARKaCHcIlljhEN-p-2h4djgbP5jtfTIoKB-A,359
|
|
158
156
|
klaude_code/session/__init__.py,sha256=4sw81uQvEd3YUOOjamKk1KqGmxeb4Ic9T1Tee5zztyU,241
|
|
159
157
|
klaude_code/session/codec.py,sha256=fTtaS20H5G6M7k7vufg55c88ZGAblhFk9xGAm3CvWT0,2007
|
|
160
158
|
klaude_code/session/export.py,sha256=Oa0BdrqipFGkGp62dAsvQ-bPQr0HFAQBpAb7OmgaNno,38926
|
|
@@ -183,47 +181,47 @@ klaude_code/ui/modes/__init__.py,sha256=ByDPbyYYU4o5kdnEes3b1VEV173RI9XAXyzkFbrA
|
|
|
183
181
|
klaude_code/ui/modes/debug/__init__.py,sha256=1-1tAk7FtENdYzExSttYdHiJ-qH3DIQ5yYJ51ms2uSg,13
|
|
184
182
|
klaude_code/ui/modes/debug/display.py,sha256=eY42OaT6h-AsfdCbTb_yALvEMkl6QV55K7nseXeABaU,1113
|
|
185
183
|
klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJd3yhVf_k,12
|
|
186
|
-
klaude_code/ui/modes/exec/display.py,sha256=
|
|
184
|
+
klaude_code/ui/modes/exec/display.py,sha256=o3-YIiK5wFI3ogfSJ6HHIWyJOomymoWKpMq2fHO2PAQ,1884
|
|
187
185
|
klaude_code/ui/modes/repl/__init__.py,sha256=_0II73jlz5JUtvJsZ9sGRJzeHIQyJJpaI0egvmryYNw,286
|
|
188
186
|
klaude_code/ui/modes/repl/clipboard.py,sha256=HjThFB9MG_YdJ76CQv7B-IUoz5JarbWUZDbUVkH1LpY,5106
|
|
189
187
|
klaude_code/ui/modes/repl/completers.py,sha256=sUcG946XIt5yoSXD1GV7Ks-ltH-PDWJ4Z5Vd68zPPo0,32577
|
|
190
|
-
klaude_code/ui/modes/repl/display.py,sha256=
|
|
191
|
-
klaude_code/ui/modes/repl/event_handler.py,sha256=
|
|
192
|
-
klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=
|
|
193
|
-
klaude_code/ui/modes/repl/key_bindings.py,sha256=
|
|
194
|
-
klaude_code/ui/modes/repl/renderer.py,sha256=
|
|
188
|
+
klaude_code/ui/modes/repl/display.py,sha256=RzkUljpYBnNcV4TNwoxDaXUIN5soT9e96MO88q_mHP4,2326
|
|
189
|
+
klaude_code/ui/modes/repl/event_handler.py,sha256=Tcp0Xg5oyNh5nLnon7VGmGcJbl0kme296tcqc3315lI,25012
|
|
190
|
+
klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=b_Wvzyweu6I8y4Wktq_10YO0nk6ZFwaEESrF1DfIgbY,27232
|
|
191
|
+
klaude_code/ui/modes/repl/key_bindings.py,sha256=2uN48J1HRHeCBqq7WrH5J82NIU59oQscce0HquAiYCI,18876
|
|
192
|
+
klaude_code/ui/modes/repl/renderer.py,sha256=rS_sGauPC9iztKTB3Hn5j-LaDHONjpQFoB42NG_pMxc,20215
|
|
195
193
|
klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
196
194
|
klaude_code/ui/renderers/assistant.py,sha256=8_lonaFRi0FFDr3aVherNEYmnAQ8XM7B-oCUhKgHo-g,878
|
|
197
|
-
klaude_code/ui/renderers/bash_syntax.py,sha256=
|
|
198
|
-
klaude_code/ui/renderers/common.py,sha256=
|
|
199
|
-
klaude_code/ui/renderers/developer.py,sha256=
|
|
195
|
+
klaude_code/ui/renderers/bash_syntax.py,sha256=fQmhQZBUA3RopkNAaaurkEOUX052EtPrW0LLpgBUUT4,7406
|
|
196
|
+
klaude_code/ui/renderers/common.py,sha256=OveWF3zTO2woOADw_iFOa7N6wAMmtC0nWI96qsVQVd4,4636
|
|
197
|
+
klaude_code/ui/renderers/developer.py,sha256=xAB9I3hjPnqAdu4hL2SYzzJZfSjmOJXViccVc-0ePuM,10007
|
|
200
198
|
klaude_code/ui/renderers/diffs.py,sha256=NLEz3I8MNfZmEcSEs_Di7FBVumbkzJU6jtxqepxYN94,10397
|
|
201
199
|
klaude_code/ui/renderers/errors.py,sha256=MavmYOQ7lyjA_VpuUpDVFCuY9W7XrMVdLsg2lCOn4GY,655
|
|
202
200
|
klaude_code/ui/renderers/mermaid_viewer.py,sha256=MstufMnTauMKzI8cKngXpFqVo-qya20P8ReNkplYtEw,3098
|
|
203
|
-
klaude_code/ui/renderers/metadata.py,sha256=
|
|
201
|
+
klaude_code/ui/renderers/metadata.py,sha256=tHaKAV9y3LXKiDLeYIl9dLRBK2BWnc5iZhte1ySl8Qk,9396
|
|
204
202
|
klaude_code/ui/renderers/sub_agent.py,sha256=oXR5UjmvkoADgTeh8W3QG7RJfI0LU0W-Xej2y5xtCFs,7711
|
|
205
203
|
klaude_code/ui/renderers/thinking.py,sha256=puUjuM3g4tYiSM9iEUty57mpD8a_pNFeeyn55LD-miQ,2864
|
|
206
|
-
klaude_code/ui/renderers/tools.py,sha256=
|
|
204
|
+
klaude_code/ui/renderers/tools.py,sha256=AUMdMMbmfSzDJZgitAzZ8XDzoroD9ZenGNGx0PpK_iE,26365
|
|
207
205
|
klaude_code/ui/renderers/user_input.py,sha256=OPHVOZsCefIRVpgl6WMBFusc3Vwyr1fk5ilFaQ64AqU,4500
|
|
208
206
|
klaude_code/ui/rich/__init__.py,sha256=zEZjnHR3Fnv_sFMxwIMjoJfwDoC4GRGv3lHJzAGRq_o,236
|
|
209
207
|
klaude_code/ui/rich/cjk_wrap.py,sha256=ncmifgTwF6q95iayHQyazGbntt7BRQb_Ed7aXc8JU6Y,7551
|
|
210
208
|
klaude_code/ui/rich/code_panel.py,sha256=ZKuJHh-kh-hIkBXSGLERLaDbJ7I9hvtvmYKocJn39_w,4744
|
|
211
209
|
klaude_code/ui/rich/live.py,sha256=xiMT6dPsxM_jaazddKrV9CMJQWwpe2t9OdjffHvo1JU,2821
|
|
212
|
-
klaude_code/ui/rich/markdown.py,sha256=
|
|
210
|
+
klaude_code/ui/rich/markdown.py,sha256=wddACuPlM4v_mxZZftjJaT5qXzdO_ol3uyTVs_gBBd8,20045
|
|
213
211
|
klaude_code/ui/rich/quote.py,sha256=gTLwxSPQd9nlp73P1ysQIEgOb-BoTE2gzyiPBLMiHcY,3834
|
|
214
212
|
klaude_code/ui/rich/searchable_text.py,sha256=PUe6MotKxSBY4FlPeojVjVQgxCsx_jiQ41bCzLp8WvE,2271
|
|
215
213
|
klaude_code/ui/rich/status.py,sha256=HZdp5aXLC6RfJy7IFszCKsEn9_u8S6XygWsFPFuzFyU,13307
|
|
216
|
-
klaude_code/ui/rich/theme.py,sha256=
|
|
214
|
+
klaude_code/ui/rich/theme.py,sha256=ebX-M-L8_HPITu6Q5t_we81yT3W9FDOblEyyEjHNAR4,14926
|
|
217
215
|
klaude_code/ui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
|
|
218
216
|
klaude_code/ui/terminal/color.py,sha256=jvVbuysf5pnI0uAjUVeyW2HwU58dutTg2msykbu2w4Y,7197
|
|
219
217
|
klaude_code/ui/terminal/control.py,sha256=WhkqEWdtzUO4iWULp-iI9VazAWmzzW52qTQXk-4Dr4s,4922
|
|
220
218
|
klaude_code/ui/terminal/image.py,sha256=ytzmw1J3fmaq49nWTDRmK_7aMIGbdUPCtVccSpVRHxY,1195
|
|
221
219
|
klaude_code/ui/terminal/notifier.py,sha256=U3WcFYSO8CXAB3SESfE5q1dCkBDm9HGbg6QiAo-UhIg,4645
|
|
222
220
|
klaude_code/ui/terminal/progress_bar.py,sha256=Go-0_ZodrmJVaQodaPnyxVU2nkpkBaYLnZBqwAUQukE,2133
|
|
223
|
-
klaude_code/ui/terminal/selector.py,sha256
|
|
221
|
+
klaude_code/ui/terminal/selector.py,sha256=QPddET-LfSU4we7NLHk17CqTWPKd6CQ0kj1Ire_WM3Q,24398
|
|
224
222
|
klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlshyOQ,15
|
|
225
223
|
klaude_code/ui/utils/common.py,sha256=FA1koSH8egLBT2Pb_D065gfK7u6-wTuGA9_WRembX3s,4249
|
|
226
|
-
klaude_code-2.0.
|
|
227
|
-
klaude_code-2.0.
|
|
228
|
-
klaude_code-2.0.
|
|
229
|
-
klaude_code-2.0.
|
|
224
|
+
klaude_code-2.0.2.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
225
|
+
klaude_code-2.0.2.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
|
|
226
|
+
klaude_code-2.0.2.dist-info/METADATA,sha256=QfsZnwwLDPSfv1crrucB29OYDjllR7m8GsnvOuzVDGQ,12782
|
|
227
|
+
klaude_code-2.0.2.dist-info/RECORD,,
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
Moves a range of lines from one file to another.
|
|
2
|
-
|
|
3
|
-
Usage:
|
|
4
|
-
- Cuts lines from `start_line` to `end_line` (inclusive, 1-indexed) from the source file
|
|
5
|
-
- Pastes them into the target file at `insert_line` (inserted before that line)
|
|
6
|
-
- Both files must have been read first using the Read tool
|
|
7
|
-
- To create a new target file, set `insert_line` to 1 and ensure target file does not exist
|
|
8
|
-
- For same-file moves, line numbers refer to the original file state before any changes
|
|
9
|
-
- Use this tool when refactoring code into separate modules to avoid passing large code blocks twice
|
|
10
|
-
- To move files or directories, use the Bash tool with `mv` command instead
|
|
11
|
-
|
|
12
|
-
Return format:
|
|
13
|
-
The tool returns context snippets showing the state after the operation:
|
|
14
|
-
|
|
15
|
-
1. Source file context (after cut): Shows 3 lines before and after the cut location
|
|
16
|
-
2. Target file context (after insert): Shows 3 lines before the inserted content, the inserted content itself, and 3 lines after
|
|
17
|
-
|
|
18
|
-
Example output:
|
|
19
|
-
```
|
|
20
|
-
Cut 8 lines from /path/source.py (lines 9-16) and pasted into /path/target.py (updated) at line 10.
|
|
21
|
-
|
|
22
|
-
Source file context (after cut):
|
|
23
|
-
6 return value
|
|
24
|
-
7
|
|
25
|
-
8
|
|
26
|
-
-------- cut here --------
|
|
27
|
-
9 class NextClass:
|
|
28
|
-
10 pass
|
|
29
|
-
11
|
|
30
|
-
|
|
31
|
-
Target file context (after insert):
|
|
32
|
-
7 return {}
|
|
33
|
-
8
|
|
34
|
-
9
|
|
35
|
-
-------- inserted --------
|
|
36
|
-
10 class MovedClass:
|
|
37
|
-
...
|
|
38
|
-
17 return result
|
|
39
|
-
-------- end --------
|
|
40
|
-
18 # Next section
|
|
41
|
-
```
|