klaude-code 1.2.10__py3-none-any.whl → 1.2.12__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 (57) hide show
  1. klaude_code/cli/main.py +2 -7
  2. klaude_code/cli/runtime.py +23 -19
  3. klaude_code/command/__init__.py +29 -26
  4. klaude_code/command/clear_cmd.py +0 -2
  5. klaude_code/command/diff_cmd.py +0 -2
  6. klaude_code/command/export_cmd.py +0 -2
  7. klaude_code/command/help_cmd.py +0 -2
  8. klaude_code/command/model_cmd.py +0 -2
  9. klaude_code/command/refresh_cmd.py +0 -2
  10. klaude_code/command/registry.py +4 -8
  11. klaude_code/command/release_notes_cmd.py +0 -2
  12. klaude_code/command/status_cmd.py +2 -4
  13. klaude_code/command/terminal_setup_cmd.py +0 -2
  14. klaude_code/command/thinking_cmd.py +227 -0
  15. klaude_code/config/select_model.py +5 -15
  16. klaude_code/const/__init__.py +1 -1
  17. klaude_code/core/agent.py +1 -1
  18. klaude_code/core/executor.py +1 -4
  19. klaude_code/core/manager/agent_manager.py +15 -9
  20. klaude_code/core/manager/llm_clients_builder.py +4 -7
  21. klaude_code/core/prompt.py +5 -5
  22. klaude_code/core/prompts/prompt-claude-code.md +1 -12
  23. klaude_code/core/prompts/prompt-minimal.md +12 -0
  24. klaude_code/core/task.py +5 -2
  25. klaude_code/core/tool/memory/memory_tool.md +4 -0
  26. klaude_code/core/tool/memory/skill_loader.py +1 -1
  27. klaude_code/core/tool/todo/todo_write_tool.md +0 -157
  28. klaude_code/core/tool/todo/todo_write_tool_raw.md +182 -0
  29. klaude_code/core/tool/tool_registry.py +3 -4
  30. klaude_code/core/turn.py +0 -1
  31. klaude_code/llm/anthropic/client.py +56 -47
  32. klaude_code/llm/client.py +1 -19
  33. klaude_code/llm/codex/client.py +49 -30
  34. klaude_code/llm/openai_compatible/client.py +52 -34
  35. klaude_code/llm/openrouter/client.py +63 -41
  36. klaude_code/llm/responses/client.py +56 -39
  37. klaude_code/llm/usage.py +1 -49
  38. klaude_code/protocol/commands.py +1 -0
  39. klaude_code/protocol/llm_param.py +1 -9
  40. klaude_code/protocol/model.py +4 -3
  41. klaude_code/protocol/op.py +5 -2
  42. klaude_code/protocol/sub_agent.py +1 -0
  43. klaude_code/session/export.py +3 -0
  44. klaude_code/session/selector.py +12 -7
  45. klaude_code/session/session.py +1 -5
  46. klaude_code/session/templates/export_session.html +155 -0
  47. klaude_code/ui/modes/repl/completers.py +3 -3
  48. klaude_code/ui/modes/repl/event_handler.py +1 -5
  49. klaude_code/ui/modes/repl/input_prompt_toolkit.py +3 -34
  50. klaude_code/ui/renderers/metadata.py +11 -1
  51. klaude_code/ui/renderers/tools.py +13 -2
  52. klaude_code/ui/rich/markdown.py +4 -1
  53. klaude_code/ui/terminal/__init__.py +55 -0
  54. {klaude_code-1.2.10.dist-info → klaude_code-1.2.12.dist-info}/METADATA +1 -4
  55. {klaude_code-1.2.10.dist-info → klaude_code-1.2.12.dist-info}/RECORD +57 -54
  56. {klaude_code-1.2.10.dist-info → klaude_code-1.2.12.dist-info}/WHEEL +0 -0
  57. {klaude_code-1.2.10.dist-info → klaude_code-1.2.12.dist-info}/entry_points.txt +0 -0
@@ -118,7 +118,7 @@ def _render_task_metadata_block(
118
118
  if metadata.usage is not None:
119
119
  # Context (only for main agent)
120
120
  if show_context_and_time and metadata.usage.context_usage_percent is not None:
121
- context_size = format_number(metadata.usage.context_token or 0)
121
+ context_size = format_number(metadata.usage.context_size or 0)
122
122
  parts3.append(
123
123
  Text.assemble(
124
124
  ("context", ThemeKey.METADATA_DIM),
@@ -150,6 +150,16 @@ def _render_task_metadata_block(
150
150
  )
151
151
  )
152
152
 
153
+ # Turn count
154
+ if show_context_and_time and metadata.turn_count > 0:
155
+ parts3.append(
156
+ Text.assemble(
157
+ ("turns", ThemeKey.METADATA_DIM),
158
+ (":", ThemeKey.METADATA_DIM),
159
+ (str(metadata.turn_count), ThemeKey.METADATA_DIM),
160
+ )
161
+ )
162
+
153
163
  if parts3:
154
164
  line2 = Text(" / ", style=ThemeKey.METADATA_DIM).join(parts3)
155
165
  renderables.append(Padding(line2, (0, 0, 0, indent + 2)))
@@ -339,12 +339,23 @@ def render_mermaid_tool_call(arguments: str) -> RenderableType:
339
339
 
340
340
 
341
341
  def render_mermaid_tool_result(tr: events.ToolResultEvent) -> RenderableType:
342
+ from klaude_code.ui.terminal import supports_osc8_hyperlinks
343
+
342
344
  link_info = _extract_mermaid_link(tr.ui_extra)
343
345
  if link_info is None:
344
346
  return render_generic_tool_result(tr.result, is_error=tr.status == "error")
345
347
 
346
- link_text = Text.from_markup(f"[blue u][link={link_info.link}]Command+click to view[/link][/blue u]")
347
- return Padding.indent(link_text, level=2)
348
+ if supports_osc8_hyperlinks():
349
+ link_text = Text.from_markup(f"[blue u][link={link_info.link}]Command+click to view[/link][/blue u]")
350
+ return Padding.indent(link_text, level=2)
351
+
352
+ # For terminals that don't support OSC 8, show a hint to use /export
353
+ hint_text = Text.assemble(
354
+ ("Use ", ThemeKey.TOOL_RESULT),
355
+ ("/export", ThemeKey.TOOL_RESULT_BOLD),
356
+ (" to view the diagram.", ThemeKey.TOOL_RESULT),
357
+ )
358
+ return Padding.indent(hint_text, level=2)
348
359
 
349
360
 
350
361
  def _extract_truncation(
@@ -284,7 +284,10 @@ class MarkdownStream:
284
284
 
285
285
  target_height = min(self._live_window_seen_height, self.live_window)
286
286
  if target_height > 0 and current_height < target_height:
287
- pad_count = target_height - current_height + 1
287
+ # Pad only up to the maximum height we've seen so far.
288
+ # This keeps the Live region height stable without overshooting,
289
+ # which can cause the spinner to jump by a line.
290
+ pad_count = target_height - current_height
288
291
  # Pad after the existing lines so spinner visually stays at the bottom.
289
292
  rest_lines = rest_lines + ["\n"] * pad_count
290
293
 
@@ -1 +1,56 @@
1
1
  # Terminal utilities
2
+ import os
3
+ from functools import lru_cache
4
+
5
+
6
+ @lru_cache(maxsize=1)
7
+ def supports_osc8_hyperlinks() -> bool:
8
+ """Check if the current terminal supports OSC 8 hyperlinks.
9
+
10
+ Based on known terminal support. Returns False for unknown terminals.
11
+ """
12
+ term_program = os.environ.get("TERM_PROGRAM", "").lower()
13
+ term = os.environ.get("TERM", "").lower()
14
+
15
+ # Known terminals that do NOT support OSC 8
16
+ unsupported = ("warp", "apple_terminal")
17
+ if any(t in term_program for t in unsupported):
18
+ return False
19
+
20
+ # Known terminals that support OSC 8
21
+ supported = (
22
+ "iterm.app",
23
+ "ghostty",
24
+ "wezterm",
25
+ "kitty",
26
+ "alacritty",
27
+ "hyper",
28
+ "contour",
29
+ "vscode",
30
+ )
31
+ if any(t in term_program for t in supported):
32
+ return True
33
+
34
+ # Kitty sets TERM to xterm-kitty
35
+ if "kitty" in term:
36
+ return True
37
+
38
+ # Ghostty sets TERM to xterm-ghostty
39
+ if "ghostty" in term:
40
+ return True
41
+
42
+ # Windows Terminal
43
+ if os.environ.get("WT_SESSION"):
44
+ return True
45
+
46
+ # VTE-based terminals (GNOME Terminal, etc.) version 0.50+
47
+ vte_version = os.environ.get("VTE_VERSION", "")
48
+ if vte_version:
49
+ try:
50
+ if int(vte_version) >= 5000:
51
+ return True
52
+ except ValueError:
53
+ pass
54
+
55
+ # Default to False for unknown terminals
56
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.2.10
3
+ Version: 1.2.12
4
4
  Summary: Add your description here
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: openai>=1.102.0
@@ -159,9 +159,6 @@ Inside the interactive session (`klaude`), use these commands to streamline your
159
159
  | `Backspace` | Delete character or selected text |
160
160
  | `c` (with selection) | Copy selected text to clipboard |
161
161
 
162
- Mouse support is automatically enabled when input spans multiple lines.
163
-
164
-
165
162
  ### Non-Interactive Headless Mode (exec)
166
163
 
167
164
  Execute a single command without starting the interactive REPL:
@@ -6,50 +6,52 @@ klaude_code/auth/codex/jwt_utils.py,sha256=tuaJKT4vAIGeaQjNzgNcHWGrYYSDrDeaQT9h4
6
6
  klaude_code/auth/codex/oauth.py,sha256=ap78TUPJsF6O6cnkkuj11w1t4bCIVQzyVkuDvOLo0oo,7848
7
7
  klaude_code/auth/codex/token_manager.py,sha256=F4xH5PhE9cksqTiWsU_YAboNe284VgUFWF2VY1sZV9U,2720
8
8
  klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
9
- klaude_code/cli/main.py,sha256=1lasnU_3wrTMmWWNl_1phXraUZn-6w3lsY_zB2xWUFI,12225
10
- klaude_code/cli/runtime.py,sha256=96KCR-wd2sg9-9y0b6L0cfqy2snkC81AzN5463LAo3k,12223
9
+ klaude_code/cli/main.py,sha256=_Srm_OiwJKcM9SUXPGI3jhr6XNs7bzpCpPQvBmn3QLc,12082
10
+ klaude_code/cli/runtime.py,sha256=qrw3SLaiI65v_rD78SGcJ1UXoZxBIK2mitGhDobvM_M,12582
11
11
  klaude_code/cli/session_cmd.py,sha256=cIBm3uUurke-TfBvQHz9mGW29LOAh22FIpXVyypnwDo,2549
12
- klaude_code/command/__init__.py,sha256=k9LJCFzzABhq09q1TeKSl4oG-288MYFXCICnZemVha8,2878
13
- klaude_code/command/clear_cmd.py,sha256=EXIhVHvbfpgTrquLzTyeVAPkIRusjFkknwqzcct51ww,733
12
+ klaude_code/command/__init__.py,sha256=VSbJaTufstDILBqTPHPKLWFt2g5C7fjxb37sonreC4A,3041
13
+ klaude_code/command/clear_cmd.py,sha256=diIe1pscX1ko7bRN4FGylsTvDSAF6HHPwnsbXqTtHP0,657
14
14
  klaude_code/command/command_abc.py,sha256=1Wwp94Q3W08GNCraYYEGcjjNC7JLIei6E953zSZ2lZ4,2605
15
- klaude_code/command/diff_cmd.py,sha256=Hk37Zg-tUchnrmq8128x4xOVU1AfZUypFAGj1FLIpkg,5327
16
- klaude_code/command/export_cmd.py,sha256=npibiB42IYOoCRGtW7pR6CNQWcfSaql-tP-PTqc5BnU,3560
17
- klaude_code/command/help_cmd.py,sha256=B24xKRfpphUQz3A1BMhbzPWWij24PHALglgNbal2l6o,1768
18
- klaude_code/command/model_cmd.py,sha256=RRF7Hp5zrfCdye3bEiRTNwV_BvssJ_LSScIm78-GyBQ,1568
15
+ klaude_code/command/diff_cmd.py,sha256=mQu-FedUsZabE3-KwZV2JmOfm67-A41C2gz7rr6N9W8,5251
16
+ klaude_code/command/export_cmd.py,sha256=MhcyWcT7NqsqJEHZogiXjxQPKXqNbNdJQYRQn_4O5tQ,3484
17
+ klaude_code/command/help_cmd.py,sha256=N9X9q2hw7AXrmvBszmzL6tYz3GNZR768wMQqmC0Vp1Q,1692
18
+ klaude_code/command/model_cmd.py,sha256=Zy5oQV1bgnd7l1cn7quCZx4qZS2gFcWnYKZWM08QFKE,1492
19
19
  klaude_code/command/prompt-deslop.md,sha256=YGaAXqem39zd0UWCFjWUj83Cf7cvUJq1768aJExFqeg,1346
20
20
  klaude_code/command/prompt-dev-docs-update.md,sha256=g1IWIWIa-3qlNOw5mBA4N9H1_nvYcw8AKo7XoQw_AZQ,1855
21
21
  klaude_code/command/prompt-dev-docs.md,sha256=PU9iT6XdUEH6grfSjHVma7xKOQcA__ZTKlEDkbbO0hA,1783
22
22
  klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
23
23
  klaude_code/command/prompt_command.py,sha256=8jBUcfSmC9tXAYkLAB-u81KFqSKtCAHfHMnTQDzpgcg,2607
24
- klaude_code/command/refresh_cmd.py,sha256=fiVlzTLNHqMsidj1JgEpUlB5MixKbijlPmN2n6v9xHI,1347
25
- klaude_code/command/registry.py,sha256=ypRh1ArygVkHSwFDYMpngQudq6rUSJKF9FIM7JGCXus,3914
26
- klaude_code/command/release_notes_cmd.py,sha256=6ywt5MI0PLOrBZF-uNKw0W1FbpEWsp2E9DVnCQ6HPV0,2783
27
- klaude_code/command/status_cmd.py,sha256=SWCv5-JDM7zT1inGt3Bq93x4uTmPFJaXx6G65rUs_Fg,5472
28
- klaude_code/command/terminal_setup_cmd.py,sha256=E819wPNSOnZ3AzMfDwq9bsdlg7-AuSooczBa97gf3ps,11019
24
+ klaude_code/command/refresh_cmd.py,sha256=8TB1ibGn7w0xFemYTzIuoB0VXWU9Klem3wu-HfFfGlk,1271
25
+ klaude_code/command/registry.py,sha256=KzuAKFLm37bVrN1Got8QUopd_Fz0vqIEoUrpoV21C0Y,3830
26
+ klaude_code/command/release_notes_cmd.py,sha256=lDeAjuMDOSUISM0yYKZKbkjrYvFmvA5_fylkalTPaBU,2707
27
+ klaude_code/command/status_cmd.py,sha256=F7XgfivBm80kJEsCgRHGXWOALAT_Y2QyLQ38ooc_ZSE,5393
28
+ klaude_code/command/terminal_setup_cmd.py,sha256=2B12yUEUx0I04bJHNUAqfGrwD9kjJ8Iog5JFsb-E1dg,10943
29
+ klaude_code/command/thinking_cmd.py,sha256=hb7N9prhojd9mZC6IdZQlU4_R3K1df0nTLS9YUb0qBY,7975
29
30
  klaude_code/config/__init__.py,sha256=9XVCYYqzJtCi46I94hbUmJ2yTFuZ-UlH-QTx7OpLAkQ,292
30
31
  klaude_code/config/config.py,sha256=Vc9u7-40T81Rbx1OdMqSWZLh3vf9aj4wmBUnIOH7jAw,6526
31
32
  klaude_code/config/list_model.py,sha256=08vLxar7YAcUNzGTN6bUbPtAoXXyfO5y6LjaaXMbsyQ,8019
32
- klaude_code/config/select_model.py,sha256=el1jqXlNyYmHH_dvdcEkWVOYqIZ9y05_VJRlfZk7HkQ,2565
33
- klaude_code/const/__init__.py,sha256=dSfcFjVeDoc5UEHtzR-9U_BWCVNXggHyiKHwHapASZ0,3980
33
+ klaude_code/config/select_model.py,sha256=aOizajRXcc_IOy0bSzK_KOZhbMQSx4g6IeNkgLsyV1c,2168
34
+ klaude_code/const/__init__.py,sha256=msApH-AQh_ttCgtYVTTW-e4AhCf6nurOcpTEkR0r1M4,3980
34
35
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- klaude_code/core/agent.py,sha256=jNJn0_eIOJSAXyLq167eZtXRpxcVF9G1QrGRLwpNoD8,7642
36
- klaude_code/core/executor.py,sha256=kM24uMTW70q2XZJeb7EvgUpLzusPAraZ8fpepIt-Bg8,18653
36
+ klaude_code/core/agent.py,sha256=4nGp60QGwYv3l-PP5Mzd4CnJ9TqUbftSAlI3O1j3fUo,7621
37
+ klaude_code/core/executor.py,sha256=OkebxW6_64hecQBjHPgDQlw8JgOa_k5meBpNsMBB4qg,18512
37
38
  klaude_code/core/manager/__init__.py,sha256=6CswltCHXBUcezlW7xui2S1swDp8JTkS1YiEHmq4-no,658
38
- klaude_code/core/manager/agent_manager.py,sha256=-yrq9EfsebNarHx4rGtaBlxHKUNv2k6SnVI4t1Q8808,5037
39
+ klaude_code/core/manager/agent_manager.py,sha256=IG07QD3wJWroJrTLdTZKwiCJrQjQikz8MoTyI7KCK0A,5267
39
40
  klaude_code/core/manager/llm_clients.py,sha256=sIFCweup7SJL5o9LbPgRLYE3fDuhYA4ZdhtSF2M0FAQ,2225
40
- klaude_code/core/manager/llm_clients_builder.py,sha256=WY62npVUNsHuygB4jFB-MYLQl-P6ffSJEs8EHJk4DpA,1946
41
+ klaude_code/core/manager/llm_clients_builder.py,sha256=SjSEBJWS77FY5xctu3uxT0JaiQKGtRJnjTZYandJwU0,1772
41
42
  klaude_code/core/manager/sub_agent_manager.py,sha256=SnDFu8ovcQjBkQSJrSD8e0Yf63NhIjYAt8WyQhBcpy0,3760
42
- klaude_code/core/prompt.py,sha256=9eO5AqPXYdIw6QZw-HGIcmCPOMFFJVv73nk7xpAf4BA,3329
43
- klaude_code/core/prompts/prompt-claude-code.md,sha256=3OY5ShcYPp8f0XrIl-3pBVIDZkweWsLzDHy5ldnSOJc,8954
43
+ klaude_code/core/prompt.py,sha256=m6xqUywaSY8My81UFseiGxJq7OA9P0KyWr6OxZU6LkM,3304
44
+ klaude_code/core/prompts/prompt-claude-code.md,sha256=c7kNgwjJqnbwQuKWGJoMx-AMbf1gxAFC3ZFDhngBe74,8293
44
45
  klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md,sha256=SW-y8AmR99JL_9j26k9YVAOQuZ18vR12aT5CWHkZDc4,11741
45
46
  klaude_code/core/prompts/prompt-codex-gpt-5-1.md,sha256=jNi593_4L3EoMvjS0TwltF2b684gtDBsYHa9npxO34A,24239
46
47
  klaude_code/core/prompts/prompt-gemini.md,sha256=JjE1tHSByGKJzjn4Gpj1zekT7ry1Yqbwx5qx3fZy2gE,3901
48
+ klaude_code/core/prompts/prompt-minimal.md,sha256=6-ZmQQkE3f92W_3V2wS7ocB13wLog1_UojCjZG0K4v8,1559
47
49
  klaude_code/core/prompts/prompt-subagent-explore.md,sha256=m7eQMTWWibaZIMPNbMYUhPbNRn5KrTq5tIoXw1HJuLY,2124
48
50
  klaude_code/core/prompts/prompt-subagent-oracle.md,sha256=hGtyDm_6UhJZUJwfXt5A-170is1KMHls85fEEo45z-w,1376
49
51
  klaude_code/core/prompts/prompt-subagent-webfetch.md,sha256=kHtJINbCRiRDrip_q6idHHU3CwbDfrVlpgtSZvugOWI,2304
50
52
  klaude_code/core/prompts/prompt-subagent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
51
53
  klaude_code/core/reminders.py,sha256=S5ZbYYrIoQKPGtLqtqg8yPCwZRD5Vdlkzf1wu86bw8g,18123
52
- klaude_code/core/task.py,sha256=OsYWJeJZlYSKUNbNv4DoTzhnopuh5pjyz2wYWQeRq7k,10457
54
+ klaude_code/core/task.py,sha256=2j7FA_j6oE75oxQCUQ9nON-Ch2d6cOwBasaLBdzensE,10561
53
55
  klaude_code/core/tool/__init__.py,sha256=-pxK4iCkvcdLpav74foMNdeIjsC6PMkVaw_q5kajivg,2170
54
56
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
57
  klaude_code/core/tool/file/_utils.py,sha256=UjXO9Bwyr7YtDeSALiA8cp4KQlQskibZlbk6A33F0q4,779
@@ -65,9 +67,9 @@ klaude_code/core/tool/file/read_tool.py,sha256=I3j6XS4KBt1BH0cyJwLp0zFWh-mq8xAyh
65
67
  klaude_code/core/tool/file/write_tool.md,sha256=CNnYgtieUasuHdpXLDpTEsqe492Pf7v75M4RQ3oIer8,613
66
68
  klaude_code/core/tool/file/write_tool.py,sha256=AqprfzACIL-f-J_ZTLntteCddUBCOKFoIukM6kp_ZqI,4340
67
69
  klaude_code/core/tool/memory/__init__.py,sha256=oeBpjUXcAilCtYXhiXDzavw5-BE_pbB2ZxsFJKTTcdc,143
68
- klaude_code/core/tool/memory/memory_tool.md,sha256=LNpu2kStqcfDA7AXj7IiQqgC6_Yf5kQm06fSVgyN4Jw,1011
70
+ klaude_code/core/tool/memory/memory_tool.md,sha256=qWytU7k0kQQbne_8n4cei2-dDTNpHesmbI2PYza3XR0,1299
69
71
  klaude_code/core/tool/memory/memory_tool.py,sha256=h777Iju8gNijCfYMEALeoyRomBY0FXGu46gykehCeUA,19018
70
- klaude_code/core/tool/memory/skill_loader.py,sha256=k04Ir1FcYNILDtbF2cri0LR4pS6Bw2X8UP0CU6oUd9w,8658
72
+ klaude_code/core/tool/memory/skill_loader.py,sha256=3CywpqhEwAoWOVMKsE9awfYGDkBfO0J-rA-9Ckyk8dQ,8660
71
73
  klaude_code/core/tool/memory/skill_tool.md,sha256=UfjJK5EGAd3mf7ym5rIrRdPyV3kBTxNnwzOjNnHOBrE,973
72
74
  klaude_code/core/tool/memory/skill_tool.py,sha256=8SC4asNZSKfExuhzbyGz4f2cr78PgCpNkut_31IHePw,3602
73
75
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -76,13 +78,14 @@ klaude_code/core/tool/shell/bash_tool.py,sha256=qPB7W51LmFsRxWJoqKih1vNTGIOaXE4w
76
78
  klaude_code/core/tool/shell/command_safety.py,sha256=r5nTltVj1Iil7dmnYByj4jp4du7AtPEaUa4J6XdrlTo,13209
77
79
  klaude_code/core/tool/sub_agent_tool.py,sha256=Ohroht4z-W_kuBo0AvKoL40XQM0QGzScIDAuqYKXSVk,2765
78
80
  klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- klaude_code/core/tool/todo/todo_write_tool.md,sha256=AJ2OkZGcccQYDXkydPAr5JI2SExBF8qJd0rXsHySLps,9711
81
+ klaude_code/core/tool/todo/todo_write_tool.md,sha256=BFP9qIkzkakzskHwIOPVtDhehkh0F90A5oosyDuC_BE,1682
80
82
  klaude_code/core/tool/todo/todo_write_tool.py,sha256=XgSo8F1aJn_0fkh9Gx-5DHNFNlbZys1bUjwhe6NwyLU,4506
83
+ klaude_code/core/tool/todo/todo_write_tool_raw.md,sha256=AJ2OkZGcccQYDXkydPAr5JI2SExBF8qJd0rXsHySLps,9711
81
84
  klaude_code/core/tool/todo/update_plan_tool.md,sha256=OoEF4voHHd5J3VDv7tq3UCHdXApkBvxdHXUf5tVOkE8,157
82
85
  klaude_code/core/tool/todo/update_plan_tool.py,sha256=5MmmApG0wObBgc-mLETjIMupxIv-SZ7Q0uJO2Krtl1k,3794
83
86
  klaude_code/core/tool/tool_abc.py,sha256=3FlVZ8a6hC-_Ci23_cpLaap9nHinHgxSB1TsZL5ylUQ,731
84
87
  klaude_code/core/tool/tool_context.py,sha256=Slnykn14GwN9V_-IBRX3xu0xjvA-Fi3bqHTYR-Z7A5Y,4175
85
- klaude_code/core/tool/tool_registry.py,sha256=2d-5zIsODztgJe7obS1OAZbrQSqAquULcoXPLLEr2Xs,2665
88
+ klaude_code/core/tool/tool_registry.py,sha256=AgJ9m42gKB23GZnUuY4eThSzKaB4_51ytdLDxQD8lIk,2603
86
89
  klaude_code/core/tool/tool_runner.py,sha256=I9BfeRgtVT3IoZGXgEVvzTEF8-fpKFqtbt6MgznJleI,10079
87
90
  klaude_code/core/tool/truncation.py,sha256=hHeJDrvvNt0wE9yGZVaZheYUW0VoJ7QbopKo6wjyP-w,6644
88
91
  klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -90,43 +93,43 @@ klaude_code/core/tool/web/mermaid_tool.md,sha256=Ketpxpr7lz8238p5Q7ZzcyWchWd4dU6
90
93
  klaude_code/core/tool/web/mermaid_tool.py,sha256=Ok0A27oHLnV1c__74bheUuy3wpqDJ1zaXUSxuuqsNPI,2630
91
94
  klaude_code/core/tool/web/web_fetch_tool.md,sha256=_5U-LSoI86rD26nPb0D5BQCr6hj8eyF0UELSiyLznCA,347
92
95
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=iu6kM_-90K8mqHbK9Loui96vICV7d8rmtss68rcFqw0,4958
93
- klaude_code/core/turn.py,sha256=0Pc8GI2tuY2wukCPxCrWvuPlhhZRfXcrduNrDG0yeG8,9517
96
+ klaude_code/core/turn.py,sha256=26Gz-cJ1bNdu3QSr6YHcz4mZovdfuzV9QXsqcLWpvrw,9488
94
97
  klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
95
98
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
96
- klaude_code/llm/anthropic/client.py,sha256=1gk4Fkd4FvEJjt1Ryta9uP-mMN7ZYX4zqNgxkyK0QT8,9605
99
+ klaude_code/llm/anthropic/client.py,sha256=g5mEPmVL0ckTYYxW1_aE-jWfqTgeMdZC4ivIjo-GAIE,9532
97
100
  klaude_code/llm/anthropic/input.py,sha256=qPo4nmhnhSfLqef4UUVoIz8EjoXTxvlsrfsc_6qqM_s,8039
98
- klaude_code/llm/client.py,sha256=7g9jLe4_aUTp7kSjbWmVlSnoJxQD8l1n1PIAegbSXsQ,1505
101
+ klaude_code/llm/client.py,sha256=1yMT5GE_Cx5SZTxmqBwc_FSF5WCPFSKqDThW_upPn68,859
99
102
  klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
100
- klaude_code/llm/codex/client.py,sha256=t-A5kzyqowNIuec1hLlrcYzLnAzTEtVF30wjEKKeg80,4928
103
+ klaude_code/llm/codex/client.py,sha256=fdNSFa2za2EDQR9sCqmooMtBHAg8QfYIW3uwaHgbmjA,5338
101
104
  klaude_code/llm/input_common.py,sha256=purxHHMo_yahNvv0Y1pH7WmfTfZgZqUqyo2JvdFiVO0,8526
102
105
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
103
- klaude_code/llm/openai_compatible/client.py,sha256=R4T0KhQb-gpyczJfUG1y42l4_K_IsIWHFIPLtPZ6iwQ,7597
106
+ klaude_code/llm/openai_compatible/client.py,sha256=TOC98acMdx6t7J7ME4UKM4Ux5oWHdbgJmcrLlOLtFVk,7761
104
107
  klaude_code/llm/openai_compatible/input.py,sha256=rtWVjpwb9tLrinucezmncQXet8MerUxE5Gxc32sfDr4,3750
105
108
  klaude_code/llm/openai_compatible/stream_processor.py,sha256=ckOBWZ_iUqgcESD5pnvjqJxvPI7YA4k9DYZkZ37KbmE,3388
106
109
  klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=kuw3ceDgenQz2Ccc9KYqBkDo6F1sDb5Aga6m41AIECA,4071
107
110
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
108
- klaude_code/llm/openrouter/client.py,sha256=tFb6e0iNz-72pygnmtKnNeQUQ2zY5ui1vTPcho99NCg,7835
111
+ klaude_code/llm/openrouter/client.py,sha256=782c7LEpP03zLv6MDXZc5jnNR0JZ3CohcPgdeflfJtM,8141
109
112
  klaude_code/llm/openrouter/input.py,sha256=2GuDVHd_74ZtHQyFyTGhZqtWjM7m5GYqFtKf--AvmlI,5059
110
113
  klaude_code/llm/openrouter/reasoning_handler.py,sha256=TYIHdwMopi8DVqOpeN3vpyp-GcWOZgTeRnT5QvlK70U,8100
111
114
  klaude_code/llm/registry.py,sha256=bbxZ_Mb7C2xCk_OVUQoZnsyPgmO3tbfJ292qaCtr1Ts,1763
112
115
  klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
113
- klaude_code/llm/responses/client.py,sha256=hcFbDgUJPMZsAR8kSxfshuAEAVXJOZL2FIxVqZ1ku90,9359
116
+ klaude_code/llm/responses/client.py,sha256=I0gScfKSFeqynyqKrcqa1NVynvywEhtgeW6U8AKMEHE,9625
114
117
  klaude_code/llm/responses/input.py,sha256=noNmalXvxw6UXo6ngkhFBroECxK6igmgEQ49YVhY0xg,6049
115
- klaude_code/llm/usage.py,sha256=3FWDQZeM2LKXt1eeP2K40lkjtwovZP6SLCYlBJ0NV8Y,5647
118
+ klaude_code/llm/usage.py,sha256=cq6yZNSKBhRVVjFqBYJQrK3mw9ZSLXaTpbDeal-BjBQ,4205
116
119
  klaude_code/protocol/__init__.py,sha256=aGUgzhYqvhuT3Mk2vj7lrHGriH4h9TSbqV1RsRFAZjQ,194
117
- klaude_code/protocol/commands.py,sha256=ulHcHvvRbJosmp51l-xNio8ImDEI8uVmG17wVH2kg90,580
120
+ klaude_code/protocol/commands.py,sha256=WX7EW3DbZs7oV7zhnKXHQhDZdIZTN35MTBJ4hWMAHjM,606
118
121
  klaude_code/protocol/events.py,sha256=exOriAIxdIzS7WDKCw3am-uw1egx_8tVbvcgO6s3nMI,3562
119
- klaude_code/protocol/llm_param.py,sha256=Hjq8Z-3nGhAJovf-lcsNc0kBVGRDWKe910J5lZwQfq4,4424
120
- klaude_code/protocol/model.py,sha256=rNbwfmqtmrMffpt9CkSDCe32PLCJG9bED_oS_uPWTZk,12116
121
- klaude_code/protocol/op.py,sha256=NScxaXHqqTu5KpDKfMN8Zv5kIZXMrZQOJgDPWhM7rPg,2687
122
+ klaude_code/protocol/llm_param.py,sha256=cb4ubLq21PIsMOC8WJb0aid12z_sT1b7FsbNJMr-jLg,4255
123
+ klaude_code/protocol/model.py,sha256=q6OQKv9yiNOSIVEXimR8m32H_aRpyMpCOo0kYXfiEZE,12137
124
+ klaude_code/protocol/op.py,sha256=hdQTzD6zAsRMJJFaLOPvDX9gokhtIBSYNQuZ20TusI4,2824
122
125
  klaude_code/protocol/op_handler.py,sha256=_lnv3-RxKkrTfGTNBlQ23gbHJBEtMLC8O48SYWDtPjE,843
123
- klaude_code/protocol/sub_agent.py,sha256=dPOG0rGQJEpx2w0FtXodP0VsJLnCtPa5vIAP4eZ1iq8,13548
126
+ klaude_code/protocol/sub_agent.py,sha256=NZib4kubDY8Js7toE6G2eKDNH4sWrmVYnH9FSTqKkZI,13666
124
127
  klaude_code/protocol/tools.py,sha256=hkjVirnQqGTJS46IWvVKXWR4usPPUgDZDnm34LzAVSc,348
125
128
  klaude_code/session/__init__.py,sha256=oXcDA5w-gJCbzmlF8yuWy3ezIW9DgFBNUs-gJHUJ-Rc,121
126
- klaude_code/session/export.py,sha256=OOC4f-dzy1Qk4V6XHspb6abiqYsMvec_UHxp0mEUzTY,24493
127
- klaude_code/session/selector.py,sha256=HTboyzih7V8zbZoSsArJ-GVC1EnXTGocHJwFmZfbeSg,2567
128
- klaude_code/session/session.py,sha256=9sjU1iEpmpawcxh3PuXkfrMzf8It0kc6r_xi8uyCYKE,20170
129
- klaude_code/session/templates/export_session.html,sha256=O25hJaq2WnKFswZSxJOzufGj0WYmva9IQjwod2mzYRc,41537
129
+ klaude_code/session/export.py,sha256=3xyY0F39SbIAf1-h2IO_anNMfjBasncNJZXHh2STGow,24643
130
+ klaude_code/session/selector.py,sha256=F5L1zV1HZGrx-1VLydzqQTAz4cThKxyG2Sc9MUh34DU,2886
131
+ klaude_code/session/session.py,sha256=vm7I-IODBQr7JNkdx2jWfvDZgiLzMRrb0HBebfz7wnU,20051
132
+ klaude_code/session/templates/export_session.html,sha256=jvyVM_ZrRoQIqWslfmo6ASprVYLhbOtT_QTzgkrdXHs,46389
130
133
  klaude_code/trace/__init__.py,sha256=B-S4qdCj8W88AaC_gVmhTaejH6eLYClBVh2Q6aGAVBk,184
131
134
  klaude_code/trace/log.py,sha256=0K0uek2KWq0zkUZijcO-TBM6STLe-h_8IIW0lx7V7ZA,4865
132
135
  klaude_code/ui/__init__.py,sha256=AL1Ro0u8ObNPMj4sci_U4zakG7IpnI3bie-C63E2QPI,2873
@@ -141,10 +144,10 @@ klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJ
141
144
  klaude_code/ui/modes/exec/display.py,sha256=m2kkgaUoGD9rEVUmcm7Vs_PyAI2iruKCJYRhANjSsKo,1965
142
145
  klaude_code/ui/modes/repl/__init__.py,sha256=JursXYxevw0hrezE-urGo25962InIXVPj_uYnPafN-U,1528
143
146
  klaude_code/ui/modes/repl/clipboard.py,sha256=ZCpk7kRSXGhh0Q_BWtUUuSYT7ZOqRjAoRcg9T9n48Wo,5137
144
- klaude_code/ui/modes/repl/completers.py,sha256=V6pxi61w1z0B1eDliudahBQJ6wkPXAGI4AaBg8J0XtE,18283
147
+ klaude_code/ui/modes/repl/completers.py,sha256=EIKlkwBtxkjGJALc8onQLhJgPMAFzg46l2hlbzw43G8,18271
145
148
  klaude_code/ui/modes/repl/display.py,sha256=v-Jxe7MWpOCEsx9FFEzqKaIg0jLS7ZU9bevooBjxxEQ,2242
146
- klaude_code/ui/modes/repl/event_handler.py,sha256=qZdyDmPN_KsMYjkGlm6-H4Owqo5JVGH-XB0x7h9YKz8,18797
147
- klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=wwXTQ_ZP70y_SgIQenttY82aBZDsRYhxerEqm46gpOM,7592
149
+ klaude_code/ui/modes/repl/event_handler.py,sha256=oReGpdmqgrNmwOMehykscZS2t_XzTWcCvyxZq28MxCc,18604
150
+ klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=EAIAtcL9EHVPmVK6oOHg0xCeZ0IOnG5S5KsaL85OHOk,6368
148
151
  klaude_code/ui/modes/repl/key_bindings.py,sha256=Px-QdRHkzvb2fDGg5d3JHic5ieiGiPcXorPJ5bAM8dI,7801
149
152
  klaude_code/ui/modes/repl/renderer.py,sha256=G7K9HXqFKLdEvWgz3JpruJk02RBULqq7-GSu_gCkP-A,11962
150
153
  klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -153,19 +156,19 @@ klaude_code/ui/renderers/common.py,sha256=TPH7LCbeJGqB8ArTsVitqJHEyOxHU6nwnRtvF0
153
156
  klaude_code/ui/renderers/developer.py,sha256=fE-9LRzVLiKnK3ctFcuDDP_eehohhsgPCH_tYaOp-xs,6378
154
157
  klaude_code/ui/renderers/diffs.py,sha256=P--aLjvZy4z77FDx6uM9LlIYVjYlyZwj0MncdJTO2AA,7691
155
158
  klaude_code/ui/renderers/errors.py,sha256=c_fbnoNOnvuI3Bb24IujwV8Mpes-qWS_xCWfAcBvg6A,517
156
- klaude_code/ui/renderers/metadata.py,sha256=P7AIfLA6Ge5pbNNaB8eOs5m6nm7WcYxnto8BAdd5cE0,8809
159
+ klaude_code/ui/renderers/metadata.py,sha256=QQev-3S3AS7GuWUhekjbnFJj3cFcbNxNtEYxzAl1Xm8,9121
157
160
  klaude_code/ui/renderers/sub_agent.py,sha256=3cyn95pu4IniOJyWW4vfQ-X72iLufQ3LT9CkAQMuF4k,2686
158
161
  klaude_code/ui/renderers/thinking.py,sha256=jzDfvYuwpafndmBMMb6UumGxur9iFi_X0LYIo08eDlw,1179
159
- klaude_code/ui/renderers/tools.py,sha256=kHxInHy9N3n4Np0svQsy6JUDjlUzG0gr2-7t4WG58YA,19564
162
+ klaude_code/ui/renderers/tools.py,sha256=iVgTo10gzS981LmbLU36Zt17JMW3YTPYRqA3mUJ_d8c,19975
160
163
  klaude_code/ui/renderers/user_input.py,sha256=rDdOYvbgJ6oePQAtyTCK-KhARfLKytpTZboZ-cFIuJQ,2603
161
164
  klaude_code/ui/rich/__init__.py,sha256=olvMm2SteyKioOqUJbEoav2TsDr_mtKqkSaifNumjwc,27
162
165
  klaude_code/ui/rich/live.py,sha256=Uid0QAZG7mHb4KrCF8p9c9n1nHLHzW75xSqcLZ4bLWY,2098
163
- klaude_code/ui/rich/markdown.py,sha256=XYJoTAiNnXXWySxwmlPuAGWelV6sZgQ6foZUX_s43IE,11461
166
+ klaude_code/ui/rich/markdown.py,sha256=5RFIWsYDuC2q_ngD4mG48viGyDT70FF8-7SwSvgPA_M,11674
164
167
  klaude_code/ui/rich/quote.py,sha256=tZcxN73SfDBHF_qk0Jkh9gWBqPBn8VLp9RF36YRdKEM,1123
165
168
  klaude_code/ui/rich/searchable_text.py,sha256=Adr2EFewX1UInypz-vMOUgZP9gk3Zk8_d2utWhV3K90,2452
166
169
  klaude_code/ui/rich/status.py,sha256=sHTenGYERGiLwnkwdGFjFw9WDbbnMSPTKeEJiSYYNaU,8503
167
170
  klaude_code/ui/rich/theme.py,sha256=JAlFXwcZYbHv0vcuweWnzu4vR2CDe-mqH24CEtNBnL4,10159
168
- klaude_code/ui/terminal/__init__.py,sha256=33AbEwVH3G-oJSYL3QDlnbjoVj-uH_C0p09Zr71Z7Fw,21
171
+ klaude_code/ui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
169
172
  klaude_code/ui/terminal/color.py,sha256=M-i09DVlLAhAyhQjfeAi7OipoGi1p_OVkaZxeRfykY0,7135
170
173
  klaude_code/ui/terminal/control.py,sha256=Yq0giFYIBOIJp1KQTvqAglQXKzSbwO5f2fI_b8EoTcU,4997
171
174
  klaude_code/ui/terminal/notifier.py,sha256=YOQXZYrjUZFLRt1iIoHxDKYoQUS-760lpydBGw9OxbM,3227
@@ -174,7 +177,7 @@ klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlsh
174
177
  klaude_code/ui/utils/common.py,sha256=xzw-Mgj0agxrf22QxpH7YzVIpkMXIRY6SgXWtLYF0yU,2881
175
178
  klaude_code/ui/utils/debouncer.py,sha256=TFF1z7B7-FxONEigkYohhShDlqo4cOcqydE9zz7JBHc,1270
176
179
  klaude_code/version.py,sha256=x2OeiACPdzS87EWtaSi_UP13htm81Uq7mlV3kFy5jko,4815
177
- klaude_code-1.2.10.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
178
- klaude_code-1.2.10.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
179
- klaude_code-1.2.10.dist-info/METADATA,sha256=uCzWyETK2fjTjG0Eg-jy7jOg4R7L1pkFwUU9P6LWBF8,5141
180
- klaude_code-1.2.10.dist-info/RECORD,,
180
+ klaude_code-1.2.12.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
181
+ klaude_code-1.2.12.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
182
+ klaude_code-1.2.12.dist-info/METADATA,sha256=G1F2CoxKcSkdlJBBzLqJ90PWVj9OHEOvJYKpEGVCbF8,5067
183
+ klaude_code-1.2.12.dist-info/RECORD,,