klaude-code 2.4.2__py3-none-any.whl → 2.5.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.
Files changed (55) hide show
  1. klaude_code/app/runtime.py +2 -6
  2. klaude_code/cli/main.py +0 -1
  3. klaude_code/config/assets/builtin_config.yaml +7 -0
  4. klaude_code/const.py +7 -4
  5. klaude_code/core/agent.py +10 -1
  6. klaude_code/core/agent_profile.py +47 -35
  7. klaude_code/core/executor.py +6 -21
  8. klaude_code/core/manager/sub_agent_manager.py +17 -1
  9. klaude_code/core/prompts/prompt-sub-agent-web.md +4 -4
  10. klaude_code/core/task.py +65 -4
  11. klaude_code/core/tool/__init__.py +0 -5
  12. klaude_code/core/tool/context.py +12 -1
  13. klaude_code/core/tool/offload.py +311 -0
  14. klaude_code/core/tool/shell/bash_tool.md +1 -43
  15. klaude_code/core/tool/sub_agent_tool.py +1 -0
  16. klaude_code/core/tool/todo/todo_write_tool.md +0 -23
  17. klaude_code/core/tool/tool_runner.py +14 -9
  18. klaude_code/core/tool/web/web_fetch_tool.md +1 -1
  19. klaude_code/core/tool/web/web_fetch_tool.py +14 -39
  20. klaude_code/core/turn.py +128 -139
  21. klaude_code/llm/anthropic/client.py +176 -82
  22. klaude_code/llm/bedrock/client.py +8 -12
  23. klaude_code/llm/claude/client.py +11 -15
  24. klaude_code/llm/client.py +31 -4
  25. klaude_code/llm/codex/client.py +7 -11
  26. klaude_code/llm/google/client.py +150 -69
  27. klaude_code/llm/openai_compatible/client.py +10 -15
  28. klaude_code/llm/openai_compatible/stream.py +68 -6
  29. klaude_code/llm/openrouter/client.py +9 -15
  30. klaude_code/llm/partial_message.py +35 -0
  31. klaude_code/llm/responses/client.py +134 -68
  32. klaude_code/llm/usage.py +30 -0
  33. klaude_code/protocol/commands.py +0 -4
  34. klaude_code/protocol/events/metadata.py +1 -0
  35. klaude_code/protocol/events/system.py +0 -4
  36. klaude_code/protocol/model.py +2 -15
  37. klaude_code/protocol/sub_agent/explore.py +0 -10
  38. klaude_code/protocol/sub_agent/image_gen.py +0 -7
  39. klaude_code/protocol/sub_agent/task.py +0 -10
  40. klaude_code/protocol/sub_agent/web.py +4 -12
  41. klaude_code/session/templates/export_session.html +4 -4
  42. klaude_code/skill/manager.py +2 -1
  43. klaude_code/tui/components/metadata.py +41 -49
  44. klaude_code/tui/components/rich/markdown.py +1 -3
  45. klaude_code/tui/components/rich/theme.py +2 -2
  46. klaude_code/tui/components/tools.py +0 -31
  47. klaude_code/tui/components/welcome.py +1 -32
  48. klaude_code/tui/input/prompt_toolkit.py +25 -9
  49. klaude_code/tui/machine.py +2 -1
  50. {klaude_code-2.4.2.dist-info → klaude_code-2.5.0.dist-info}/METADATA +1 -1
  51. {klaude_code-2.4.2.dist-info → klaude_code-2.5.0.dist-info}/RECORD +53 -53
  52. klaude_code/core/prompts/prompt-nano-banana.md +0 -1
  53. klaude_code/core/tool/truncation.py +0 -203
  54. {klaude_code-2.4.2.dist-info → klaude_code-2.5.0.dist-info}/WHEEL +0 -0
  55. {klaude_code-2.4.2.dist-info → klaude_code-2.5.0.dist-info}/entry_points.txt +0 -0
@@ -32,51 +32,40 @@ def _render_task_metadata_block(
32
32
  currency_symbol = "¥" if currency == "CNY" else "$"
33
33
 
34
34
  # First column: mark only
35
- mark = Text("└", style=ThemeKey.METADATA_DIM) if is_sub_agent else Text("", style=ThemeKey.METADATA)
35
+ mark = Text("└", style=ThemeKey.METADATA_DIM) if is_sub_agent else Text("", style=ThemeKey.METADATA)
36
36
 
37
- # Second column: model@provider / tokens / cost / …
37
+ # Second column: model@provider description / tokens / cost / …
38
38
  content = Text()
39
39
  content.append_text(Text(metadata.model_name, style=ThemeKey.METADATA_BOLD))
40
40
  if metadata.provider is not None:
41
41
  content.append_text(Text("@", style=ThemeKey.METADATA)).append_text(
42
42
  Text(metadata.provider.lower().replace(" ", "-"), style=ThemeKey.METADATA)
43
43
  )
44
+ if metadata.description:
45
+ content.append_text(Text(" ", style=ThemeKey.METADATA)).append_text(
46
+ Text(metadata.description, style=ThemeKey.METADATA_DIM)
47
+ )
44
48
 
45
49
  # All info parts (tokens, cost, context, etc.)
46
50
  parts: list[Text] = []
47
51
 
48
52
  if metadata.usage is not None:
49
- # Tokens: ↑ 37k cache 5k ↓ 907 think 45k
50
- token_parts: list[Text] = [
51
- Text.assemble(("↑", ThemeKey.METADATA_DIM), (format_number(metadata.usage.input_tokens), ThemeKey.METADATA))
52
- ]
53
+ # Tokens: ↑37k 5k ↓907 ∿45k ⌗ 100
54
+ token_text = Text()
55
+ token_text.append("↑", style=ThemeKey.METADATA_DIM)
56
+ token_text.append(format_number(metadata.usage.input_tokens), style=ThemeKey.METADATA)
53
57
  if metadata.usage.cached_tokens > 0:
54
- token_parts.append(
55
- Text.assemble(
56
- Text("cache ", style=ThemeKey.METADATA_DIM),
57
- Text(format_number(metadata.usage.cached_tokens), style=ThemeKey.METADATA),
58
- )
59
- )
60
- token_parts.append(
61
- Text.assemble(
62
- ("↓", ThemeKey.METADATA_DIM), (format_number(metadata.usage.output_tokens), ThemeKey.METADATA)
63
- )
64
- )
58
+ token_text.append(" ◎", style=ThemeKey.METADATA_DIM)
59
+ token_text.append(format_number(metadata.usage.cached_tokens), style=ThemeKey.METADATA)
60
+ token_text.append("", style=ThemeKey.METADATA_DIM)
61
+ token_text.append(format_number(metadata.usage.output_tokens), style=ThemeKey.METADATA)
65
62
  if metadata.usage.reasoning_tokens > 0:
66
- token_parts.append(
67
- Text.assemble(
68
- ("think ", ThemeKey.METADATA_DIM),
69
- (format_number(metadata.usage.reasoning_tokens), ThemeKey.METADATA),
70
- )
71
- )
63
+ token_text.append(" ∿", style=ThemeKey.METADATA_DIM)
64
+ token_text.append(format_number(metadata.usage.reasoning_tokens), style=ThemeKey.METADATA)
72
65
  if metadata.usage.image_tokens > 0:
73
- token_parts.append(
74
- Text.assemble(
75
- ("image ", ThemeKey.METADATA_DIM),
76
- (format_number(metadata.usage.image_tokens), ThemeKey.METADATA),
77
- )
78
- )
79
- parts.append(Text(" · ").join(token_parts))
66
+ token_text.append(" ⌗ ", style=ThemeKey.METADATA_DIM)
67
+ token_text.append(format_number(metadata.usage.image_tokens), style=ThemeKey.METADATA)
68
+ parts.append(token_text)
80
69
 
81
70
  # Cost
82
71
  if metadata.usage is not None and metadata.usage.total_cost is not None:
@@ -87,41 +76,41 @@ def _render_task_metadata_block(
87
76
  )
88
77
  )
89
78
  if metadata.usage is not None:
90
- # Context usage
79
+ # Context usage: 31k/168k(18.4%)
91
80
  if show_context_and_time and metadata.usage.context_usage_percent is not None:
92
81
  context_size = format_number(metadata.usage.context_size or 0)
93
- # Calculate effective limit (same as Usage.context_usage_percent)
94
82
  effective_limit = (metadata.usage.context_limit or 0) - (metadata.usage.max_tokens or DEFAULT_MAX_TOKENS)
95
83
  effective_limit_str = format_number(effective_limit) if effective_limit > 0 else "?"
96
84
  parts.append(
97
85
  Text.assemble(
98
- ("context ", ThemeKey.METADATA_DIM),
99
86
  (context_size, ThemeKey.METADATA),
100
87
  ("/", ThemeKey.METADATA_DIM),
101
88
  (effective_limit_str, ThemeKey.METADATA),
102
- (f" ({metadata.usage.context_usage_percent:.1f}%)", ThemeKey.METADATA_DIM),
89
+ (f"({metadata.usage.context_usage_percent:.1f}%)", ThemeKey.METADATA_DIM),
103
90
  )
104
91
  )
105
92
 
106
- # TPS
93
+ # TPS: 45.2tps
107
94
  if metadata.usage.throughput_tps is not None:
108
95
  parts.append(
109
96
  Text.assemble(
110
- (f"{metadata.usage.throughput_tps:.1f} ", ThemeKey.METADATA),
111
- ("avg-tps", ThemeKey.METADATA_DIM),
97
+ (f"{metadata.usage.throughput_tps:.1f}", ThemeKey.METADATA),
98
+ ("tps", ThemeKey.METADATA_DIM),
112
99
  )
113
100
  )
114
101
 
115
- # First token latency
102
+ # First token latency: 100ms-ftl / 2.1s-ftl
116
103
  if metadata.usage.first_token_latency_ms is not None:
104
+ ftl_ms = metadata.usage.first_token_latency_ms
105
+ ftl_str = f"{ftl_ms / 1000:.1f}s" if ftl_ms >= 1000 else f"{ftl_ms:.0f}ms"
117
106
  parts.append(
118
107
  Text.assemble(
119
- (f"{metadata.usage.first_token_latency_ms:.0f}", ThemeKey.METADATA),
120
- ("ms avg-ftl", ThemeKey.METADATA_DIM),
108
+ (ftl_str, ThemeKey.METADATA),
109
+ ("-ftl", ThemeKey.METADATA_DIM),
121
110
  )
122
111
  )
123
112
 
124
- # Duration
113
+ # Duration: 12.5s
125
114
  if show_context_and_time and metadata.task_duration_s is not None:
126
115
  parts.append(
127
116
  Text.assemble(
@@ -130,18 +119,19 @@ def _render_task_metadata_block(
130
119
  )
131
120
  )
132
121
 
133
- # Turn count
122
+ # Turn count: 1step / 3steps
134
123
  if show_context_and_time and metadata.turn_count > 0:
124
+ suffix = "step" if metadata.turn_count == 1 else "steps"
135
125
  parts.append(
136
126
  Text.assemble(
137
127
  (str(metadata.turn_count), ThemeKey.METADATA),
138
- (" turns", ThemeKey.METADATA_DIM),
128
+ (suffix, ThemeKey.METADATA_DIM),
139
129
  )
140
130
  )
141
131
 
142
132
  if parts:
143
- content.append_text(Text(" · ", style=ThemeKey.METADATA_DIM))
144
- content.append_text(Text(" · ", style=ThemeKey.METADATA_DIM).join(parts))
133
+ content.append_text(Text(" ", style=ThemeKey.METADATA_DIM))
134
+ content.append_text(Text(" ", style=ThemeKey.METADATA_DIM).join(parts))
145
135
 
146
136
  grid.add_row(mark, content)
147
137
  return grid if not is_sub_agent else Padding(grid, (0, 0, 0, 2))
@@ -151,6 +141,9 @@ def render_task_metadata(e: events.TaskMetadataEvent) -> RenderableType:
151
141
  """Render task metadata including main agent and sub-agents."""
152
142
  renderables: list[RenderableType] = []
153
143
 
144
+ if e.cancelled:
145
+ renderables.append(Text())
146
+
154
147
  renderables.append(
155
148
  _render_task_metadata_block(e.metadata.main_agent, is_sub_agent=False, show_context_and_time=True)
156
149
  )
@@ -176,10 +169,9 @@ def render_task_metadata(e: events.TaskMetadataEvent) -> RenderableType:
176
169
  ("Σ ", ThemeKey.METADATA_DIM),
177
170
  ("total ", ThemeKey.METADATA_DIM),
178
171
  (currency_symbol, ThemeKey.METADATA_DIM),
179
- (f"{total_cost:.4f}", ThemeKey.METADATA),
172
+ (f"{total_cost:.4f}", ThemeKey.METADATA_DIM),
180
173
  )
181
- grid = create_grid()
182
- grid.add_row(Text(" ", style=ThemeKey.METADATA_DIM), total_line)
183
- renderables.append(Padding(grid, (0, 0, 0, 2)))
174
+
175
+ renderables.append(Padding(total_line, (0, 0, 0, 2)))
184
176
 
185
177
  return Group(*renderables)
@@ -61,10 +61,8 @@ class Divider(MarkdownElement):
61
61
 
62
62
  class MarkdownTable(TableElement):
63
63
  def __rich_console__(self, console: Console, options: ConsoleOptions) -> RenderResult:
64
- # rich.box.MARKDOWN intentionally includes a blank top/bottom edge row. Rather than
65
- # post-processing rendered segments, disable outer edges to avoid emitting those rows.
66
64
  table = Table(
67
- box=box.MARKDOWN,
65
+ box=box.MINIMAL,
68
66
  show_edge=False,
69
67
  border_style=console.get_style("markdown.table.border"),
70
68
  )
@@ -54,7 +54,7 @@ LIGHT_PALETTE = Palette(
54
54
  grey3="#c4ced4",
55
55
  grey_green="#96a096",
56
56
  purple="#5f5fb7",
57
- lavender="#5f87af",
57
+ lavender="#7878b0",
58
58
  diff_add="#2e5a32 on #dafbe1",
59
59
  diff_add_char="#2e5a32 on #aceebb",
60
60
  diff_remove="#82071e on #ffecec",
@@ -276,7 +276,7 @@ def get_theme(theme: str | None = None) -> Themes:
276
276
  ThemeKey.TOOL_PARAM.value: palette.green,
277
277
  ThemeKey.TOOL_PARAM_BOLD.value: "bold " + palette.green,
278
278
  ThemeKey.TOOL_RESULT.value: palette.grey_green,
279
- ThemeKey.TOOL_RESULT_TREE_PREFIX.value: palette.grey3 + " dim",
279
+ ThemeKey.TOOL_RESULT_TREE_PREFIX.value: palette.grey3,
280
280
  ThemeKey.TOOL_RESULT_BOLD.value: "bold " + palette.grey_green,
281
281
  ThemeKey.TOOL_RESULT_TRUNCATED.value: palette.grey1 + " dim",
282
282
  ThemeKey.TOOL_MARK.value: "bold",
@@ -498,31 +498,6 @@ def render_mermaid_tool_result(
498
498
  return viewer
499
499
 
500
500
 
501
- def _extract_truncation(
502
- ui_extra: model.ToolResultUIExtra | None,
503
- ) -> model.TruncationUIExtra | None:
504
- return ui_extra if isinstance(ui_extra, model.TruncationUIExtra) else None
505
-
506
-
507
- def render_truncation_info(ui_extra: model.TruncationUIExtra) -> RenderableType:
508
- """Render truncation info for the user."""
509
- truncated_kb = ui_extra.truncated_length / 1024
510
-
511
- text = Text.assemble(
512
- ("Offload context to ", ThemeKey.TOOL_RESULT_TRUNCATED),
513
- (ui_extra.saved_file_path, ThemeKey.TOOL_RESULT_TRUNCATED),
514
- (f", {truncated_kb:.1f}KB truncated", ThemeKey.TOOL_RESULT_TRUNCATED),
515
- )
516
- text.no_wrap = True
517
- text.overflow = "ellipsis"
518
- return text
519
-
520
-
521
- def get_truncation_info(tr: events.ToolResultEvent) -> model.TruncationUIExtra | None:
522
- """Extract truncation info from a tool result event."""
523
- return _extract_truncation(tr.ui_extra)
524
-
525
-
526
501
  def render_report_back_tool_call() -> RenderableType:
527
502
  return _render_tool_call_tree(mark=MARK_DONE, tool_name="Report Back", details=None)
528
503
 
@@ -659,12 +634,6 @@ def render_tool_result(
659
634
  rendered.append(r_diffs.render_structured_diff(item, show_file_name=show_file_name))
660
635
  return wrap(Group(*rendered)) if rendered else None
661
636
 
662
- # Show truncation info if output was truncated and saved to file
663
- truncation_info = get_truncation_info(e)
664
- if truncation_info:
665
- result = render_generic_tool_result(e.result, is_error=e.is_error)
666
- return wrap(Group(render_truncation_info(truncation_info), result))
667
-
668
637
  diff_ui = _extract_diff(e.ui_extra)
669
638
  md_ui = _extract_markdown_doc(e.ui_extra)
670
639
 
@@ -47,12 +47,9 @@ def render_welcome(e: events.WelcomeEvent) -> RenderableType:
47
47
  # Use format_model_params for consistent formatting
48
48
  param_strings = format_model_params(e.llm_config)
49
49
 
50
- # Check if we have sub-agent models to show
51
- has_sub_agents = e.show_sub_agent_models and e.sub_agent_models
52
-
53
50
  # Render config items with tree-style prefixes
54
51
  for i, param_str in enumerate(param_strings):
55
- is_last = i == len(param_strings) - 1 and not has_sub_agents
52
+ is_last = i == len(param_strings) - 1
56
53
  prefix = "└─ " if is_last else "├─ "
57
54
  panel_content.append_text(
58
55
  Text.assemble(
@@ -62,34 +59,6 @@ def render_welcome(e: events.WelcomeEvent) -> RenderableType:
62
59
  )
63
60
  )
64
61
 
65
- # Render sub-agent models
66
- if has_sub_agents:
67
- # Add sub-agents header with tree prefix
68
- panel_content.append_text(
69
- Text.assemble(
70
- ("\n", ThemeKey.WELCOME_INFO),
71
- ("└─ ", ThemeKey.LINES),
72
- ("sub-agents:", ThemeKey.WELCOME_INFO),
73
- )
74
- )
75
- sub_agent_items = list(e.sub_agent_models.items())
76
- max_type_len = max(len(t) for t in e.sub_agent_models)
77
- for i, (sub_agent_type, sub_llm_config) in enumerate(sub_agent_items):
78
- is_last = i == len(sub_agent_items) - 1
79
- prefix = "└─ " if is_last else "├─ "
80
- panel_content.append_text(
81
- Text.assemble(
82
- ("\n", ThemeKey.WELCOME_INFO),
83
- (" ", ThemeKey.WELCOME_INFO), # Indentation for sub-items
84
- (prefix, ThemeKey.LINES),
85
- (sub_agent_type.lower().ljust(max_type_len), ThemeKey.WELCOME_INFO),
86
- (": ", ThemeKey.LINES),
87
- (str(sub_llm_config.model_id), ThemeKey.WELCOME_HIGHLIGHT),
88
- (" @ ", ThemeKey.WELCOME_INFO),
89
- (sub_llm_config.provider_name, ThemeKey.WELCOME_INFO),
90
- )
91
- )
92
-
93
62
  border_style = ThemeKey.WELCOME_DEBUG_BORDER if debug_mode else ThemeKey.LINES
94
63
 
95
64
  if e.show_klaude_code_info:
@@ -394,17 +394,14 @@ class PromptToolkitInput(InputProviderABC):
394
394
  with contextlib.suppress(Exception):
395
395
  _patch_completion_menu_controls(self._session.app.layout.container)
396
396
 
397
- # Reserve more vertical space while the model picker overlay is open.
397
+ # Reserve more vertical space while overlays (selector, completion menu) are open.
398
398
  # prompt_toolkit's default multiline prompt caps out at ~9 lines.
399
- self._patch_prompt_height_for_model_picker()
399
+ self._patch_prompt_height_for_overlays()
400
400
 
401
401
  # Ensure completion menu has default selection
402
402
  self._session.default_buffer.on_completions_changed += self._select_first_completion_on_open # pyright: ignore[reportUnknownMemberType]
403
403
 
404
- def _patch_prompt_height_for_model_picker(self) -> None:
405
- if self._model_picker is None and self._thinking_picker is None:
406
- return
407
-
404
+ def _patch_prompt_height_for_overlays(self) -> None:
408
405
  with contextlib.suppress(Exception):
409
406
  root = self._session.app.layout.container
410
407
  input_window = _find_window_for_buffer(root, self._session.default_buffer)
@@ -417,14 +414,33 @@ class PromptToolkitInput(InputProviderABC):
417
414
  picker_open = (self._model_picker is not None and self._model_picker.is_open) or (
418
415
  self._thinking_picker is not None and self._thinking_picker.is_open
419
416
  )
420
- if picker_open:
421
- # Target 20 rows, but cap to the current terminal size.
417
+
418
+ try:
419
+ complete_state = self._session.default_buffer.complete_state
420
+ completion_open = complete_state is not None and bool(complete_state.completions)
421
+ except Exception:
422
+ completion_open = False
423
+
424
+ try:
425
+ original_height_value = original_height() if callable(original_height) else original_height
426
+ except Exception:
427
+ original_height_value = None
428
+ original_height_int = original_height_value if isinstance(original_height_value, int) else None
429
+
430
+ if picker_open or completion_open:
431
+ target_rows = 20 if picker_open else 14
432
+
433
+ # Cap to the current terminal size.
422
434
  # Leave a small buffer to avoid triggering "Window too small".
423
435
  try:
424
436
  rows = get_app().output.get_size().rows
425
437
  except Exception:
426
438
  rows = 0
427
- return max(3, min(20, rows - 2))
439
+
440
+ expanded = max(3, min(target_rows, rows - 2))
441
+ if original_height_int is not None:
442
+ expanded = max(original_height_int, expanded)
443
+ return expanded
428
444
 
429
445
  if callable(original_height):
430
446
  return original_height()
@@ -8,6 +8,7 @@ from klaude_code.const import (
8
8
  SIGINT_DOUBLE_PRESS_EXIT_TEXT,
9
9
  STATUS_COMPOSING_TEXT,
10
10
  STATUS_DEFAULT_TEXT,
11
+ STATUS_SHOW_BUFFER_LENGTH,
11
12
  STATUS_THINKING_TEXT,
12
13
  )
13
14
  from klaude_code.protocol import events, model, tools
@@ -180,7 +181,7 @@ class ActivityState:
180
181
  if self._composing:
181
182
  text = Text()
182
183
  text.append(STATUS_COMPOSING_TEXT, style=ThemeKey.STATUS_TEXT)
183
- if self._buffer_length > 0:
184
+ if STATUS_SHOW_BUFFER_LENGTH and self._buffer_length > 0:
184
185
  text.append(f" ({self._buffer_length:,})", style=ThemeKey.STATUS_TEXT)
185
186
  return text
186
187
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 2.4.2
3
+ Version: 2.5.0
4
4
  Summary: Minimal code agent CLI
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: chardet>=5.2.0
@@ -1,6 +1,6 @@
1
1
  klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  klaude_code/app/__init__.py,sha256=7mgWpN9SFDqe8AW44bBn9M19nVsBcZURrsGB_8l2hrU,264
3
- klaude_code/app/runtime.py,sha256=RBWNnB_CgFu9FsKX4YOPjIdzHOdNN0lIoUl_LMT9-SM,6152
3
+ klaude_code/app/runtime.py,sha256=St5ZVo9snvc90R5fG4OojlWwtlRSB66AZAYfZD7AOCE,5982
4
4
  klaude_code/auth/__init__.py,sha256=jLUgi4V4m0t2BlVuuni7iANOErpJgAeEqByuD1sKUvQ,480
5
5
  klaude_code/auth/base.py,sha256=ccH2sC0TWB5lPpGm4FSjCgnehwn9riYiXxHCh2iFJe0,3011
6
6
  klaude_code/auth/claude/__init__.py,sha256=h1oyqEttDM5TAF6w1Stk6YXYMsbATjODCsi6GhU4zAA,218
@@ -18,41 +18,40 @@ klaude_code/cli/config_cmd.py,sha256=ZDNt1qtXbiWtFJBIaqtfqKrGHXQ1X-NHBeu1k1DoO1o
18
18
  klaude_code/cli/cost_cmd.py,sha256=6bL22amGEB2gfCV9KXQfN5cZYyPL6J6JVIjV65_QjJo,12471
19
19
  klaude_code/cli/debug.py,sha256=vEHOjObhrIHDAXk3q6cOgeW2NZxCx5AWM1rJ6FiJnVU,1901
20
20
  klaude_code/cli/list_model.py,sha256=I3dLrbLfh-cy_FvDCYvKnFGGn9x8v04PtOCcpImUv1U,13258
21
- klaude_code/cli/main.py,sha256=RBmCs-k6Yvcpyw1tjKqSS1HB2Ing7N93qzsr8OwbtJY,8738
21
+ klaude_code/cli/main.py,sha256=w1b7AaDszcQRpMta90ChKEQ9MfJEYdpXs9swv2Nsv2Y,8711
22
22
  klaude_code/cli/self_update.py,sha256=mn1B7Xn1keQkbwoDURzsM2fFjorzJTNLlV-Y_NYa6fA,2708
23
23
  klaude_code/cli/session_cmd.py,sha256=IyuSkqHOLldcm8qraJWJZEme9TY5Rfqmld9NmVJuHnc,3198
24
24
  klaude_code/config/__init__.py,sha256=Qe1BeMekBfO2-Zd30x33lB70hdM1QQZGrp4DbWSQ-II,353
25
25
  klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
26
- klaude_code/config/assets/builtin_config.yaml,sha256=70SunejGS2fPCw4lxsqtaaCtP53uw1szuWrkvEYoftA,7023
26
+ klaude_code/config/assets/builtin_config.yaml,sha256=oM191oAgb5Vi7323RsZ1pVbAt6BSwOhnxJ_zZLvpyy0,7202
27
27
  klaude_code/config/builtin_config.py,sha256=1rHcFWmS0k6rXeIqR6sF_OgGXSbEd4ugh9bh2N6VSS0,1494
28
28
  klaude_code/config/config.py,sha256=0-CLWK5oGGa5PY6o2mVkLNiaiuoaG8zp1UvQ6q0_Xxc,23948
29
29
  klaude_code/config/model_matcher.py,sha256=8pYt7DhEhsjLlYS7G14k6KdDtIzcNj2fYhQQach_JTU,6110
30
30
  klaude_code/config/sub_agent_model_helper.py,sha256=ntEZXocf3nGesFb8TeyGy1zoB8-yHKih4zngJRdjvf4,8040
31
31
  klaude_code/config/thinking.py,sha256=RDWH8UYbeDoIKPXaCIcvVwPAh07Ntaq8w5Zn_fhm-Fk,9329
32
- klaude_code/const.py,sha256=vdp49j8uIjKJ_H3YrRuE3jcAEhm57EL73C--By6ZXtU,10907
32
+ klaude_code/const.py,sha256=VIHmzb1QNNv06bj7uo-y9LOcunhIMYyJe3RUaShIbkM,11153
33
33
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- klaude_code/core/agent.py,sha256=_jfe3WLE8T2twYaMpgjrFM7pwzMerirsq7YTLqpoufM,3560
35
- klaude_code/core/agent_profile.py,sha256=iS-0lX_-UtAaj-fpk0VbOOQz6vCtHW7UQAx9xqDOrk8,11489
36
- klaude_code/core/executor.py,sha256=LC-K6hfThs2fwPhI2pEmUe5tCW7OipSg4fAQeJhOVEo,34039
34
+ klaude_code/core/agent.py,sha256=5TNzzzHgKLKpEcFhaM0d136kaGUn_mESC8b1nLoxS2o,3913
35
+ klaude_code/core/agent_profile.py,sha256=FlLDfwyGyoycJYdp70vCuUliZ0GrmcVd0ZCOs4x7MuQ,12776
36
+ klaude_code/core/executor.py,sha256=TKS2TzQM0X1BLxw6x0HoXk0l2QNTrWCPap6wplSgQgQ,33252
37
37
  klaude_code/core/manager/__init__.py,sha256=hdIbpnYj6i18byiWjtJIm5l7NYYDQMvafw8fePVPydc,562
38
38
  klaude_code/core/manager/llm_clients.py,sha256=X2oMFWgJcP0tK8GEtMMDYR3HyR6_H8FuyCqpzWF5x2k,871
39
39
  klaude_code/core/manager/llm_clients_builder.py,sha256=_88MvbjNK-4s3wKTdzP-GmoUVGKyD88oWXZ7oqRWF8A,1902
40
- klaude_code/core/manager/sub_agent_manager.py,sha256=URzvged6ra6eY0jx1yQlvq8WdhBEsMvirWtOPCcsHNM,6991
40
+ klaude_code/core/manager/sub_agent_manager.py,sha256=sQ88o0ivWHTlaNz-FC23CiHiPXF4mLsQ0T69jPO9Hck,7797
41
41
  klaude_code/core/prompts/prompt-claude-code.md,sha256=uuWBv6GrG63mdmBedAHT5U9yOpbHSKFYbbS2xBnUzOE,8290
42
42
  klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md,sha256=SW-y8AmR99JL_9j26k9YVAOQuZ18vR12aT5CWHkZDc4,11741
43
43
  klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md,sha256=GA1pIIF6JuAl4P3FIW4tVJ6zL_5iZ8MY_PF0DW9hBuU,11719
44
44
  klaude_code/core/prompts/prompt-codex.md,sha256=ybL6CXrGnK6Cw9KuEicQg4kKllIcVa2NwUyuUWitPzk,21672
45
45
  klaude_code/core/prompts/prompt-gemini.md,sha256=JjE1tHSByGKJzjn4Gpj1zekT7ry1Yqbwx5qx3fZy2gE,3901
46
46
  klaude_code/core/prompts/prompt-minimal.md,sha256=6-ZmQQkE3f92W_3V2wS7ocB13wLog1_UojCjZG0K4v8,1559
47
- klaude_code/core/prompts/prompt-nano-banana.md,sha256=3e5GUmtW41eX3pCUBB1j5TFgAM71XlFVyIsix66GEvY,81
48
47
  klaude_code/core/prompts/prompt-sub-agent-explore.md,sha256=21kFodjhvN0L-c_ZFo4yVhJOyzfgES-Dty9Vz_Ew9q8,2629
49
48
  klaude_code/core/prompts/prompt-sub-agent-image-gen.md,sha256=tXYKSzFd04OiC0dmVO9suMKeD5f9qo_4NsvqGo7irfI,78
50
- klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=n7fcIs26Xnu_CvHda_S_k5LGTpV3njY04yo88FT_S9A,3602
49
+ klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=UwrO5M_jPUbee_8lL7gB-2VFFLxvzEejluXDkMzmR5A,3625
51
50
  klaude_code/core/prompts/prompt-sub-agent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
52
51
  klaude_code/core/reminders.py,sha256=SOSB1wZMPdCtCwTpvjUW5et-d0JcnUxF7lMg90CZnA4,24384
53
- klaude_code/core/task.py,sha256=uBfl2S_9n1wmf0WvzMjLzGws_el-qimYwp3Mgxhdng4,11369
54
- klaude_code/core/tool/__init__.py,sha256=xA2zrHj3TPJ8OIssCsr74oRozJAJj4sdsr2eE5fOj2Q,1654
55
- klaude_code/core/tool/context.py,sha256=OFUJtT0SdgzScec0LbSMz6a9yvW5oqkR-hqe4FJWk88,2572
52
+ klaude_code/core/task.py,sha256=eC64_oksvsOdZV_yv16_lWDzqL4QvU_Zs5P5EpitY8c,13911
53
+ klaude_code/core/tool/__init__.py,sha256=ABUzLwQbBoZPirCcgYbI88GEtswfy1JBDkFUsGpQ-zc,1415
54
+ klaude_code/core/tool/context.py,sha256=RnO8gN1w9Lxev0BMqUsZp-zvzD9iKxrYQ3261beLRa4,2975
56
55
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
56
  klaude_code/core/tool/file/_utils.py,sha256=OG4BE9WyJqzH8ilVCL3D9yvAcHk-r-L9snd-E8gO_io,967
58
57
  klaude_code/core/tool/file/apply_patch.py,sha256=LZd3pYQ9ow_TxiFnqYuzD216HmvkLX6lW6BoMd9iQRs,17080
@@ -65,82 +64,83 @@ klaude_code/core/tool/file/read_tool.md,sha256=74SLSl1tq3L0por73M0QV_ws41MRIvGXQ
65
64
  klaude_code/core/tool/file/read_tool.py,sha256=1y_t8oBSa0WtAgk6eLqGvQqf-MQQnj7YbjpLI9r5b7A,13236
66
65
  klaude_code/core/tool/file/write_tool.md,sha256=CNnYgtieUasuHdpXLDpTEsqe492Pf7v75M4RQ3oIer8,613
67
66
  klaude_code/core/tool/file/write_tool.py,sha256=2hB3Ioo-H4X9qNoH47_ENAvo8XNwrJfp8m0UqJostEs,5674
67
+ klaude_code/core/tool/offload.py,sha256=y-OgDVFwB-hMdzXll94ylUhFkiK0KwFCu7sxtFLlNxM,12477
68
68
  klaude_code/core/tool/report_back_tool.py,sha256=SkuRhfLpVwTOSpIj7XwYfGDNBp8YsCUNXieXDkafS2E,3381
69
69
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- klaude_code/core/tool/shell/bash_tool.md,sha256=ILKpnRCBTkU2uSDEdZQjNYo1l6hsM4TO-3RD5zWC61c,3935
70
+ klaude_code/core/tool/shell/bash_tool.md,sha256=VqDfwZOy3Ok1t1rEPKEEkN4Rf_1ZFZzDFzpmOstH2Xo,52
71
71
  klaude_code/core/tool/shell/bash_tool.py,sha256=LPF-Iqypzfq9IMkumErTSBDgCYYNz8vvZYe7ZobqjYk,14779
72
72
  klaude_code/core/tool/shell/command_safety.py,sha256=-x-qs1ctciEvFrBNn2JQq9540lSGacaS5R7e1MmB1y4,6457
73
- klaude_code/core/tool/sub_agent_tool.py,sha256=yTNcsBOElbDRzMNQyslVBDAe179ACCMMgKLP4sKbbwE,4674
73
+ klaude_code/core/tool/sub_agent_tool.py,sha256=WLhjZ6mqMp9KVDZ37ZPaJRXmvpwUQ2Gq2t_f5mcNub8,4734
74
74
  klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- klaude_code/core/tool/todo/todo_write_tool.md,sha256=BFP9qIkzkakzskHwIOPVtDhehkh0F90A5oosyDuC_BE,1682
75
+ klaude_code/core/tool/todo/todo_write_tool.md,sha256=0Qf3NXPPfduA0hY8AQ2dE2P64WfY2nSqqTHhk-0R5as,287
76
76
  klaude_code/core/tool/todo/todo_write_tool.py,sha256=_94zgZ7N43lQN1x5nD-kd4ayNEwjTQXUiSWLv6MW4FE,4222
77
77
  klaude_code/core/tool/todo/todo_write_tool_raw.md,sha256=AJ2OkZGcccQYDXkydPAr5JI2SExBF8qJd0rXsHySLps,9711
78
78
  klaude_code/core/tool/todo/update_plan_tool.md,sha256=OoEF4voHHd5J3VDv7tq3UCHdXApkBvxdHXUf5tVOkE8,157
79
79
  klaude_code/core/tool/todo/update_plan_tool.py,sha256=ChPgE9ZUU2G0kLu93_ZTTs9J5veySuYR41PIWDQ_Tdc,3703
80
80
  klaude_code/core/tool/tool_abc.py,sha256=GtzCGPrPUMJyUVYJAVIMpEcaAJwf-dtisUx-bLdZCX0,1262
81
81
  klaude_code/core/tool/tool_registry.py,sha256=-FRU1aCy-jRG6ohdcl20v5_7c6FC3Ixa4GFLr_WkH6M,1336
82
- klaude_code/core/tool/tool_runner.py,sha256=6hVzDbASpOJWLXg0VXI5H2fgLAkHo1LVOhz1uF-X5as,12856
83
- klaude_code/core/tool/truncation.py,sha256=LEK7mgGQ3f08vgouviIcVr53xptiRJAyhgQa0ALITJk,7691
82
+ klaude_code/core/tool/tool_runner.py,sha256=yj9DpXSMd-u8BOAiFsVVxUbB-CEFS8D_Vcv3ytS3vUA,13238
84
83
  klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
84
  klaude_code/core/tool/web/mermaid_tool.md,sha256=vvPSWxbY3P_cBpHh6AM8Je9JJoMY4FBTJzoteEkwuDU,2095
86
85
  klaude_code/core/tool/web/mermaid_tool.py,sha256=FELwyLBzFdHhkimGee31_qZlrZq2vTzIaFTsp6qeGus,2715
87
- klaude_code/core/tool/web/web_fetch_tool.md,sha256=jIrW-EAmfl50bBevcfioQ3Vrg8kWlHSut8ze_sRgRGw,486
88
- klaude_code/core/tool/web/web_fetch_tool.py,sha256=MpAfiRVg4CNvLQlve4jphpX4juN81aR7XWOZi0I5-UQ,10323
86
+ klaude_code/core/tool/web/web_fetch_tool.md,sha256=i0IwsZ6r9vAQeCpwDBtEGrWmHPzZk_XE_CsqvjE4aUA,498
87
+ klaude_code/core/tool/web/web_fetch_tool.py,sha256=jXbJTgpI_RvyXy5ac8qIrC-AKOUX1fJ3TpqXq_BfkS4,9596
89
88
  klaude_code/core/tool/web/web_search_tool.md,sha256=l5gGPx-fXHFel1zLBljm8isy9pwEYXGrq5cFzzw1VBw,1135
90
89
  klaude_code/core/tool/web/web_search_tool.py,sha256=ljkgXxP6L5nJnbYB_IOUtPUN9zA_h5hBD55lhNAja08,4293
91
- klaude_code/core/turn.py,sha256=oQ7T5GVwbGuxD-CA8hGENRG3gP-78q-taUXMRlPKaqc,18141
90
+ klaude_code/core/turn.py,sha256=UVCiEpgb5g-yv7zVoelyKdmHgqVEYn5WNiYSVbvu4DA,17976
92
91
  klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
93
92
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
94
- klaude_code/llm/anthropic/client.py,sha256=l0b4aMs7LoaowKYNdwz3_xTZVLyfKwfcKXOHbKnJmRs,12356
93
+ klaude_code/llm/anthropic/client.py,sha256=N1p7dll7jxERejsZM5Wh7HbLWcN6bcLQN6LA7OTgRxk,15655
95
94
  klaude_code/llm/anthropic/input.py,sha256=FeNhPwP0QJS7E7kICqhRBe2hUNCYkqLf_YP5qWcI_ao,9474
96
95
  klaude_code/llm/bedrock/__init__.py,sha256=UmXPBXMmigAJ7euIh59iivSeUdrYJwum0RYU7okkkPM,86
97
- klaude_code/llm/bedrock/client.py,sha256=n78PIMONAMiRc-l4-mY9qOu0dhUuirmaRpmvuzWdEsk,2400
96
+ klaude_code/llm/bedrock/client.py,sha256=mETQrhGDt4uEDXO2c3y5Iao9RngygFSF6MOtwqAy1tk,2279
98
97
  klaude_code/llm/claude/__init__.py,sha256=8VCvvEjQQI-RpAMfHCl5ct4zlDU_jgbAuLOc9p9u-B4,61
99
- klaude_code/llm/claude/client.py,sha256=naQU8D0Nhj0NfqZMXnJTOSKK59zHQhhSpbaVx8XQ0JU,4026
100
- klaude_code/llm/client.py,sha256=NI8ZX0sKbO3L3CGOr2uuVgSQFU7tYPLRpr-xd6jscQk,1005
98
+ klaude_code/llm/claude/client.py,sha256=YD0jkzFy1iDngPzaf5uFl_M0CcKh6IeNaujI7ocChA4,3917
99
+ klaude_code/llm/client.py,sha256=2PRxcKBHRk7csw-swglsmLJfYUpbJn6tzNqMb5fJBvE,1820
101
100
  klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
102
- klaude_code/llm/codex/client.py,sha256=K7AthuwszD4w3TiRCyuJ75MEzxoC-oclt0FNQW3wQQ0,5528
101
+ klaude_code/llm/codex/client.py,sha256=d2pDHKokQAaMfnWRoliBtTtjeyElQiPjSwNWyjW_PRs,5389
103
102
  klaude_code/llm/google/__init__.py,sha256=tQtf_mh_mC3E4S9XAsnhS2JZXGRnYUsBKF0jpXZTvM0,61
104
- klaude_code/llm/google/client.py,sha256=P9K6O1Cd2WHozh79HLzufB257x_in-vErMaC_AjfSfk,13739
103
+ klaude_code/llm/google/client.py,sha256=28HwOx4ZI1Fd33IGKA7cN1beAlzy3rNDX7zDSWkKvMM,16606
105
104
  klaude_code/llm/google/input.py,sha256=EVO-EHbLeD8mSW_3sglfboJzGUwGt2zXqoNRmw__Cbo,8378
106
105
  klaude_code/llm/image.py,sha256=jt9FBPFhAIo48pauIEJMIhB9WuDt4wwNs9s3LiEsETE,4272
107
106
  klaude_code/llm/input_common.py,sha256=-GnZ87BfzyGqXTP3WYflFOqbRcbKpJjE9mjIv8qKWsQ,6228
108
107
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
109
- klaude_code/llm/openai_compatible/client.py,sha256=lG2HzCb27WWc8KgT07brbGMO0SxjXQ3hDDDeEOkae6Y,5016
108
+ klaude_code/llm/openai_compatible/client.py,sha256=9epE7B58UX-Rr8Zw62AwVv1uonajzcT2RLjreQTQ_PU,4683
110
109
  klaude_code/llm/openai_compatible/input.py,sha256=VpgT2wbph6bFsB6OFWKnIdjE32W_gKA_p39T-xuJPrE,3217
111
- klaude_code/llm/openai_compatible/stream.py,sha256=9iNmTuatbVsXpcFwLm3_x980X06vKdQ424vSjEhEpKY,12989
110
+ klaude_code/llm/openai_compatible/stream.py,sha256=Twi9C0yuWM6pmO_bZpC4VTUqqPfk24kY_AKDdWOSuuo,15280
112
111
  klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=quajimkUR1uSIPVXYsVNiQSTnOSVt7WuyZ23RyT7lJs,4906
113
112
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
114
- klaude_code/llm/openrouter/client.py,sha256=ccxzTgfoRz4gSC4s5R49RULW7C8fYK32_992GQMEP2Q,6029
113
+ klaude_code/llm/openrouter/client.py,sha256=dlS6bmg26qkTI_He9FuZw1__6D8CbNufiBLvRHuYHK4,5695
115
114
  klaude_code/llm/openrouter/input.py,sha256=Z_Cf6TnMZ5KQNJ0E5IIDCKK2OWlzi8IW0S5A72BBGT0,6176
116
115
  klaude_code/llm/openrouter/reasoning.py,sha256=S0s3OAyfFVm5lHYmQqB3ZIUZlbnlV5zB2gNT3ZRbDZs,4335
116
+ klaude_code/llm/partial_message.py,sha256=NdApUSAp9_GqC-bQ_4RdYpIJzqRhkXwO8sGMcf2-4b0,1185
117
117
  klaude_code/llm/registry.py,sha256=wEf9wvbb9CMvlNDtndKzKY5LN3zqEJYPI2v9kIrqfGI,2235
118
118
  klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
119
- klaude_code/llm/responses/client.py,sha256=i4-mgE2kDSBP8ynH0lQiuUVDakEu2ZXwQjPV8t3c4dw,12596
119
+ klaude_code/llm/responses/client.py,sha256=rN9uq1kboVUyUqD4YhblTb2o0LQTX5-wZwnDMmiRHzo,15214
120
120
  klaude_code/llm/responses/input.py,sha256=T2mAzSR7-z7AFkUjw33c1U3UCBkGX9hlLJVJk5EUnzg,9178
121
- klaude_code/llm/usage.py,sha256=Hukt4hKGUb2EnmwGy2-1Ku0oxEI6J7gOU0EsOSBBJAk,5034
121
+ klaude_code/llm/usage.py,sha256=L6w-DlZ3oF8lOR_SEudPBM9idzIy7__f5FZ4ZJ2smi8,5957
122
122
  klaude_code/log.py,sha256=vyCuV18DX0miengbJF9510UsBrWidSln-CM6pVCe0GA,9301
123
123
  klaude_code/protocol/__init__.py,sha256=TTPnuyQ22RypoTGKdoiS7ZEgHzinuaRHUrauzHDh7Xo,246
124
- klaude_code/protocol/commands.py,sha256=HuAwIUHfw77F2mKTKO2xnrOkmrnJPvoFE78ELJ2RDJQ,962
124
+ klaude_code/protocol/commands.py,sha256=MfiUgN7r7VFGh0pel4nCRnk44F2Yzdcd7xqM-M369vY,771
125
125
  klaude_code/protocol/events/__init__.py,sha256=5WoUQzj3P7Lih6xO6keaJmaLOyxboO1OtOPavrNNj24,1673
126
126
  klaude_code/protocol/events/base.py,sha256=QfqgksjA2Hj-ClmwKVeJ7QA6Z7YdzjswO1NfAVnPCoI,335
127
127
  klaude_code/protocol/events/chat.py,sha256=mI_Ks5IIU1ZiywclQYxzhSsGA3ga7ACKShU6d9_KqSs,731
128
128
  klaude_code/protocol/events/lifecycle.py,sha256=5csZkv3oZIuLzs_7H84v8HgAYwbjIjkZOHfjxq9YfxM,357
129
- klaude_code/protocol/events/metadata.py,sha256=oVZ1zanGcTEFkHW8fLEqS2Z1A9e1MMcjLOcNwUUuCBI,285
129
+ klaude_code/protocol/events/metadata.py,sha256=VcktYa6k51vIQ1H_KeOqQYCZkX0K9gaCQR1neOAOENs,313
130
130
  klaude_code/protocol/events/streaming.py,sha256=Cn7LRIIzd_7Y0Ex1TnqaLf1imS7m8ZplxfTQSpZy9bY,740
131
- klaude_code/protocol/events/system.py,sha256=ihWZLNyPO0xvHAVjMkbGt2FqL8m-ZVreq-MTZLfxQnc,1453
131
+ klaude_code/protocol/events/system.py,sha256=0c3x8WwqAo5Y0JmukKbn7FKtgEv-ErqwJb5PGjuHehk,1294
132
132
  klaude_code/protocol/events/tools.py,sha256=8ds_8Zj-wQWvHNAvNt1-fSIHeDffw1dsLWI7ByrAqcM,617
133
133
  klaude_code/protocol/llm_param.py,sha256=DSCxBdFSdQV8qOhEjjjYNapgA3v4TBkN5V9HgEWho_k,5164
134
134
  klaude_code/protocol/message.py,sha256=pu-wvInS781y-qSKbl9MqO7k3CtAN7Yu4hUHJCXKjZQ,6210
135
- klaude_code/protocol/model.py,sha256=JYiJxmtC7FHnUTwHvuikdrtgbjRvx9zRinOEWpetZu0,10117
135
+ klaude_code/protocol/model.py,sha256=KboyTyfG5DntRMK98oDHomgJfUpHBdeiq51dWXRSqeM,9923
136
136
  klaude_code/protocol/op.py,sha256=pYmvSyVrVr6LlJUiSN2GKwXiDX8meCoxYKNYHXdTKGE,5965
137
137
  klaude_code/protocol/op_handler.py,sha256=B-dmye-6fgQNUDSa2s9cnHogz_Jl4yoQ9EiNgkgjjtA,1973
138
138
  klaude_code/protocol/sub_agent/AGENTS.md,sha256=DHeHl11PYprTOQxInENCEnwnh3kIztBLjvETkwWAO08,1299
139
139
  klaude_code/protocol/sub_agent/__init__.py,sha256=RKPFJawd0AB7nRYBxdwuG-14D8pT6HF1-DPCTAxwohI,3784
140
- klaude_code/protocol/sub_agent/explore.py,sha256=beDpcPFUds54JLhQyVEpuhVp5xm5hRnkp6F3gMCIvw8,2712
141
- klaude_code/protocol/sub_agent/image_gen.py,sha256=T6zf29-rDiO8qg8VG-Mdpe0fEAnNB6kx1iZLyZW0ZMY,4897
142
- klaude_code/protocol/sub_agent/task.py,sha256=96XHxbySu_zdM2K6WjlkPFGXoVDVrLiK2hew1cmwGS4,4290
143
- klaude_code/protocol/sub_agent/web.py,sha256=XZEfY-bKhpw9RZPkrcohLQDMufQITeeweW7ZOHgk2Ao,3200
140
+ klaude_code/protocol/sub_agent/explore.py,sha256=f3fHTyxVeEH4vxJtEts0FbZhdrhOR-_x94QMfNicuUI,1859
141
+ klaude_code/protocol/sub_agent/image_gen.py,sha256=Nd2uzcFViiDfyIVA0XYG9obKAUIEWopIsqWJCjKvVcg,4416
142
+ klaude_code/protocol/sub_agent/task.py,sha256=ZOjzK1itxehlva6WfGKKAJq8FvBOKAywrlgGgfb4Tp4,3441
143
+ klaude_code/protocol/sub_agent/web.py,sha256=XOQdqlIp_xno7Q7YVFPFo4AyKU1wbrVKhIi-NxY8eYM,2506
144
144
  klaude_code/protocol/tools.py,sha256=T0mzW9EhidVMNkwH-KTeB5FgwMvXBnV_MYE5ytrU1TM,343
145
145
  klaude_code/session/__init__.py,sha256=4sw81uQvEd3YUOOjamKk1KqGmxeb4Ic9T1Tee5zztyU,241
146
146
  klaude_code/session/codec.py,sha256=a374UZkOusn9MgFCc--yznDljK_4Qfy6yDPfhQq5_P0,1889
@@ -148,7 +148,7 @@ klaude_code/session/export.py,sha256=Oa0BdrqipFGkGp62dAsvQ-bPQr0HFAQBpAb7OmgaNno
148
148
  klaude_code/session/selector.py,sha256=snBpnz9UQCe_0K8HttSGCJECCE4YEzpWs_Fdmk2P9nI,2195
149
149
  klaude_code/session/session.py,sha256=iQdjVoiretvsPvVkUv1rW9z5IDnwPQ6RuFAp-gATF9o,23162
150
150
  klaude_code/session/store.py,sha256=HRrmFzwEVdExqDQlT9FBZOhlFtQmM9Im9zco8pzvUMY,6455
151
- klaude_code/session/templates/export_session.html,sha256=GRSx1dfRKCSNgKqP51Rs6mT6xWo_ntZrep4-ZzlKru8,125862
151
+ klaude_code/session/templates/export_session.html,sha256=YIr-jzbgwxPviZ_EE7TeYah7tqzOeNzW-IdpzvlfbcY,125826
152
152
  klaude_code/session/templates/mermaid_viewer.html,sha256=Y_wEWFm4mKWpfAz3YMis5DdLEkhw_2d8CpU6jbvGZow,27842
153
153
  klaude_code/skill/__init__.py,sha256=yeWeCfRGPOhT4mx_pjdo4fLondQ_Vx0edBtnFusLhls,839
154
154
  klaude_code/skill/assets/create-plan/SKILL.md,sha256=g_SLyBid2dwj56FBzh87lZGu1t08edLs0plimT2uNzs,2481
@@ -157,7 +157,7 @@ klaude_code/skill/assets/handoff/SKILL.md,sha256=GDHrEqWUeAQy7gGhha_y5jzjpv8C-xh
157
157
  klaude_code/skill/assets/jj-workspace/SKILL.md,sha256=toxoyrBBoGl9Yv4PYrw_gD071LLZ2RoepUR8qTDRn1M,977
158
158
  klaude_code/skill/assets/skill-creator/SKILL.md,sha256=0ByoWb9ao0UKSoM5Tmz-Qe5CAPliTrVpUK0gPd9TFqo,5520
159
159
  klaude_code/skill/loader.py,sha256=dq-92iX4RWUZd8sFO3KZySOVf5-M6xev29tJlaC0Ivw,8612
160
- klaude_code/skill/manager.py,sha256=qPUaZmbKO6f6kF-a948spinRQTCHB4ek7k9TV3elaTE,3448
160
+ klaude_code/skill/manager.py,sha256=GcE6IGooYmWn75wWa2TfJj8VRaBgAlABeK3sD_bIgBY,3448
161
161
  klaude_code/skill/system_skills.py,sha256=ryGN07t0Xv2Yn_Prfq072tdIN0Dp4ZpdXLTl7O7rCkg,6122
162
162
  klaude_code/tui/__init__.py,sha256=Q8-0D-uesw3oFwHcFLD5UaWlTFbrj8qV7dSn6C6_g_o,274
163
163
  klaude_code/tui/command/__init__.py,sha256=qeQYDQ93mCOgP4SdHTXcMvrqQ8xdmMiNH-nBzmMUqIw,3477
@@ -189,28 +189,28 @@ klaude_code/tui/components/developer.py,sha256=1hDr7boJN1z_JyvvFNn8m7MAf4lPDN3eo
189
189
  klaude_code/tui/components/diffs.py,sha256=JUokkkJeTIoKD0b-c-chMzIDmMjivBQqH8DYXIA3hHs,10411
190
190
  klaude_code/tui/components/errors.py,sha256=_9ojf-23ThR-BoMwNEYG68rzILwA_O59muGvofYL10w,669
191
191
  klaude_code/tui/components/mermaid_viewer.py,sha256=MstufMnTauMKzI8cKngXpFqVo-qya20P8ReNkplYtEw,3098
192
- klaude_code/tui/components/metadata.py,sha256=fhfXia7EN8r7IXpzKxflTJy5M6cL9hDFMXbhwnnNR6U,7235
192
+ klaude_code/tui/components/metadata.py,sha256=HjIZkMyGu8jgTm4XgkMy82wKsoJXnzQwq_9su7Cqzm4,7227
193
193
  klaude_code/tui/components/rich/__init__.py,sha256=zEZjnHR3Fnv_sFMxwIMjoJfwDoC4GRGv3lHJzAGRq_o,236
194
194
  klaude_code/tui/components/rich/cjk_wrap.py,sha256=eMqBxftUtll7zrytUb9WtJ6naYLyax0W4KJRpGwWulM,7602
195
195
  klaude_code/tui/components/rich/code_panel.py,sha256=ZKuJHh-kh-hIkBXSGLERLaDbJ7I9hvtvmYKocJn39_w,4744
196
196
  klaude_code/tui/components/rich/live.py,sha256=xiMT6dPsxM_jaazddKrV9CMJQWwpe2t9OdjffHvo1JU,2821
197
- klaude_code/tui/components/rich/markdown.py,sha256=wgTRzDJTcI2u5vr_WbAnoBjQHcSe4RIrpOdynw1nBB8,19286
197
+ klaude_code/tui/components/rich/markdown.py,sha256=hMAWhcuu1GVUK3AsE5G_8Qi-_2aVgTvrbu2nC5QAWgQ,19098
198
198
  klaude_code/tui/components/rich/quote.py,sha256=gTLwxSPQd9nlp73P1ysQIEgOb-BoTE2gzyiPBLMiHcY,3834
199
199
  klaude_code/tui/components/rich/searchable_text.py,sha256=PUe6MotKxSBY4FlPeojVjVQgxCsx_jiQ41bCzLp8WvE,2271
200
200
  klaude_code/tui/components/rich/status.py,sha256=kNt08FQGvMZJB-zUhT5UyVFA7jvuRBNqf6yDXLEhb9c,14756
201
- klaude_code/tui/components/rich/theme.py,sha256=KCPY3Kv5uYpnlULv131XSvW7yDe2z3lx1P2kxLNcCRs,15151
201
+ klaude_code/tui/components/rich/theme.py,sha256=IKzOh5ecKyYOHEMvdtsDNRPXDSW98lNc0INHUgnXe5E,15142
202
202
  klaude_code/tui/components/sub_agent.py,sha256=afkDbndByQmrxO3lvWR3rSvlbIE0wktbjdnlBTwka5I,6309
203
203
  klaude_code/tui/components/thinking.py,sha256=AXC7Xpyiu7ST-eWGLRGY7N8Dak2ny3lV3mvznmfqKmM,2890
204
- klaude_code/tui/components/tools.py,sha256=xqrWBDPsVtOeyE-qF_Idzr1Dhf5bjgrvl-v6svv-H3Q,26230
204
+ klaude_code/tui/components/tools.py,sha256=Up8DQbXuiPfcbiFVZD6gmZO0YBz2SExWS-tE_xeriX4,25060
205
205
  klaude_code/tui/components/user_input.py,sha256=6VHH77xwUUW0rW7yv8hOwGXsmK52HEsBg9-QZVbOm1A,3427
206
- klaude_code/tui/components/welcome.py,sha256=4jYVsX1sGpAqjStM28gEN91MKd_O1quDFbunpLAZnnM,3774
206
+ klaude_code/tui/components/welcome.py,sha256=0IPtYLJG8h1jLp6LtcMuOvmng2FYpGLWP4eP0e2R2ZI,2367
207
207
  klaude_code/tui/display.py,sha256=ovM1F8GDG0gTQjOV2KaXnjE9HFHf7AtThqSIXkP6JQY,3073
208
208
  klaude_code/tui/input/__init__.py,sha256=cAB38ypo7dHo_jgXUCnoBTUKHtiriVaKCv4YepSU9SU,276
209
209
  klaude_code/tui/input/clipboard.py,sha256=HjThFB9MG_YdJ76CQv7B-IUoz5JarbWUZDbUVkH1LpY,5106
210
210
  klaude_code/tui/input/completers.py,sha256=lkDBjnqYPLMgR6AZHhx2bfT_vMW-fbV6aqY9SqRwq74,32571
211
211
  klaude_code/tui/input/key_bindings.py,sha256=2uN48J1HRHeCBqq7WrH5J82NIU59oQscce0HquAiYCI,18876
212
- klaude_code/tui/input/prompt_toolkit.py,sha256=O3EZG1yOgaxrILbmQf4srVuBqDtkShpkxU3LecMP5o8,27790
213
- klaude_code/tui/machine.py,sha256=5Lk3jKdNWrkCOsu42H-0CfiWQ5oTd37KruCIhf8FLZg,24698
212
+ klaude_code/tui/input/prompt_toolkit.py,sha256=ZwkQodc3GufGo7SMmebaOiVopkqxkMDC48y8RFeGuLk,28551
213
+ klaude_code/tui/machine.py,sha256=Mhyhz7lxeMgBfkqA_23ZEhVwv3qq7-g3XTAM6nQm7c4,24759
214
214
  klaude_code/tui/renderer.py,sha256=JZu892irKW0aNis3vs5Rq9aqYdcKhllrhnC2kfsC9tM,29522
215
215
  klaude_code/tui/runner.py,sha256=nOq8wC78HzgqHLRgHC8OgYubH--2gPcDqA6GoV913Yc,11270
216
216
  klaude_code/tui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
@@ -229,7 +229,7 @@ klaude_code/ui/debug_mode.py,sha256=ZvqbOx4c_rUerMbEZzOfcbNf9leqEDFjqJUlALtzF9Y,
229
229
  klaude_code/ui/terminal/__init__.py,sha256=5OeAzr994r8-peWsLON0iXsAvJ2pexwMp36JY7FKGDc,179
230
230
  klaude_code/ui/terminal/title.py,sha256=EZpLXTMhunsZPVGaxP317lH0Ad2oOh7OsjbV3yRD5is,1115
231
231
  klaude_code/update.py,sha256=QER816AZe9u3RhRvP0Z37Jh2Ch5RLy9PREyDsI0e1dA,4480
232
- klaude_code-2.4.2.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
233
- klaude_code-2.4.2.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
234
- klaude_code-2.4.2.dist-info/METADATA,sha256=luR1lEqTH7v-LyM2c4gw1f4ZD7s9_IGv2Xd193Hmm0s,10249
235
- klaude_code-2.4.2.dist-info/RECORD,,
232
+ klaude_code-2.5.0.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
233
+ klaude_code-2.5.0.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
234
+ klaude_code-2.5.0.dist-info/METADATA,sha256=0Gzbk9qkofuEKCdq_DADy0_TcsXBCMVXDIR3UvrAKGg,10249
235
+ klaude_code-2.5.0.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- You're a helpful assistant with capabilities to generate images and edit images.