klaude-code 2.5.2__py3-none-any.whl → 2.6.0__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/auth/__init__.py +10 -0
- klaude_code/auth/env.py +77 -0
- klaude_code/cli/auth_cmd.py +89 -21
- klaude_code/cli/config_cmd.py +5 -5
- klaude_code/cli/cost_cmd.py +167 -68
- klaude_code/cli/main.py +51 -27
- klaude_code/cli/self_update.py +7 -7
- klaude_code/config/assets/builtin_config.yaml +45 -24
- klaude_code/config/builtin_config.py +23 -9
- klaude_code/config/config.py +19 -9
- klaude_code/config/model_matcher.py +1 -1
- klaude_code/const.py +2 -1
- klaude_code/core/tool/file/edit_tool.py +1 -1
- klaude_code/core/tool/file/read_tool.py +2 -2
- klaude_code/core/tool/file/write_tool.py +1 -1
- klaude_code/core/turn.py +21 -4
- klaude_code/llm/anthropic/client.py +75 -50
- klaude_code/llm/anthropic/input.py +20 -9
- klaude_code/llm/google/client.py +235 -148
- klaude_code/llm/google/input.py +44 -36
- klaude_code/llm/openai_compatible/stream.py +114 -100
- klaude_code/llm/openrouter/client.py +1 -0
- klaude_code/llm/openrouter/reasoning.py +4 -29
- klaude_code/llm/partial_message.py +2 -32
- klaude_code/llm/responses/client.py +99 -81
- klaude_code/llm/responses/input.py +11 -25
- klaude_code/llm/stream_parts.py +94 -0
- klaude_code/log.py +57 -0
- klaude_code/protocol/events.py +214 -0
- klaude_code/protocol/sub_agent/image_gen.py +0 -4
- klaude_code/session/session.py +51 -18
- klaude_code/tui/command/fork_session_cmd.py +14 -23
- klaude_code/tui/command/model_picker.py +2 -17
- klaude_code/tui/command/resume_cmd.py +2 -18
- klaude_code/tui/command/sub_agent_model_cmd.py +5 -19
- klaude_code/tui/command/thinking_cmd.py +2 -14
- klaude_code/tui/commands.py +0 -5
- klaude_code/tui/components/common.py +1 -1
- klaude_code/tui/components/metadata.py +21 -21
- klaude_code/tui/components/rich/quote.py +36 -8
- klaude_code/tui/components/rich/theme.py +2 -0
- klaude_code/tui/components/sub_agent.py +6 -0
- klaude_code/tui/display.py +11 -1
- klaude_code/tui/input/completers.py +11 -7
- klaude_code/tui/input/prompt_toolkit.py +3 -1
- klaude_code/tui/machine.py +108 -56
- klaude_code/tui/renderer.py +4 -65
- klaude_code/tui/terminal/selector.py +174 -31
- {klaude_code-2.5.2.dist-info → klaude_code-2.6.0.dist-info}/METADATA +23 -31
- {klaude_code-2.5.2.dist-info → klaude_code-2.6.0.dist-info}/RECORD +52 -58
- klaude_code/cli/session_cmd.py +0 -96
- klaude_code/protocol/events/__init__.py +0 -63
- klaude_code/protocol/events/base.py +0 -18
- klaude_code/protocol/events/chat.py +0 -30
- klaude_code/protocol/events/lifecycle.py +0 -23
- klaude_code/protocol/events/metadata.py +0 -16
- klaude_code/protocol/events/streaming.py +0 -43
- klaude_code/protocol/events/system.py +0 -56
- klaude_code/protocol/events/tools.py +0 -27
- {klaude_code-2.5.2.dist-info → klaude_code-2.6.0.dist-info}/WHEEL +0 -0
- {klaude_code-2.5.2.dist-info → klaude_code-2.6.0.dist-info}/entry_points.txt +0 -0
|
@@ -18,17 +18,35 @@ from prompt_toolkit.layout import ConditionalContainer, Float, FloatContainer, H
|
|
|
18
18
|
from prompt_toolkit.layout.containers import Container, ScrollOffsets
|
|
19
19
|
from prompt_toolkit.layout.controls import BufferControl, FormattedTextControl
|
|
20
20
|
from prompt_toolkit.styles import Style, merge_styles
|
|
21
|
+
from prompt_toolkit.styles.base import BaseStyle
|
|
21
22
|
|
|
22
23
|
from klaude_code.ui.common import format_model_params
|
|
23
24
|
|
|
25
|
+
DEFAULT_PICKER_STYLE = Style(
|
|
26
|
+
[
|
|
27
|
+
("pointer", "ansigreen"),
|
|
28
|
+
("highlighted", "ansigreen"),
|
|
29
|
+
("msg", ""),
|
|
30
|
+
("meta", "fg:ansibrightblack"),
|
|
31
|
+
("text", "ansibrightblack"),
|
|
32
|
+
("question", "bold"),
|
|
33
|
+
("search_prefix", "ansibrightblack"),
|
|
34
|
+
# Search filter colors at the bottom (currently unused by selector, but
|
|
35
|
+
# kept for consistency with picker style defaults).
|
|
36
|
+
("search_success", "noinherit fg:ansigreen"),
|
|
37
|
+
("search_none", "noinherit fg:ansired"),
|
|
38
|
+
]
|
|
39
|
+
)
|
|
40
|
+
|
|
24
41
|
|
|
25
42
|
@dataclass(frozen=True, slots=True)
|
|
26
43
|
class SelectItem[T]:
|
|
27
44
|
"""One selectable item for terminal selection UI."""
|
|
28
45
|
|
|
29
46
|
title: list[tuple[str, str]]
|
|
30
|
-
value: T
|
|
47
|
+
value: T | None
|
|
31
48
|
search_text: str
|
|
49
|
+
selectable: bool = True
|
|
32
50
|
|
|
33
51
|
|
|
34
52
|
# ---------------------------------------------------------------------------
|
|
@@ -43,7 +61,7 @@ def build_model_select_items(models: list[Any]) -> list[SelectItem[str]]:
|
|
|
43
61
|
models: List of ModelEntry objects (from config.iter_model_entries).
|
|
44
62
|
|
|
45
63
|
Returns:
|
|
46
|
-
List of SelectItem[str] with
|
|
64
|
+
List of SelectItem[str] with model selector as the value.
|
|
47
65
|
"""
|
|
48
66
|
if not models:
|
|
49
67
|
return []
|
|
@@ -51,22 +69,64 @@ def build_model_select_items(models: list[Any]) -> list[SelectItem[str]]:
|
|
|
51
69
|
max_model_name_length = max(len(m.model_name) for m in models)
|
|
52
70
|
num_width = len(str(len(models)))
|
|
53
71
|
|
|
72
|
+
# Group models by provider in stable insertion order.
|
|
73
|
+
# This keeps per-provider model order intact while making the list easier to scan.
|
|
74
|
+
grouped: dict[str, list[Any]] = {}
|
|
75
|
+
for m in models:
|
|
76
|
+
provider = str(getattr(m, "provider", ""))
|
|
77
|
+
grouped.setdefault(provider, []).append(m)
|
|
78
|
+
|
|
79
|
+
# Calculate max header width for alignment
|
|
80
|
+
max_header_len = max(len(f"{p.upper()} ({len(ms)})") for p, ms in grouped.items())
|
|
81
|
+
|
|
54
82
|
items: list[SelectItem[str]] = []
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
83
|
+
model_idx = 0
|
|
84
|
+
separator_base_len = 40
|
|
85
|
+
for provider, provider_models in grouped.items():
|
|
86
|
+
provider_text = provider.lower()
|
|
87
|
+
count_text = f"({len(provider_models)})"
|
|
88
|
+
header_len = len(provider_text) + 1 + len(count_text)
|
|
89
|
+
separator_len = separator_base_len + max_header_len - header_len
|
|
90
|
+
separator = "─" * separator_len
|
|
91
|
+
items.append(
|
|
92
|
+
SelectItem(
|
|
93
|
+
title=[
|
|
94
|
+
("class:meta ansiyellow", provider_text + " "),
|
|
95
|
+
("class:meta ansibrightblack", count_text + " "),
|
|
96
|
+
("class:meta ansibrightblack dim", separator),
|
|
97
|
+
("class:meta", "\n"),
|
|
98
|
+
],
|
|
99
|
+
value=None,
|
|
100
|
+
search_text=provider,
|
|
101
|
+
selectable=False,
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
for m in provider_models:
|
|
106
|
+
model_idx += 1
|
|
107
|
+
model_id_str = m.model_id or "N/A"
|
|
108
|
+
display_name = m.model_name
|
|
109
|
+
first_line_prefix = f"{display_name:<{max_model_name_length}}"
|
|
110
|
+
meta_parts = format_model_params(m)
|
|
111
|
+
meta_str = " · ".join(meta_parts) if meta_parts else ""
|
|
112
|
+
title: list[tuple[str, str]] = [
|
|
113
|
+
("class:meta", f"{model_idx:>{num_width}}. "),
|
|
114
|
+
("class:msg bold", first_line_prefix),
|
|
115
|
+
("class:msg dim", " → "),
|
|
116
|
+
# Keep provider/model_id styling attribute-based (dim/bold) so that
|
|
117
|
+
# the selector's highlight color can still override uniformly.
|
|
118
|
+
("class:msg ansiblue", model_id_str),
|
|
119
|
+
("class:msg dim", " · "),
|
|
120
|
+
("class:msg ansibrightblack", provider),
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
if meta_str:
|
|
124
|
+
title.append(("class:msg dim", " · "))
|
|
125
|
+
title.append(("class:meta", meta_str))
|
|
126
|
+
|
|
127
|
+
title.append(("class:meta", "\n"))
|
|
128
|
+
search_text = f"{m.selector} {m.model_name} {model_id_str} {provider}"
|
|
129
|
+
items.append(SelectItem(title=title, value=m.selector, search_text=search_text))
|
|
70
130
|
|
|
71
131
|
return items
|
|
72
132
|
|
|
@@ -186,10 +246,58 @@ def _filter_items[T](
|
|
|
186
246
|
return needle_norm in _normalize_search_key(it.search_text)
|
|
187
247
|
return False
|
|
188
248
|
|
|
189
|
-
|
|
190
|
-
if
|
|
191
|
-
|
|
192
|
-
|
|
249
|
+
matched_selectable = [i for i, it in enumerate(items) if it.selectable and _is_match(it)]
|
|
250
|
+
if not matched_selectable:
|
|
251
|
+
# Keep the full list visible so the user can still browse when the filter
|
|
252
|
+
# doesn't match anything.
|
|
253
|
+
return list(range(len(items))), False
|
|
254
|
+
|
|
255
|
+
matched_set = set(matched_selectable)
|
|
256
|
+
visible: list[int] = []
|
|
257
|
+
|
|
258
|
+
# If we have non-selectable header rows, keep a header visible only when its
|
|
259
|
+
# group has at least one matched selectable item.
|
|
260
|
+
i = 0
|
|
261
|
+
while i < len(items):
|
|
262
|
+
it = items[i]
|
|
263
|
+
if not it.selectable:
|
|
264
|
+
header_idx = i
|
|
265
|
+
group_start = i + 1
|
|
266
|
+
group_end = next((j for j in range(group_start, len(items)) if not items[j].selectable), len(items))
|
|
267
|
+
group_matches = [j for j in range(group_start, group_end) if j in matched_set]
|
|
268
|
+
if group_matches:
|
|
269
|
+
visible.append(header_idx)
|
|
270
|
+
visible.extend(group_matches)
|
|
271
|
+
i = group_end
|
|
272
|
+
continue
|
|
273
|
+
|
|
274
|
+
if i in matched_set:
|
|
275
|
+
visible.append(i)
|
|
276
|
+
i += 1
|
|
277
|
+
|
|
278
|
+
return visible, True
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
def _coerce_pointed_at_to_selectable[T](
|
|
282
|
+
items: list[SelectItem[T]],
|
|
283
|
+
visible_indices: list[int],
|
|
284
|
+
pointed_at: int,
|
|
285
|
+
) -> int:
|
|
286
|
+
"""Return a valid pointed_at position for selectable items.
|
|
287
|
+
|
|
288
|
+
pointed_at is an index into visible_indices (not into items).
|
|
289
|
+
"""
|
|
290
|
+
|
|
291
|
+
if not visible_indices:
|
|
292
|
+
return 0
|
|
293
|
+
|
|
294
|
+
start = pointed_at % len(visible_indices)
|
|
295
|
+
for offset in range(len(visible_indices)):
|
|
296
|
+
pos = (start + offset) % len(visible_indices)
|
|
297
|
+
idx = visible_indices[pos]
|
|
298
|
+
if items[idx].selectable:
|
|
299
|
+
return pos
|
|
300
|
+
return start
|
|
193
301
|
|
|
194
302
|
|
|
195
303
|
def _build_choices_tokens[T](
|
|
@@ -325,7 +433,7 @@ def select_one[T](
|
|
|
325
433
|
message: str,
|
|
326
434
|
items: list[SelectItem[T]],
|
|
327
435
|
pointer: str = "→",
|
|
328
|
-
style:
|
|
436
|
+
style: BaseStyle | None = None,
|
|
329
437
|
use_search_filter: bool = True,
|
|
330
438
|
initial_value: T | None = None,
|
|
331
439
|
search_placeholder: str = "type to search",
|
|
@@ -353,7 +461,7 @@ def select_one[T](
|
|
|
353
461
|
nonlocal pointed_at
|
|
354
462
|
indices, _ = _filter_items(items, get_filter_text())
|
|
355
463
|
if indices:
|
|
356
|
-
pointed_at
|
|
464
|
+
pointed_at = _coerce_pointed_at_to_selectable(items, indices, pointed_at)
|
|
357
465
|
return _build_choices_tokens(
|
|
358
466
|
items,
|
|
359
467
|
indices,
|
|
@@ -362,6 +470,19 @@ def select_one[T](
|
|
|
362
470
|
highlight_pointed_item=highlight_pointed_item,
|
|
363
471
|
)
|
|
364
472
|
|
|
473
|
+
def move_pointed_at(delta: int) -> None:
|
|
474
|
+
nonlocal pointed_at
|
|
475
|
+
indices, _ = _filter_items(items, get_filter_text())
|
|
476
|
+
if not indices:
|
|
477
|
+
return
|
|
478
|
+
|
|
479
|
+
pointed_at = _coerce_pointed_at_to_selectable(items, indices, pointed_at)
|
|
480
|
+
for _ in range(len(indices)):
|
|
481
|
+
pointed_at = (pointed_at + delta) % len(indices)
|
|
482
|
+
idx = indices[pointed_at]
|
|
483
|
+
if items[idx].selectable:
|
|
484
|
+
return
|
|
485
|
+
|
|
365
486
|
def on_search_changed(_buf: Buffer) -> None:
|
|
366
487
|
nonlocal pointed_at
|
|
367
488
|
pointed_at = 0
|
|
@@ -377,14 +498,12 @@ def select_one[T](
|
|
|
377
498
|
|
|
378
499
|
@kb.add(Keys.Down, eager=True)
|
|
379
500
|
def _(event: KeyPressEvent) -> None:
|
|
380
|
-
|
|
381
|
-
pointed_at += 1
|
|
501
|
+
move_pointed_at(+1)
|
|
382
502
|
event.app.invalidate()
|
|
383
503
|
|
|
384
504
|
@kb.add(Keys.Up, eager=True)
|
|
385
505
|
def _(event: KeyPressEvent) -> None:
|
|
386
|
-
|
|
387
|
-
pointed_at -= 1
|
|
506
|
+
move_pointed_at(-1)
|
|
388
507
|
event.app.invalidate()
|
|
389
508
|
|
|
390
509
|
@kb.add(Keys.Enter, eager=True)
|
|
@@ -393,8 +512,15 @@ def select_one[T](
|
|
|
393
512
|
if not indices:
|
|
394
513
|
event.app.exit(result=None)
|
|
395
514
|
return
|
|
515
|
+
|
|
516
|
+
nonlocal pointed_at
|
|
517
|
+
pointed_at = _coerce_pointed_at_to_selectable(items, indices, pointed_at)
|
|
396
518
|
idx = indices[pointed_at % len(indices)]
|
|
397
|
-
|
|
519
|
+
value = items[idx].value
|
|
520
|
+
if value is None:
|
|
521
|
+
event.app.exit(result=None)
|
|
522
|
+
return
|
|
523
|
+
event.app.exit(result=value)
|
|
398
524
|
|
|
399
525
|
@kb.add(Keys.Escape, eager=True)
|
|
400
526
|
def _(event: KeyPressEvent) -> None:
|
|
@@ -532,14 +658,26 @@ class SelectOverlay[T]:
|
|
|
532
658
|
kb = KeyBindings()
|
|
533
659
|
is_open_filter = Condition(lambda: self._is_open)
|
|
534
660
|
|
|
661
|
+
def move_pointed_at(delta: int) -> None:
|
|
662
|
+
indices, _ = self._get_visible_indices()
|
|
663
|
+
if not indices:
|
|
664
|
+
return
|
|
665
|
+
|
|
666
|
+
self._pointed_at = _coerce_pointed_at_to_selectable(self._items, indices, self._pointed_at)
|
|
667
|
+
for _ in range(len(indices)):
|
|
668
|
+
self._pointed_at = (self._pointed_at + delta) % len(indices)
|
|
669
|
+
idx = indices[self._pointed_at]
|
|
670
|
+
if self._items[idx].selectable:
|
|
671
|
+
return
|
|
672
|
+
|
|
535
673
|
@kb.add(Keys.Down, filter=is_open_filter, eager=True)
|
|
536
674
|
def _(event: KeyPressEvent) -> None:
|
|
537
|
-
|
|
675
|
+
move_pointed_at(+1)
|
|
538
676
|
event.app.invalidate()
|
|
539
677
|
|
|
540
678
|
@kb.add(Keys.Up, filter=is_open_filter, eager=True)
|
|
541
679
|
def _(event: KeyPressEvent) -> None:
|
|
542
|
-
|
|
680
|
+
move_pointed_at(-1)
|
|
543
681
|
event.app.invalidate()
|
|
544
682
|
|
|
545
683
|
@kb.add(Keys.Enter, filter=is_open_filter, eager=True)
|
|
@@ -548,8 +686,13 @@ class SelectOverlay[T]:
|
|
|
548
686
|
if not indices:
|
|
549
687
|
self.close()
|
|
550
688
|
return
|
|
689
|
+
|
|
690
|
+
self._pointed_at = _coerce_pointed_at_to_selectable(self._items, indices, self._pointed_at)
|
|
551
691
|
idx = indices[self._pointed_at % len(indices)]
|
|
552
692
|
value = self._items[idx].value
|
|
693
|
+
if value is None:
|
|
694
|
+
self.close()
|
|
695
|
+
return
|
|
553
696
|
self.close()
|
|
554
697
|
|
|
555
698
|
if self._on_select is None:
|
|
@@ -593,7 +736,7 @@ class SelectOverlay[T]:
|
|
|
593
736
|
def get_choices_tokens() -> list[tuple[str, str]]:
|
|
594
737
|
indices, _ = self._get_visible_indices()
|
|
595
738
|
if indices:
|
|
596
|
-
self._pointed_at
|
|
739
|
+
self._pointed_at = _coerce_pointed_at_to_selectable(self._items, indices, self._pointed_at)
|
|
597
740
|
return _build_choices_tokens(
|
|
598
741
|
self._items,
|
|
599
742
|
indices,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: klaude-code
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0
|
|
4
4
|
Summary: Minimal code agent CLI
|
|
5
5
|
Requires-Dist: anthropic>=0.66.0
|
|
6
6
|
Requires-Dist: chardet>=5.2.0
|
|
@@ -52,13 +52,10 @@ To update:
|
|
|
52
52
|
uv tool upgrade klaude-code
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
Or use the built-in
|
|
55
|
+
Or use the built-in command:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
-
klaude update
|
|
59
58
|
klaude upgrade
|
|
60
|
-
klaude --version
|
|
61
|
-
|
|
62
59
|
```
|
|
63
60
|
|
|
64
61
|
## Usage
|
|
@@ -125,24 +122,34 @@ klaude list
|
|
|
125
122
|
|
|
126
123
|
Models from providers without a valid API key are shown as dimmed/unavailable.
|
|
127
124
|
|
|
128
|
-
####
|
|
125
|
+
#### Authentication
|
|
129
126
|
|
|
130
|
-
|
|
127
|
+
Use the auth command to configure API keys or login to subscription-based providers:
|
|
131
128
|
|
|
132
129
|
```bash
|
|
133
130
|
# Interactive provider selection
|
|
134
|
-
klaude login
|
|
135
|
-
|
|
136
|
-
#
|
|
137
|
-
klaude login
|
|
138
|
-
klaude login
|
|
131
|
+
klaude auth login
|
|
132
|
+
|
|
133
|
+
# Configure API keys
|
|
134
|
+
klaude auth login anthropic # Set ANTHROPIC_API_KEY
|
|
135
|
+
klaude auth login openai # Set OPENAI_API_KEY
|
|
136
|
+
klaude auth login google # Set GOOGLE_API_KEY
|
|
137
|
+
klaude auth login openrouter # Set OPENROUTER_API_KEY
|
|
138
|
+
klaude auth login deepseek # Set DEEPSEEK_API_KEY
|
|
139
|
+
klaude auth login moonshot # Set MOONSHOT_API_KEY
|
|
140
|
+
|
|
141
|
+
# OAuth login for subscription-based providers
|
|
142
|
+
klaude auth login claude # Claude Pro/Max subscription
|
|
143
|
+
klaude auth login codex # ChatGPT Pro subscription
|
|
139
144
|
```
|
|
140
145
|
|
|
141
|
-
|
|
146
|
+
API keys are stored in `~/.klaude/klaude-auth.json` and used as fallback when environment variables are not set.
|
|
147
|
+
|
|
148
|
+
To logout from OAuth providers:
|
|
142
149
|
|
|
143
150
|
```bash
|
|
144
|
-
klaude logout claude
|
|
145
|
-
klaude logout codex
|
|
151
|
+
klaude auth logout claude
|
|
152
|
+
klaude auth logout codex
|
|
146
153
|
```
|
|
147
154
|
|
|
148
155
|
#### Custom Configuration
|
|
@@ -152,7 +159,7 @@ User config file: `~/.klaude/klaude-config.yaml`
|
|
|
152
159
|
Open in editor:
|
|
153
160
|
|
|
154
161
|
```bash
|
|
155
|
-
klaude
|
|
162
|
+
klaude conf
|
|
156
163
|
```
|
|
157
164
|
|
|
158
165
|
##### Model Configuration
|
|
@@ -208,21 +215,6 @@ List configured providers and models:
|
|
|
208
215
|
klaude list
|
|
209
216
|
```
|
|
210
217
|
|
|
211
|
-
### Session Management
|
|
212
|
-
|
|
213
|
-
Clean up sessions with few messages:
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
# Remove sessions with fewer than 5 messages (default)
|
|
217
|
-
klaude session clean
|
|
218
|
-
|
|
219
|
-
# Remove sessions with fewer than 10 messages
|
|
220
|
-
klaude session clean --min 10
|
|
221
|
-
|
|
222
|
-
# Remove all sessions for the current project
|
|
223
|
-
klaude session clean-all
|
|
224
|
-
```
|
|
225
|
-
|
|
226
218
|
### Cost Tracking
|
|
227
219
|
|
|
228
220
|
View aggregated usage statistics across all sessions:
|
|
@@ -2,7 +2,7 @@ klaude_code/.DS_Store,sha256=cLWFbSgdN0bXEd3_tz93BJSposEPafUBqSr7t-3lPbA,6148
|
|
|
2
2
|
klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
klaude_code/app/__init__.py,sha256=7mgWpN9SFDqe8AW44bBn9M19nVsBcZURrsGB_8l2hrU,264
|
|
4
4
|
klaude_code/app/runtime.py,sha256=St5ZVo9snvc90R5fG4OojlWwtlRSB66AZAYfZD7AOCE,5982
|
|
5
|
-
klaude_code/auth/__init__.py,sha256=
|
|
5
|
+
klaude_code/auth/__init__.py,sha256=4Rlp-JkYkmYu38oifN79PNHyFU2WzzcDDp7pG0QmlAE,677
|
|
6
6
|
klaude_code/auth/base.py,sha256=ccH2sC0TWB5lPpGm4FSjCgnehwn9riYiXxHCh2iFJe0,3011
|
|
7
7
|
klaude_code/auth/claude/__init__.py,sha256=h1oyqEttDM5TAF6w1Stk6YXYMsbATjODCsi6GhU4zAA,218
|
|
8
8
|
klaude_code/auth/claude/exceptions.py,sha256=_3KbC6W7_gWpxTsSqI0Bxk5Q_v3Fad6dBjweEsoFun4,246
|
|
@@ -13,24 +13,24 @@ klaude_code/auth/codex/exceptions.py,sha256=TcAKPozsY3SCh_krTYFlJ8FU5jepgSTg-5UO
|
|
|
13
13
|
klaude_code/auth/codex/jwt_utils.py,sha256=tuaJKT4vAIGeaQjNzgNcHWGrYYSDrDeaQT9h4cw5Us8,1134
|
|
14
14
|
klaude_code/auth/codex/oauth.py,sha256=4hAGZ2Dv87NC3loEws7U5yNyPyIrryGm5YXY2FkHeyo,7840
|
|
15
15
|
klaude_code/auth/codex/token_manager.py,sha256=EiEdxEErh_mcnW8USWbvdbN91LK7nyk0PZJZGmdUTG8,1405
|
|
16
|
+
klaude_code/auth/env.py,sha256=-d0bJXJE-e2AY5JL82TpR6kkjbJCtyGdBzN-G6P4Be0,2398
|
|
16
17
|
klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
|
|
17
|
-
klaude_code/cli/auth_cmd.py,sha256=
|
|
18
|
-
klaude_code/cli/config_cmd.py,sha256=
|
|
19
|
-
klaude_code/cli/cost_cmd.py,sha256=
|
|
18
|
+
klaude_code/cli/auth_cmd.py,sha256=DHY6TGCEOkrZJ-rNVTZ2vg0bS5DltUDiVD0BzBreqDs,8680
|
|
19
|
+
klaude_code/cli/config_cmd.py,sha256=7BmZpKeiO24mKKLKGO46WvSQzSaNwuZ3KtCV4GH-Yh0,3306
|
|
20
|
+
klaude_code/cli/cost_cmd.py,sha256=NNykvNxQn3QvFTe5FYM2RIRskZi97rrbKhAxC5o8Fag,17579
|
|
20
21
|
klaude_code/cli/debug.py,sha256=vEHOjObhrIHDAXk3q6cOgeW2NZxCx5AWM1rJ6FiJnVU,1901
|
|
21
22
|
klaude_code/cli/list_model.py,sha256=dzXwahAZZv8NHPD4pvOTLaTJTEWnCjS1B-K52n3OHOs,13603
|
|
22
|
-
klaude_code/cli/main.py,sha256=
|
|
23
|
-
klaude_code/cli/self_update.py,sha256=
|
|
24
|
-
klaude_code/cli/session_cmd.py,sha256=IyuSkqHOLldcm8qraJWJZEme9TY5Rfqmld9NmVJuHnc,3198
|
|
23
|
+
klaude_code/cli/main.py,sha256=maa6vgsAgxYVQGk8unhkqgxMTnmEoOmcA8K7TUPMnPs,9438
|
|
24
|
+
klaude_code/cli/self_update.py,sha256=1xdG9ifvRZQDSx6RAtSSgXmw9hZNXMLvqC2zu4bS-GY,2622
|
|
25
25
|
klaude_code/config/__init__.py,sha256=Qe1BeMekBfO2-Zd30x33lB70hdM1QQZGrp4DbWSQ-II,353
|
|
26
26
|
klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
|
|
27
|
-
klaude_code/config/assets/builtin_config.yaml,sha256=
|
|
28
|
-
klaude_code/config/builtin_config.py,sha256=
|
|
29
|
-
klaude_code/config/config.py,sha256=
|
|
30
|
-
klaude_code/config/model_matcher.py,sha256=
|
|
27
|
+
klaude_code/config/assets/builtin_config.yaml,sha256=iTD_GfQ2pgo_fYe_2vfs6nmEf-oABbWdF2wCXzW8yDY,7782
|
|
28
|
+
klaude_code/config/builtin_config.py,sha256=olAP0lRHMn4gCjCFu3K6l6rGqdRm0YMmgAdwqDOZp_w,2080
|
|
29
|
+
klaude_code/config/config.py,sha256=MinPsZH6h2MdmnJiX9F6VpaZHkKb1iG-zV90i6dJq1s,25665
|
|
30
|
+
klaude_code/config/model_matcher.py,sha256=3IlLU5h3NDh_bURbCW-PV027C3irG3hyitwj1cj99Ig,6179
|
|
31
31
|
klaude_code/config/sub_agent_model_helper.py,sha256=fI-OIZWFI4116qjalsZj2pIi0waPR1cXE-OKrVMFS6g,8064
|
|
32
32
|
klaude_code/config/thinking.py,sha256=RDWH8UYbeDoIKPXaCIcvVwPAh07Ntaq8w5Zn_fhm-Fk,9329
|
|
33
|
-
klaude_code/const.py,sha256=
|
|
33
|
+
klaude_code/const.py,sha256=dVWGzsUINndi0skjlkDsfJtI5ocqINpJUVm0wxOaO7w,11246
|
|
34
34
|
klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
klaude_code/core/agent.py,sha256=5TNzzzHgKLKpEcFhaM0d136kaGUn_mESC8b1nLoxS2o,3913
|
|
36
36
|
klaude_code/core/agent_profile.py,sha256=EAsAHj9Jd_JaL_ydr13I3uVoBN4RIm9zmKPn3H7NYu8,12817
|
|
@@ -61,11 +61,11 @@ klaude_code/core/tool/file/apply_patch_tool.md,sha256=KVDsjUiLDa97gym0NrZNVG4jA1
|
|
|
61
61
|
klaude_code/core/tool/file/apply_patch_tool.py,sha256=t7zNZW2wYpDyHutxq7nx_xSs7GbPx8UymveSR25F2-8,8079
|
|
62
62
|
klaude_code/core/tool/file/diff_builder.py,sha256=IH5Ws8LvcU66DnPfI40m_qfDyjN3mH4C1LVjC9eKYJQ,6044
|
|
63
63
|
klaude_code/core/tool/file/edit_tool.md,sha256=rEcUjJuPC46t1nXWjTDxplDcxWDbzTWsr6_bYt5_aRI,1110
|
|
64
|
-
klaude_code/core/tool/file/edit_tool.py,sha256=
|
|
64
|
+
klaude_code/core/tool/file/edit_tool.py,sha256=zduRQKnydxO8_nn_W64WkU_2NbOjoVDVR80qsgpJ0Aw,10898
|
|
65
65
|
klaude_code/core/tool/file/read_tool.md,sha256=74SLSl1tq3L0por73M0QV_ws41MRIvGXQpfLb8dmtp0,1351
|
|
66
|
-
klaude_code/core/tool/file/read_tool.py,sha256=
|
|
66
|
+
klaude_code/core/tool/file/read_tool.py,sha256=wne_aibWnsCpVc9xFYYPlPIDKCtVeTaqHCMaMhpoLwc,13236
|
|
67
67
|
klaude_code/core/tool/file/write_tool.md,sha256=CNnYgtieUasuHdpXLDpTEsqe492Pf7v75M4RQ3oIer8,613
|
|
68
|
-
klaude_code/core/tool/file/write_tool.py,sha256=
|
|
68
|
+
klaude_code/core/tool/file/write_tool.py,sha256=R2gWJp8kDOm_gUMbb8F6Z-SrEf8-8Y__9KaMmaQaQVg,5674
|
|
69
69
|
klaude_code/core/tool/offload.py,sha256=y-OgDVFwB-hMdzXll94ylUhFkiK0KwFCu7sxtFLlNxM,12477
|
|
70
70
|
klaude_code/core/tool/report_back_tool.py,sha256=SkuRhfLpVwTOSpIj7XwYfGDNBp8YsCUNXieXDkafS2E,3381
|
|
71
71
|
klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -89,11 +89,11 @@ klaude_code/core/tool/web/web_fetch_tool.md,sha256=i0IwsZ6r9vAQeCpwDBtEGrWmHPzZk
|
|
|
89
89
|
klaude_code/core/tool/web/web_fetch_tool.py,sha256=jXbJTgpI_RvyXy5ac8qIrC-AKOUX1fJ3TpqXq_BfkS4,9596
|
|
90
90
|
klaude_code/core/tool/web/web_search_tool.md,sha256=l5gGPx-fXHFel1zLBljm8isy9pwEYXGrq5cFzzw1VBw,1135
|
|
91
91
|
klaude_code/core/tool/web/web_search_tool.py,sha256=ljkgXxP6L5nJnbYB_IOUtPUN9zA_h5hBD55lhNAja08,4293
|
|
92
|
-
klaude_code/core/turn.py,sha256
|
|
92
|
+
klaude_code/core/turn.py,sha256=z_-0XvJsdN3omiCCQOY4wBlN7hwQ2T0fRJeY_dqLdHc,18509
|
|
93
93
|
klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
|
|
94
94
|
klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
|
|
95
|
-
klaude_code/llm/anthropic/client.py,sha256=
|
|
96
|
-
klaude_code/llm/anthropic/input.py,sha256=
|
|
95
|
+
klaude_code/llm/anthropic/client.py,sha256=RpYw4UQnhLzAsp6i-FU7cDW4deqngdAoQaTPGnCeO5U,17346
|
|
96
|
+
klaude_code/llm/anthropic/input.py,sha256=TCR9egH_bC6Y-KupZ6RSfkcZMZ4h3Upy6iwGoN_H4kQ,9766
|
|
97
97
|
klaude_code/llm/bedrock/__init__.py,sha256=UmXPBXMmigAJ7euIh59iivSeUdrYJwum0RYU7okkkPM,86
|
|
98
98
|
klaude_code/llm/bedrock/client.py,sha256=mETQrhGDt4uEDXO2c3y5Iao9RngygFSF6MOtwqAy1tk,2279
|
|
99
99
|
klaude_code/llm/claude/__init__.py,sha256=8VCvvEjQQI-RpAMfHCl5ct4zlDU_jgbAuLOc9p9u-B4,61
|
|
@@ -102,36 +102,30 @@ klaude_code/llm/client.py,sha256=2PRxcKBHRk7csw-swglsmLJfYUpbJn6tzNqMb5fJBvE,182
|
|
|
102
102
|
klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
|
|
103
103
|
klaude_code/llm/codex/client.py,sha256=d2pDHKokQAaMfnWRoliBtTtjeyElQiPjSwNWyjW_PRs,5389
|
|
104
104
|
klaude_code/llm/google/__init__.py,sha256=tQtf_mh_mC3E4S9XAsnhS2JZXGRnYUsBKF0jpXZTvM0,61
|
|
105
|
-
klaude_code/llm/google/client.py,sha256=
|
|
106
|
-
klaude_code/llm/google/input.py,sha256=
|
|
105
|
+
klaude_code/llm/google/client.py,sha256=nBkAyB_LFtEpdFE8NmD64kEZI1Ft24P2U1_yAeYaEPw,21154
|
|
106
|
+
klaude_code/llm/google/input.py,sha256=ErbpSmmv8wOaxSO7b2KSZqPgKvRJo1m4deW-JTzN5CU,8798
|
|
107
107
|
klaude_code/llm/image.py,sha256=jt9FBPFhAIo48pauIEJMIhB9WuDt4wwNs9s3LiEsETE,4272
|
|
108
108
|
klaude_code/llm/input_common.py,sha256=-GnZ87BfzyGqXTP3WYflFOqbRcbKpJjE9mjIv8qKWsQ,6228
|
|
109
109
|
klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
|
|
110
110
|
klaude_code/llm/openai_compatible/client.py,sha256=9epE7B58UX-Rr8Zw62AwVv1uonajzcT2RLjreQTQ_PU,4683
|
|
111
111
|
klaude_code/llm/openai_compatible/input.py,sha256=VpgT2wbph6bFsB6OFWKnIdjE32W_gKA_p39T-xuJPrE,3217
|
|
112
|
-
klaude_code/llm/openai_compatible/stream.py,sha256=
|
|
112
|
+
klaude_code/llm/openai_compatible/stream.py,sha256=QBmhhQT7b1WjlDd8VfpNjbnbjxuao5cBa78vM8vxucQ,16057
|
|
113
113
|
klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=quajimkUR1uSIPVXYsVNiQSTnOSVt7WuyZ23RyT7lJs,4906
|
|
114
114
|
klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
|
|
115
|
-
klaude_code/llm/openrouter/client.py,sha256=
|
|
115
|
+
klaude_code/llm/openrouter/client.py,sha256=P_mDQK4_i1MLF0jK4p_bKhh15ACXgw6Ie0rUrtbfsdM,5738
|
|
116
116
|
klaude_code/llm/openrouter/input.py,sha256=Z_Cf6TnMZ5KQNJ0E5IIDCKK2OWlzi8IW0S5A72BBGT0,6176
|
|
117
|
-
klaude_code/llm/openrouter/reasoning.py,sha256=
|
|
118
|
-
klaude_code/llm/partial_message.py,sha256
|
|
117
|
+
klaude_code/llm/openrouter/reasoning.py,sha256=u7ccfnGxJ4Ws8P3X5FW91d8HXie29JjeWz0hZ1r0oFg,3320
|
|
118
|
+
klaude_code/llm/partial_message.py,sha256=-sjlpV-et4ViBtBpdtihK5QBjAlwS47-mBpVbRQPP3s,142
|
|
119
119
|
klaude_code/llm/registry.py,sha256=wEf9wvbb9CMvlNDtndKzKY5LN3zqEJYPI2v9kIrqfGI,2235
|
|
120
120
|
klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
|
|
121
|
-
klaude_code/llm/responses/client.py,sha256=
|
|
122
|
-
klaude_code/llm/responses/input.py,sha256=
|
|
121
|
+
klaude_code/llm/responses/client.py,sha256=cOpf8aCAtrcxN_hYTzYVAU67M49JkOjLlaVeJIELf8U,16355
|
|
122
|
+
klaude_code/llm/responses/input.py,sha256=kYR4VZpdc-iH-VG_xhQV-tYkRGX581oOcE9D1O_mMYg,8845
|
|
123
|
+
klaude_code/llm/stream_parts.py,sha256=kU40BaWyiKOqzrIwF0_IwogWgKRRqVEt-6MvwMi5J1I,2790
|
|
123
124
|
klaude_code/llm/usage.py,sha256=L6w-DlZ3oF8lOR_SEudPBM9idzIy7__f5FZ4ZJ2smi8,5957
|
|
124
|
-
klaude_code/log.py,sha256=
|
|
125
|
+
klaude_code/log.py,sha256=i9iVCmp4dxqxqH_7XPMVjZt8umiH1KPhRbX4Ao93mSM,11382
|
|
125
126
|
klaude_code/protocol/__init__.py,sha256=TTPnuyQ22RypoTGKdoiS7ZEgHzinuaRHUrauzHDh7Xo,246
|
|
126
127
|
klaude_code/protocol/commands.py,sha256=MfiUgN7r7VFGh0pel4nCRnk44F2Yzdcd7xqM-M369vY,771
|
|
127
|
-
klaude_code/protocol/events
|
|
128
|
-
klaude_code/protocol/events/base.py,sha256=QfqgksjA2Hj-ClmwKVeJ7QA6Z7YdzjswO1NfAVnPCoI,335
|
|
129
|
-
klaude_code/protocol/events/chat.py,sha256=mI_Ks5IIU1ZiywclQYxzhSsGA3ga7ACKShU6d9_KqSs,731
|
|
130
|
-
klaude_code/protocol/events/lifecycle.py,sha256=gykOiAvdxMrvZ9Jm2T_qlve6Iw70C23o2HRooR0rHg4,389
|
|
131
|
-
klaude_code/protocol/events/metadata.py,sha256=VcktYa6k51vIQ1H_KeOqQYCZkX0K9gaCQR1neOAOENs,313
|
|
132
|
-
klaude_code/protocol/events/streaming.py,sha256=U1plGQSTeGZa3E4fIxW_fHXJpuv_DSIBrmGh1l4Fm54,708
|
|
133
|
-
klaude_code/protocol/events/system.py,sha256=FjAnZso1jpOY2nY7DgehuFvBtu_gh5uZqimmpgKbaMA,1392
|
|
134
|
-
klaude_code/protocol/events/tools.py,sha256=8ds_8Zj-wQWvHNAvNt1-fSIHeDffw1dsLWI7ByrAqcM,617
|
|
128
|
+
klaude_code/protocol/events.py,sha256=hn0mM0AOu8nF5lOPoTMQNMsVXOGbBVLh4M5Y9lTE3a0,4284
|
|
135
129
|
klaude_code/protocol/llm_param.py,sha256=mFdAcbzJrIFB4T2QCbLyeZxZQ_38lUNCclEZIH3eWtQ,5191
|
|
136
130
|
klaude_code/protocol/message.py,sha256=pu-wvInS781y-qSKbl9MqO7k3CtAN7Yu4hUHJCXKjZQ,6210
|
|
137
131
|
klaude_code/protocol/model.py,sha256=KboyTyfG5DntRMK98oDHomgJfUpHBdeiq51dWXRSqeM,9923
|
|
@@ -140,7 +134,7 @@ klaude_code/protocol/op_handler.py,sha256=B-dmye-6fgQNUDSa2s9cnHogz_Jl4yoQ9EiNgk
|
|
|
140
134
|
klaude_code/protocol/sub_agent/AGENTS.md,sha256=DHeHl11PYprTOQxInENCEnwnh3kIztBLjvETkwWAO08,1299
|
|
141
135
|
klaude_code/protocol/sub_agent/__init__.py,sha256=RKPFJawd0AB7nRYBxdwuG-14D8pT6HF1-DPCTAxwohI,3784
|
|
142
136
|
klaude_code/protocol/sub_agent/explore.py,sha256=f3fHTyxVeEH4vxJtEts0FbZhdrhOR-_x94QMfNicuUI,1859
|
|
143
|
-
klaude_code/protocol/sub_agent/image_gen.py,sha256=
|
|
137
|
+
klaude_code/protocol/sub_agent/image_gen.py,sha256=npNEOIsMV-1QOvewdb3NFMkG25Fz8wTJe7cxpPO2mWs,4234
|
|
144
138
|
klaude_code/protocol/sub_agent/task.py,sha256=ZOjzK1itxehlva6WfGKKAJq8FvBOKAywrlgGgfb4Tp4,3441
|
|
145
139
|
klaude_code/protocol/sub_agent/web.py,sha256=XOQdqlIp_xno7Q7YVFPFo4AyKU1wbrVKhIi-NxY8eYM,2506
|
|
146
140
|
klaude_code/protocol/tools.py,sha256=T0mzW9EhidVMNkwH-KTeB5FgwMvXBnV_MYE5ytrU1TM,343
|
|
@@ -148,7 +142,7 @@ klaude_code/session/__init__.py,sha256=4sw81uQvEd3YUOOjamKk1KqGmxeb4Ic9T1Tee5zzt
|
|
|
148
142
|
klaude_code/session/codec.py,sha256=a374UZkOusn9MgFCc--yznDljK_4Qfy6yDPfhQq5_P0,1889
|
|
149
143
|
klaude_code/session/export.py,sha256=znoTUCw2tVGgDpl-sT-ba_2Bb2HaH6pvsl4EpLUdYJQ,46102
|
|
150
144
|
klaude_code/session/selector.py,sha256=snBpnz9UQCe_0K8HttSGCJECCE4YEzpWs_Fdmk2P9nI,2195
|
|
151
|
-
klaude_code/session/session.py,sha256=
|
|
145
|
+
klaude_code/session/session.py,sha256=7C_zMIrJGYQw-opeQdLP23OAf3wxjHTVEg7Xe2QM-C4,25029
|
|
152
146
|
klaude_code/session/store.py,sha256=HRrmFzwEVdExqDQlT9FBZOhlFtQmM9Im9zco8pzvUMY,6455
|
|
153
147
|
klaude_code/session/templates/export_session.html,sha256=y4H2DwYx29MuSeKgT8JWdZKNguemaDKN-b75x0sr0eU,127667
|
|
154
148
|
klaude_code/session/templates/mermaid_viewer.html,sha256=Y_wEWFm4mKWpfAz3YMis5DdLEkhw_2d8CpU6jbvGZow,27842
|
|
@@ -170,51 +164,51 @@ klaude_code/tui/command/copy_cmd.py,sha256=T-r1tWpNCNeixHeTnaR5RWd7bNkjw10CsPERT
|
|
|
170
164
|
klaude_code/tui/command/debug_cmd.py,sha256=cXi2ymcsbcJVCKfVKPvtUFPOmgNFEpwG-IcLlnkiyZY,2698
|
|
171
165
|
klaude_code/tui/command/export_cmd.py,sha256=KdFlOMJ6gruKYnd_24eWJJb21t9gLVwI1FnN1s08m5U,1609
|
|
172
166
|
klaude_code/tui/command/export_online_cmd.py,sha256=34De0K486wNOC5yjjPemcGTILrKQhWld2qfV3c0PUQ8,5664
|
|
173
|
-
klaude_code/tui/command/fork_session_cmd.py,sha256=
|
|
167
|
+
klaude_code/tui/command/fork_session_cmd.py,sha256=1ilbZ0FG8uuio4y-5R3toCTI6N5ZzJwNG3ZzahWnork,9235
|
|
174
168
|
klaude_code/tui/command/model_cmd.py,sha256=EnUcr_nnUm433G2HwEKKNssVE767IgQFNoc9etxPpmY,1734
|
|
175
|
-
klaude_code/tui/command/model_picker.py,sha256=
|
|
169
|
+
klaude_code/tui/command/model_picker.py,sha256=CQ5tb9sThFRon6cbibtLAtK1VR6fxmecdLUX1_h4Cng,5127
|
|
176
170
|
klaude_code/tui/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
|
|
177
171
|
klaude_code/tui/command/prompt_command.py,sha256=PGGoH_ZgA-0kTtpjk19rDSsWjiZyAEoUlxnSp8B8GRQ,2764
|
|
178
172
|
klaude_code/tui/command/refresh_cmd.py,sha256=_nY7Iko7GSpHmc9t2vKK2DcXRYbXfUnbGzwsmNc-yPI,1405
|
|
179
173
|
klaude_code/tui/command/registry.py,sha256=2HDrC6ZqGKSdzQAYra2TSFt1kc3tDliobjrWfgrTdX8,7028
|
|
180
|
-
klaude_code/tui/command/resume_cmd.py,sha256=
|
|
174
|
+
klaude_code/tui/command/resume_cmd.py,sha256=XaQyoB00_TiimUNl__z5ZvRg5EdG16LXvkGAZ3H6YxU,3359
|
|
181
175
|
klaude_code/tui/command/status_cmd.py,sha256=yALYGxyUX7iVdSRAKdG526YkqOvGV9F0CJNwk8nmzu4,5164
|
|
182
|
-
klaude_code/tui/command/sub_agent_model_cmd.py,sha256=
|
|
176
|
+
klaude_code/tui/command/sub_agent_model_cmd.py,sha256=iz9_bdxHBSOQjjMWPP4RBW58V_HhWREweG-4cXuotk0,5610
|
|
183
177
|
klaude_code/tui/command/terminal_setup_cmd.py,sha256=DfusD9c8eVkWPKGtQI0JvTgJnU_686huyzXsYE9TSEM,10639
|
|
184
|
-
klaude_code/tui/command/thinking_cmd.py,sha256=
|
|
185
|
-
klaude_code/tui/commands.py,sha256=
|
|
178
|
+
klaude_code/tui/command/thinking_cmd.py,sha256=QV3YjcyNRTrmYrujvxfR6Dt05gTK7_uompT9BNWUfgg,2684
|
|
179
|
+
klaude_code/tui/commands.py,sha256=EvUzo0b8zL1NerR7gzqU-w7ehJHWY_yXMxsty9JGKKo,3261
|
|
186
180
|
klaude_code/tui/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
187
181
|
klaude_code/tui/components/assistant.py,sha256=3VUIGf_BJhmoWZ5bHw-QUTMElUxp-MZQKUMWNimHKLE,904
|
|
188
182
|
klaude_code/tui/components/bash_syntax.py,sha256=0Pceo8w7jbK56smaVSBzkZYgCXzqqy7Qnx6kDZOh1yA,7450
|
|
189
183
|
klaude_code/tui/components/command_output.py,sha256=n1bxmPTXysJrm2UERNeOxC9fyW57qm-DIjQ5DU10wxE,3737
|
|
190
|
-
klaude_code/tui/components/common.py,sha256=
|
|
184
|
+
klaude_code/tui/components/common.py,sha256=dhUYLVVOSKxg5GCoS4eyUeKZ3E8Kpt4nqft4njuvPaI,4698
|
|
191
185
|
klaude_code/tui/components/developer.py,sha256=1hDr7boJN1z_JyvvFNn8m7MAf4lPDN3eoqmofE0lv4Y,5414
|
|
192
186
|
klaude_code/tui/components/diffs.py,sha256=JUokkkJeTIoKD0b-c-chMzIDmMjivBQqH8DYXIA3hHs,10411
|
|
193
187
|
klaude_code/tui/components/errors.py,sha256=_9ojf-23ThR-BoMwNEYG68rzILwA_O59muGvofYL10w,669
|
|
194
188
|
klaude_code/tui/components/mermaid_viewer.py,sha256=MstufMnTauMKzI8cKngXpFqVo-qya20P8ReNkplYtEw,3098
|
|
195
|
-
klaude_code/tui/components/metadata.py,sha256=
|
|
189
|
+
klaude_code/tui/components/metadata.py,sha256=5C3zcK7JSHIDojF5Em2bSMoVYeO_W7m-zOAh9N_6XOQ,7275
|
|
196
190
|
klaude_code/tui/components/rich/__init__.py,sha256=zEZjnHR3Fnv_sFMxwIMjoJfwDoC4GRGv3lHJzAGRq_o,236
|
|
197
191
|
klaude_code/tui/components/rich/cjk_wrap.py,sha256=eMqBxftUtll7zrytUb9WtJ6naYLyax0W4KJRpGwWulM,7602
|
|
198
192
|
klaude_code/tui/components/rich/code_panel.py,sha256=ZKuJHh-kh-hIkBXSGLERLaDbJ7I9hvtvmYKocJn39_w,4744
|
|
199
193
|
klaude_code/tui/components/rich/live.py,sha256=xiMT6dPsxM_jaazddKrV9CMJQWwpe2t9OdjffHvo1JU,2821
|
|
200
194
|
klaude_code/tui/components/rich/markdown.py,sha256=dkSzovKFY8zMQqRhad9k-fpV3Iot1CxKvxe202aaP4w,19512
|
|
201
|
-
klaude_code/tui/components/rich/quote.py,sha256=
|
|
195
|
+
klaude_code/tui/components/rich/quote.py,sha256=u6sBmGdp0ckaZLw_XgJk7iHW4zxnWikUaB3GX2tkhlM,5375
|
|
202
196
|
klaude_code/tui/components/rich/searchable_text.py,sha256=PUe6MotKxSBY4FlPeojVjVQgxCsx_jiQ41bCzLp8WvE,2271
|
|
203
197
|
klaude_code/tui/components/rich/status.py,sha256=kNt08FQGvMZJB-zUhT5UyVFA7jvuRBNqf6yDXLEhb9c,14756
|
|
204
|
-
klaude_code/tui/components/rich/theme.py,sha256=
|
|
205
|
-
klaude_code/tui/components/sub_agent.py,sha256=
|
|
198
|
+
klaude_code/tui/components/rich/theme.py,sha256=UE70dpIOM8yXoDJk1i3qR3wwOYYEf4VuZ5khHCA8jxw,15260
|
|
199
|
+
klaude_code/tui/components/sub_agent.py,sha256=byCyRPq0xfit55cLwmp7SfRbCmyiXL77JklvFcbKW4M,6598
|
|
206
200
|
klaude_code/tui/components/thinking.py,sha256=AXC7Xpyiu7ST-eWGLRGY7N8Dak2ny3lV3mvznmfqKmM,2890
|
|
207
201
|
klaude_code/tui/components/tools.py,sha256=Up8DQbXuiPfcbiFVZD6gmZO0YBz2SExWS-tE_xeriX4,25060
|
|
208
202
|
klaude_code/tui/components/user_input.py,sha256=6VHH77xwUUW0rW7yv8hOwGXsmK52HEsBg9-QZVbOm1A,3427
|
|
209
203
|
klaude_code/tui/components/welcome.py,sha256=ZSCcT-wFdSp3L1Fq7shWWz4Rk-BAXvsKisfvIUnP8a4,3665
|
|
210
|
-
klaude_code/tui/display.py,sha256=
|
|
204
|
+
klaude_code/tui/display.py,sha256=JfMETvb1gcgymQVXPy5tH2c-B0cHjXn9PtwSiYlP-1Q,3506
|
|
211
205
|
klaude_code/tui/input/__init__.py,sha256=cAB38ypo7dHo_jgXUCnoBTUKHtiriVaKCv4YepSU9SU,276
|
|
212
206
|
klaude_code/tui/input/clipboard.py,sha256=HjThFB9MG_YdJ76CQv7B-IUoz5JarbWUZDbUVkH1LpY,5106
|
|
213
|
-
klaude_code/tui/input/completers.py,sha256=
|
|
207
|
+
klaude_code/tui/input/completers.py,sha256=t9uhP2z3MJJNy1rlPk0vs-76YJUcpCdO3KFrM5w3E5Y,32932
|
|
214
208
|
klaude_code/tui/input/key_bindings.py,sha256=2uN48J1HRHeCBqq7WrH5J82NIU59oQscce0HquAiYCI,18876
|
|
215
|
-
klaude_code/tui/input/prompt_toolkit.py,sha256=
|
|
216
|
-
klaude_code/tui/machine.py,sha256=
|
|
217
|
-
klaude_code/tui/renderer.py,sha256=
|
|
209
|
+
klaude_code/tui/input/prompt_toolkit.py,sha256=qIb-kDJBBzFhSX3BjwxW2EKAGRQmMYvEI6TzR6hJTP8,28671
|
|
210
|
+
klaude_code/tui/machine.py,sha256=bpqIb2DZJHPFquDClsblo2kf0KW1tIyIWJs8SKJrEWM,27542
|
|
211
|
+
klaude_code/tui/renderer.py,sha256=LRF1VtUA5qLweUSlzWFEkyMcSCUwBxqExoWwY5xNE_M,26110
|
|
218
212
|
klaude_code/tui/runner.py,sha256=nOq8wC78HzgqHLRgHC8OgYubH--2gPcDqA6GoV913Yc,11270
|
|
219
213
|
klaude_code/tui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
|
|
220
214
|
klaude_code/tui/terminal/color.py,sha256=6SJR2RA8cqJINNoRz65w0HL3x9g46ydIvDOGWMeNnQU,7195
|
|
@@ -222,7 +216,7 @@ klaude_code/tui/terminal/control.py,sha256=m2fL6uHum5Li25X2IPnI4z_oVzMpVYcSldB-r
|
|
|
222
216
|
klaude_code/tui/terminal/image.py,sha256=ytzmw1J3fmaq49nWTDRmK_7aMIGbdUPCtVccSpVRHxY,1195
|
|
223
217
|
klaude_code/tui/terminal/notifier.py,sha256=-aTtgRvpzQcfbkOfbeDOfUs3l9smNBZX-60G9f0326Y,4643
|
|
224
218
|
klaude_code/tui/terminal/progress_bar.py,sha256=Go-0_ZodrmJVaQodaPnyxVU2nkpkBaYLnZBqwAUQukE,2133
|
|
225
|
-
klaude_code/tui/terminal/selector.py,sha256=
|
|
219
|
+
klaude_code/tui/terminal/selector.py,sha256=QOuC0Ug251r4ii87kCXV8r2RtJ4llZh1I28edADQY8o,29338
|
|
226
220
|
klaude_code/ui/__init__.py,sha256=3k9Sbesq0nNN3jcSMDqJ4zUcys4PKzGg4Xsum-6dZis,451
|
|
227
221
|
klaude_code/ui/common.py,sha256=_KmCNM-U8VowObYkfq8e9cyuvN1dF85P56hG8tGYlts,4309
|
|
228
222
|
klaude_code/ui/core/__init__.py,sha256=2NakrTDcxem5D0atyEY_Rxv1BbKCeZweF63L6AAq6r8,23
|
|
@@ -232,7 +226,7 @@ klaude_code/ui/debug_mode.py,sha256=ZvqbOx4c_rUerMbEZzOfcbNf9leqEDFjqJUlALtzF9Y,
|
|
|
232
226
|
klaude_code/ui/terminal/__init__.py,sha256=5OeAzr994r8-peWsLON0iXsAvJ2pexwMp36JY7FKGDc,179
|
|
233
227
|
klaude_code/ui/terminal/title.py,sha256=EZpLXTMhunsZPVGaxP317lH0Ad2oOh7OsjbV3yRD5is,1115
|
|
234
228
|
klaude_code/update.py,sha256=QER816AZe9u3RhRvP0Z37Jh2Ch5RLy9PREyDsI0e1dA,4480
|
|
235
|
-
klaude_code-2.
|
|
236
|
-
klaude_code-2.
|
|
237
|
-
klaude_code-2.
|
|
238
|
-
klaude_code-2.
|
|
229
|
+
klaude_code-2.6.0.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
230
|
+
klaude_code-2.6.0.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
|
|
231
|
+
klaude_code-2.6.0.dist-info/METADATA,sha256=MQ4fWB0k6diVfwvnEISBPHaOxWCsKEOh4JaowkMA3VE,10431
|
|
232
|
+
klaude_code-2.6.0.dist-info/RECORD,,
|