klaude-code 1.2.2__py3-none-any.whl → 1.2.3__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 (58) hide show
  1. klaude_code/cli/main.py +7 -0
  2. klaude_code/cli/runtime.py +6 -6
  3. klaude_code/command/__init__.py +7 -5
  4. klaude_code/command/clear_cmd.py +3 -24
  5. klaude_code/command/command_abc.py +36 -1
  6. klaude_code/command/export_cmd.py +14 -20
  7. klaude_code/command/help_cmd.py +1 -0
  8. klaude_code/command/model_cmd.py +3 -30
  9. klaude_code/command/{prompt-update-dev-doc.md → prompt-dev-docs-update.md} +3 -2
  10. klaude_code/command/{prompt-dev-doc.md → prompt-dev-docs.md} +3 -2
  11. klaude_code/command/prompt-init.md +2 -5
  12. klaude_code/command/prompt_command.py +3 -3
  13. klaude_code/command/registry.py +6 -7
  14. klaude_code/config/config.py +1 -1
  15. klaude_code/config/list_model.py +1 -1
  16. klaude_code/const/__init__.py +1 -1
  17. klaude_code/core/agent.py +2 -11
  18. klaude_code/core/executor.py +155 -14
  19. klaude_code/core/prompts/prompt-gemini.md +1 -1
  20. klaude_code/core/reminders.py +24 -0
  21. klaude_code/core/task.py +10 -0
  22. klaude_code/core/tool/shell/bash_tool.py +6 -2
  23. klaude_code/core/tool/sub_agent_tool.py +1 -1
  24. klaude_code/core/tool/tool_context.py +1 -1
  25. klaude_code/core/tool/tool_registry.py +1 -1
  26. klaude_code/core/tool/tool_runner.py +1 -1
  27. klaude_code/core/tool/web/mermaid_tool.py +1 -1
  28. klaude_code/llm/__init__.py +3 -4
  29. klaude_code/llm/anthropic/client.py +12 -9
  30. klaude_code/llm/openai_compatible/client.py +2 -18
  31. klaude_code/llm/openai_compatible/tool_call_accumulator.py +2 -2
  32. klaude_code/llm/openrouter/client.py +2 -18
  33. klaude_code/llm/openrouter/input.py +6 -2
  34. klaude_code/llm/registry.py +2 -71
  35. klaude_code/llm/responses/client.py +2 -0
  36. klaude_code/llm/{metadata_tracker.py → usage.py} +49 -2
  37. klaude_code/protocol/llm_param.py +12 -0
  38. klaude_code/protocol/model.py +23 -3
  39. klaude_code/protocol/op.py +14 -14
  40. klaude_code/protocol/op_handler.py +28 -0
  41. klaude_code/protocol/tools.py +0 -2
  42. klaude_code/session/export.py +124 -35
  43. klaude_code/session/session.py +1 -1
  44. klaude_code/session/templates/export_session.html +180 -42
  45. klaude_code/ui/__init__.py +6 -2
  46. klaude_code/ui/modes/exec/display.py +26 -0
  47. klaude_code/ui/modes/repl/event_handler.py +5 -1
  48. klaude_code/ui/renderers/developer.py +6 -10
  49. klaude_code/ui/renderers/metadata.py +33 -24
  50. klaude_code/ui/renderers/sub_agent.py +1 -1
  51. klaude_code/ui/renderers/tools.py +2 -2
  52. klaude_code/ui/renderers/user_input.py +18 -22
  53. klaude_code/ui/rich/status.py +13 -2
  54. {klaude_code-1.2.2.dist-info → klaude_code-1.2.3.dist-info}/METADATA +1 -1
  55. {klaude_code-1.2.2.dist-info → klaude_code-1.2.3.dist-info}/RECORD +58 -57
  56. /klaude_code/{core → protocol}/sub_agent.py +0 -0
  57. {klaude_code-1.2.2.dist-info → klaude_code-1.2.3.dist-info}/WHEEL +0 -0
  58. {klaude_code-1.2.2.dist-info → klaude_code-1.2.3.dist-info}/entry_points.txt +0 -0
@@ -3,7 +3,7 @@ import re
3
3
  from rich.console import Group, RenderableType
4
4
  from rich.text import Text
5
5
 
6
- from klaude_code.protocol import commands
6
+ from klaude_code.command import is_slash_command_name
7
7
  from klaude_code.ui.renderers.common import create_grid
8
8
  from klaude_code.ui.rich.theme import ThemeKey
9
9
 
@@ -25,14 +25,6 @@ def render_at_pattern(
25
25
  return Text(text, style=other_style)
26
26
 
27
27
 
28
- def _is_valid_slash_command(command: str) -> bool:
29
- try:
30
- commands.CommandName(command)
31
- return True
32
- except ValueError:
33
- return False
34
-
35
-
36
28
  def render_user_input(content: str) -> RenderableType:
37
29
  """Render a user message as a group of quoted lines with styles.
38
30
 
@@ -41,27 +33,31 @@ def render_user_input(content: str) -> RenderableType:
41
33
  """
42
34
  lines = content.strip().split("\n")
43
35
  renderables: list[RenderableType] = []
36
+ has_command = False
44
37
  for i, line in enumerate(lines):
45
38
  line_text = render_at_pattern(line)
46
39
 
47
40
  if i == 0 and line.startswith("/"):
48
41
  splits = line.split(" ", maxsplit=1)
49
- if _is_valid_slash_command(splits[0][1:]):
50
- if len(splits) <= 1:
51
- renderables.append(Text(f" {line} ", style=ThemeKey.USER_INPUT_SLASH_COMMAND))
52
- continue
53
- else:
54
- line_text = Text.assemble(
55
- (f" {splits[0]} ", ThemeKey.USER_INPUT_SLASH_COMMAND),
56
- " ",
57
- render_at_pattern(splits[1]),
58
- )
59
- renderables.append(line_text)
60
- continue
42
+ if is_slash_command_name(splits[0][1:]):
43
+ has_command = True
44
+ line_text = Text.assemble(
45
+ (f"{splits[0]}", ThemeKey.USER_INPUT_SLASH_COMMAND),
46
+ " ",
47
+ render_at_pattern(splits[1]) if len(splits) > 1 else Text(""),
48
+ )
49
+ renderables.append(line_text)
50
+ continue
61
51
 
62
52
  renderables.append(line_text)
63
53
  grid = create_grid()
64
- grid.add_row(Text("❯", style=ThemeKey.USER_INPUT_PROMPT), Group(*renderables))
54
+ grid.padding = (0, 0)
55
+ mark = (
56
+ Text("❯ ", style=ThemeKey.USER_INPUT_PROMPT)
57
+ if not has_command
58
+ else Text(" ", style=ThemeKey.USER_INPUT_SLASH_COMMAND)
59
+ )
60
+ grid.add_row(mark, Group(*renderables))
65
61
  return grid
66
62
 
67
63
 
@@ -52,10 +52,21 @@ def _shimmer_profile(main_text: str) -> list[tuple[str, float]]:
52
52
  return []
53
53
 
54
54
  padding = const.STATUS_SHIMMER_PADDING
55
- period = len(chars) + padding * 2
55
+ char_count = len(chars)
56
+ period = char_count + padding * 2
57
+
58
+ # Keep a roughly constant shimmer speed (characters per second)
59
+ # regardless of text length by deriving a character velocity from a
60
+ # baseline text length and the configured sweep duration.
61
+ # The baseline is chosen to be close to the default
62
+ # "Thinking … (esc to interrupt)" status line.
63
+ baseline_chars = 30
64
+ base_period = baseline_chars + padding * 2
56
65
  sweep_seconds = const.STATUS_SHIMMER_SWEEP_SECONDS
66
+ char_speed = base_period / sweep_seconds if sweep_seconds > 0 else base_period
67
+
57
68
  elapsed = _elapsed_since_start()
58
- pos_f = (elapsed % sweep_seconds) / sweep_seconds * float(period)
69
+ pos_f = (elapsed * char_speed) % float(period)
59
70
  pos = int(pos_f)
60
71
  band_half_width = const.STATUS_SHIMMER_BAND_HALF_WIDTH
61
72
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: Add your description here
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: openai>=1.102.0
@@ -1,41 +1,40 @@
1
1
  klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
3
- klaude_code/cli/main.py,sha256=BcCxD710I888UlK6pUA5NtCIHlKYKGGI7cZzZgIEkN4,9068
4
- klaude_code/cli/runtime.py,sha256=-NycISWarSPU4DKYeauWpKRY-MX90h5ea0Piv8f18sY,12242
3
+ klaude_code/cli/main.py,sha256=vQt1jZVX4pxQUYceWQcXkRO3w0glOUIhazI7uDex2fE,9279
4
+ klaude_code/cli/runtime.py,sha256=jipzUciIlY-w0hlUsid8HfSZuf_xCH23XoOuByJijU8,12288
5
5
  klaude_code/cli/session_cmd.py,sha256=cIBm3uUurke-TfBvQHz9mGW29LOAh22FIpXVyypnwDo,2549
6
- klaude_code/command/__init__.py,sha256=VrMOzZGrMvH8Ez7WR3uYUir7JBJqv5cpIEZe2AN2ofQ,984
7
- klaude_code/command/clear_cmd.py,sha256=iQfBY9SHOpAFeXKTIo5cby_UqV6iDaribB1aOhiAGkU,1415
8
- klaude_code/command/command_abc.py,sha256=Yp-Ioy6-vpNpU5GuO_IgcM8_BcH5McWK0Pl74MqR_Hk,1651
6
+ klaude_code/command/__init__.py,sha256=Ec3QVR3bw3vlvaExwrXzBIXBEMfxPDeuygd8hv0e1jM,1066
7
+ klaude_code/command/clear_cmd.py,sha256=ojsDdZnv_-bDYBPecpdY85DfGicst9Jf9j7esg2z2hE,674
8
+ klaude_code/command/command_abc.py,sha256=WWY9qi7SILttPl6fJNi9ThevsqpGFoQJ1ecgoosd_Ms,2547
9
9
  klaude_code/command/diff_cmd.py,sha256=306PcTeKokLmchp6mIWeZ2rokINsU5-2f4iGrjEbkCE,5269
10
- klaude_code/command/export_cmd.py,sha256=r6qKHuawaAP6T30bnMDMVa4QX6x1_Tcm48AlFUq1cOI,3622
11
- klaude_code/command/help_cmd.py,sha256=5bjMDqbyQDvI_bfaTn_BRLEpwBNisfpi33kTpbTiq2M,1675
12
- klaude_code/command/model_cmd.py,sha256=iWNUzEJftDXphboExa0w7f296quuQnTl0gB9K7_3fMc,2491
13
- klaude_code/command/prompt-dev-doc.md,sha256=hV2xvPODmMrDI4mNcN7dDo3LbjFBDhanTZAlj9t3FLs,1836
14
- klaude_code/command/prompt-init.md,sha256=9wxYo0eyPGH4zTIpq_2Jzusjn7U6JluFbVsupmYQyiA,1867
15
- klaude_code/command/prompt-update-dev-doc.md,sha256=5O_WeRma0CidTamEFaIPElHtDipL9pxstB6856thgxE,1843
16
- klaude_code/command/prompt_command.py,sha256=irkEJBdyKBn8SvGFB1YGRLSyAlrvJQJaGv-HsLn3tfs,2359
10
+ klaude_code/command/export_cmd.py,sha256=xLZCWb377REO2iFFzYX76kpZWUDiJN10x18k22gELGs,3442
11
+ klaude_code/command/help_cmd.py,sha256=VddWegAJS5OjbAZ35c9Pb0SSDZpPH5PqRyQ--sdseII,1709
12
+ klaude_code/command/model_cmd.py,sha256=EApytBR6gl1Po9Mi7YVvDWgV-0ivgw-RQTnQ__EIvFQ,1510
13
+ klaude_code/command/prompt-dev-docs-update.md,sha256=g1IWIWIa-3qlNOw5mBA4N9H1_nvYcw8AKo7XoQw_AZQ,1855
14
+ klaude_code/command/prompt-dev-docs.md,sha256=PU9iT6XdUEH6grfSjHVma7xKOQcA__ZTKlEDkbbO0hA,1783
15
+ klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
16
+ klaude_code/command/prompt_command.py,sha256=cDdLAyGk3JFS-nRlNzTnT8T35QQ-FC6RT0fD5ELZGO4,2405
17
17
  klaude_code/command/refresh_cmd.py,sha256=kgpbcnqf1n_ihMW99AfTXeZEkE2_MNwgQ9DbNfl2jqY,1288
18
- klaude_code/command/registry.py,sha256=QyNB2xHSZ7ejXMjtSR9hSbJqdmJXN9pNEFo0Eivf3Oc,3566
18
+ klaude_code/command/registry.py,sha256=OZhQqoLfWjqojJauemc8L2rnwPhYoAh2Kjx3HSAz_ZE,3554
19
19
  klaude_code/command/terminal_setup_cmd.py,sha256=bQfMDZIzak8emkmuaY43_2YaS7t908sUJ_orYwccTtY,10957
20
20
  klaude_code/config/__init__.py,sha256=9XVCYYqzJtCi46I94hbUmJ2yTFuZ-UlH-QTx7OpLAkQ,292
21
- klaude_code/config/config.py,sha256=DlbLpYrxP5NCkCb0eSmAfpGZ6UV9ERK12-pycAclbCA,6522
22
- klaude_code/config/list_model.py,sha256=LhzWVVq11zIvnPYnhJLS8rddhBwXlL3bwR1Ew4rSHio,6194
21
+ klaude_code/config/config.py,sha256=Vc9u7-40T81Rbx1OdMqSWZLh3vf9aj4wmBUnIOH7jAw,6526
22
+ klaude_code/config/list_model.py,sha256=nr7PfxFSfFsfNDJXNfI6aYMLOOAmVQeSUBDL_b-kWTU,6198
23
23
  klaude_code/config/select_model.py,sha256=el1jqXlNyYmHH_dvdcEkWVOYqIZ9y05_VJRlfZk7HkQ,2565
24
- klaude_code/const/__init__.py,sha256=vdWKXJuOVDWJ6aDIqGfikqLFP-WOxoNSX2qXXIImxMA,3980
24
+ klaude_code/const/__init__.py,sha256=joTUQF1NEA-OHY3fuNIjNYYxOJlBW-MtSQ3YE3EAer4,3980
25
25
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- klaude_code/core/agent.py,sha256=_BhCGTIuJPA72lbpcRtQCtOo4SzeyUWUIlrJqcKObu4,6588
27
- klaude_code/core/executor.py,sha256=VIjlOI0ulyD7O1rYVyYwEqCOAc0286h1SI1w-GtZd0U,18669
26
+ klaude_code/core/agent.py,sha256=XCzoo0fR5WVlJjSdOURB1FgvMbgRt4xrLydPORkbqOU,6193
27
+ klaude_code/core/executor.py,sha256=5dwSWpL_8XSJfBbuI-4CNZ3ftTC0qHWOusoFG493AAg,24114
28
28
  klaude_code/core/prompt.py,sha256=EhaM-rgjamaceYOWy4J6rXYqc0M7TfnORMBCMS1h1Yk,2868
29
29
  klaude_code/core/prompts/prompt-claude-code.md,sha256=3OY5ShcYPp8f0XrIl-3pBVIDZkweWsLzDHy5ldnSOJc,8954
30
30
  klaude_code/core/prompts/prompt-codex.md,sha256=jNi593_4L3EoMvjS0TwltF2b684gtDBsYHa9npxO34A,24239
31
- klaude_code/core/prompts/prompt-gemini.md,sha256=m7hlCrWalP3JJ_ooPINGIH-ltjgY0wCJ1GFoKiejyYM,3867
31
+ klaude_code/core/prompts/prompt-gemini.md,sha256=JjE1tHSByGKJzjn4Gpj1zekT7ry1Yqbwx5qx3fZy2gE,3901
32
32
  klaude_code/core/prompts/prompt-subagent-explore.md,sha256=OxZzGodc9BmMVkrgtFHzWXoWGj_lMtyn4r1DwopgW8I,2002
33
33
  klaude_code/core/prompts/prompt-subagent-oracle.md,sha256=hGtyDm_6UhJZUJwfXt5A-170is1KMHls85fEEo45z-w,1376
34
34
  klaude_code/core/prompts/prompt-subagent-webfetch.md,sha256=kHtJINbCRiRDrip_q6idHHU3CwbDfrVlpgtSZvugOWI,2304
35
35
  klaude_code/core/prompts/prompt-subagent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
36
- klaude_code/core/reminders.py,sha256=xUcK1hmTG69GBVy0mMYSM6WAiSJfPtwFlo6RSEpXPL8,16976
37
- klaude_code/core/sub_agent.py,sha256=rD4nDX3jBp1HIseQTjd83I4VJ_fFcJ9NzkKCWO6JGsk,13351
38
- klaude_code/core/task.py,sha256=eUQIHjZ7WW1Wtw-JPdCt5Wf6NygooBwRcnf6jjTOz5s,9466
36
+ klaude_code/core/reminders.py,sha256=JKD4cSPYj_ekqoMOa1ILrUwp83O2ToZLZym-MwZfPqs,17964
37
+ klaude_code/core/task.py,sha256=9rjCxru4WpT77pNDap3nrEXw9W6ecwGQyoPdW5_NCVw,10054
39
38
  klaude_code/core/tool/__init__.py,sha256=GQjs6IXqtiKn8RI3OmM0wki8p16SBnvuHVBez4Z5xqo,2120
40
39
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
40
  klaude_code/core/tool/file/apply_patch.py,sha256=gUukVxt0qEP2NLHiPsmFWOi0sOuW0FaUnN0BfZ6FcII,17257
@@ -57,59 +56,61 @@ klaude_code/core/tool/memory/skill_tool.md,sha256=UfjJK5EGAd3mf7ym5rIrRdPyV3kBTx
57
56
  klaude_code/core/tool/memory/skill_tool.py,sha256=Ma0iLQya3AndatUHfEANTDtXzhTly0AkzckPuQ1JXtA,3209
58
57
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
58
  klaude_code/core/tool/shell/bash_tool.md,sha256=ILKpnRCBTkU2uSDEdZQjNYo1l6hsM4TO-3RD5zWC61c,3935
60
- klaude_code/core/tool/shell/bash_tool.py,sha256=yeHTWEbJOygeNWZGB_FRj6IIxhCIWz-V27zxcqJl30A,4385
59
+ klaude_code/core/tool/shell/bash_tool.py,sha256=jtL380zN0c6wS6iO-_NvXbJKEHAIFK4LOnQq2BVzAgE,4553
61
60
  klaude_code/core/tool/shell/command_safety.py,sha256=p56g3hpc8W0kgtq4_L_RJKVslO_4NkLsn0_e6V46dKY,21275
62
- klaude_code/core/tool/sub_agent_tool.py,sha256=L83NtoWnrs-QwQ9qdgqcQatGeU2-QANJXqm72SXYuP0,2759
61
+ klaude_code/core/tool/sub_agent_tool.py,sha256=CpQAG9P6ovtDBaQ_khXNoIfGerbHJVL7UnNRtcqtX5c,2763
63
62
  klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
63
  klaude_code/core/tool/todo/todo_write_tool.md,sha256=AJ2OkZGcccQYDXkydPAr5JI2SExBF8qJd0rXsHySLps,9711
65
64
  klaude_code/core/tool/todo/todo_write_tool.py,sha256=LPCAq_GiG3fPWvVkidl-gITCWSGXLUsyYi0fdUCTv2g,4552
66
65
  klaude_code/core/tool/todo/update_plan_tool.md,sha256=OoEF4voHHd5J3VDv7tq3UCHdXApkBvxdHXUf5tVOkE8,157
67
66
  klaude_code/core/tool/todo/update_plan_tool.py,sha256=4l8BO_f0ZZTbI8JNL9mIU_lPo1Qo7E1s93Kz9CR2DuA,3840
68
67
  klaude_code/core/tool/tool_abc.py,sha256=3FlVZ8a6hC-_Ci23_cpLaap9nHinHgxSB1TsZL5ylUQ,731
69
- klaude_code/core/tool/tool_context.py,sha256=ugXcqd9kSstQ7aSaVhbhc9u6W1eu9b2yKgihiEqFA4w,3745
70
- klaude_code/core/tool/tool_registry.py,sha256=o2iO7elnjVo4FA1AWiRyDp1M67qK2MwDRWVQQQzZY-s,2555
71
- klaude_code/core/tool/tool_runner.py,sha256=gRtJDA6EGlzu11LutMOVRl5RqioE1N8lPs8loEeAaN4,10255
68
+ klaude_code/core/tool/tool_context.py,sha256=vCA3oYN_YHnINoxejsdEUfM2QxlbXRaJ3D9_udc-8wk,3749
69
+ klaude_code/core/tool/tool_registry.py,sha256=lauvxFgGhgpLeH9QkF0XJVvlyVdnwRChvU0v_-0grf8,2559
70
+ klaude_code/core/tool/tool_runner.py,sha256=IyVjMnGVMAjs8bJuCMBfFE1eQ39FSjnOz3Wb5HHQ0T4,10259
72
71
  klaude_code/core/tool/truncation.py,sha256=V_p4rW3msyJgw_QSgLCx74KyuCC0_eEI0-R7jTfPM-8,6439
73
72
  klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
73
  klaude_code/core/tool/web/mermaid_tool.md,sha256=Ketpxpr7lz8238p5Q7ZzcyWchWd4dU68u708-dxaZds,978
75
- klaude_code/core/tool/web/mermaid_tool.py,sha256=4QqQN98Myr6sW_cdJf5LTBRzI6u1hP3OfURM_JI3gLo,2750
74
+ klaude_code/core/tool/web/mermaid_tool.py,sha256=GUwWcrakSZH_Jp61Q_i5TvwQj6sWMrIW0ZbNpJ0dVtE,2750
76
75
  klaude_code/core/tool/web/web_fetch_tool.md,sha256=_5U-LSoI86rD26nPb0D5BQCr6hj8eyF0UELSiyLznCA,347
77
76
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=iu6kM_-90K8mqHbK9Loui96vICV7d8rmtss68rcFqw0,4958
78
77
  klaude_code/core/turn.py,sha256=_Jx0huYlUXXTvgEIo_LFisJnFYssdyZePELSw7d_vHg,8391
79
- klaude_code/llm/__init__.py,sha256=612WvATVfn9PARcoEW3AGYfCL2TWGn8yN_6I_cUA298,581
78
+ klaude_code/llm/__init__.py,sha256=iHO9DXKO3z-8CRuwKbSgyaWyRUVAcwFKN2eO68Ud6Ms,544
80
79
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
81
- klaude_code/llm/anthropic/client.py,sha256=2zPSq6rvvGUva4_OvKNrkUrfN_bT_-o4yfzhoI4imYk,11046
80
+ klaude_code/llm/anthropic/client.py,sha256=yEsp3JSVj-18y-UiYT6zQUMRg8PYJ-Ao3bSPSBiJSJM,11166
82
81
  klaude_code/llm/anthropic/input.py,sha256=I8W7declzxRhIvidsTGy2NIuAXIu0UE2Nr5a4fhnhQc,7361
83
82
  klaude_code/llm/client.py,sha256=Un5LA5Z622JQ1MYEfJi7gXj3ycX3ce0WvYPcOogM32Y,1527
84
83
  klaude_code/llm/input_common.py,sha256=yLn-g9T_lC3AnPPilFwlKEA2-vnIgyOKlHFBYB00jm8,8972
85
- klaude_code/llm/metadata_tracker.py,sha256=L-_awI5m1GXFc3MzYlpZoYBYVJzx-mrTasmz41-Dvoo,2263
86
84
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
87
- klaude_code/llm/openai_compatible/client.py,sha256=KPtR5fnRcpxKM1R_W6iLJOScXk1Y2fdU80OG1WHGbAk,9934
85
+ klaude_code/llm/openai_compatible/client.py,sha256=LqwkmKZdgDJq8_zlwsb35-QRhunP-ec0VFKMr-SM_uk,9215
88
86
  klaude_code/llm/openai_compatible/input.py,sha256=INn9sSYngS6C9584y_HZTWeYPhgU8Q6FYMZWzhH4iyA,3610
89
- klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=30Ct67-1tqJgCL3erYIODP-3KFKSKbC40whU1F1i7Hk,4055
87
+ klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=kuw3ceDgenQz2Ccc9KYqBkDo6F1sDb5Aga6m41AIECA,4071
90
88
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
91
- klaude_code/llm/openrouter/client.py,sha256=LbJ7onBUWWa4Yuv9msEY0zmsIRPSoKeuJdxUaH3V_TE,9820
92
- klaude_code/llm/openrouter/input.py,sha256=IgTwp_O2lvWqKWdl-hrr-pFoJ-KaMgGm_sgc6ggVSdI,5751
89
+ klaude_code/llm/openrouter/client.py,sha256=oq8VPmehAdSK9wsnKCNDRmkicEbeZ4sjy7bPfuWBNPc,9101
90
+ klaude_code/llm/openrouter/input.py,sha256=7FEKVFmLEyMqXPmg09M3lUKHJsDvIW5yofXg_til4lI,5921
93
91
  klaude_code/llm/openrouter/reasoning_handler.py,sha256=TYIHdwMopi8DVqOpeN3vpyp-GcWOZgTeRnT5QvlK70U,8100
94
- klaude_code/llm/registry.py,sha256=0Z_GnWs4DcveU2O4J8nSvqVosN0DWSjSHtoZ6GU3cNg,3116
92
+ klaude_code/llm/registry.py,sha256=KBKSelBLlGooInpzfVztN6OZqqfc0WzmB-cT8lE5fw8,686
95
93
  klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
96
- klaude_code/llm/responses/client.py,sha256=tsyt0kGQwukvMZaBXT8S75Recr2s0aSxWcCwDJHW-8o,10545
94
+ klaude_code/llm/responses/client.py,sha256=laNTjJ7WJ8hooqZ55XPfAkrurKKryMJTx4xz0AzG_6g,10663
97
95
  klaude_code/llm/responses/input.py,sha256=NtJhWyzg6XzHKuplgvta0ubzqA1u33gfgjL7X6xNeIw,6011
96
+ klaude_code/llm/usage.py,sha256=zDW47J-sxHhRJqDZihXeW2eyxpZS6F39qLsB8K0cua0,4240
98
97
  klaude_code/protocol/__init__.py,sha256=aGUgzhYqvhuT3Mk2vj7lrHGriH4h9TSbqV1RsRFAZjQ,194
99
98
  klaude_code/protocol/commands.py,sha256=O1miI3GyCTLG_u3wS4CtQsmztP-nlGrjyO-k4ADYHH0,522
100
99
  klaude_code/protocol/events.py,sha256=Pw8lY7rJLwk-FjKWtX8C_-Op7p0KWLaI-PH1_U7Uoyg,3290
101
- klaude_code/protocol/llm_param.py,sha256=Bbm9pxQ54AUHhlySpKz868-LoepDb-h8bVv1bxOPmLM,3891
102
- klaude_code/protocol/model.py,sha256=gyvYcPLbVhZ51gBYTK4S9FlIiRrbt5o65QzpQG4jddw,6308
103
- klaude_code/protocol/op.py,sha256=sETYOuNkC9VewldX5oui6yDg34TupATDTwrQGsS14hI,2627
104
- klaude_code/protocol/tools.py,sha256=ygaLUdpF_sBQJi4vpFKh5zxXdAYEI-Q8lWBzYIjDL9w,350
100
+ klaude_code/protocol/llm_param.py,sha256=8_B8e83iPQs62CyVicTKlEKWBoOmRMlOOWkKBK__R58,4337
101
+ klaude_code/protocol/model.py,sha256=tC86xQm4YpweD4PazYRCH2UF1ZgB7IdIJAhCB7Pi3B0,7582
102
+ klaude_code/protocol/op.py,sha256=rkPvDRsOgPyibMI1n0pDO7ghFWJBfDGas9BnACtmfO4,2654
103
+ klaude_code/protocol/op_handler.py,sha256=_lnv3-RxKkrTfGTNBlQ23gbHJBEtMLC8O48SYWDtPjE,843
104
+ klaude_code/protocol/sub_agent.py,sha256=rD4nDX3jBp1HIseQTjd83I4VJ_fFcJ9NzkKCWO6JGsk,13351
105
+ klaude_code/protocol/tools.py,sha256=hkjVirnQqGTJS46IWvVKXWR4usPPUgDZDnm34LzAVSc,348
105
106
  klaude_code/session/__init__.py,sha256=oXcDA5w-gJCbzmlF8yuWy3ezIW9DgFBNUs-gJHUJ-Rc,121
106
- klaude_code/session/export.py,sha256=BQTZ8v-WZm30h15z8_nEGFkqGEgDhZ_OM415TDCIkHI,20597
107
+ klaude_code/session/export.py,sha256=NDUZwjV6niQcZk2H4IRv9REviDGmw8ZmvGqko6TTjbA,23675
107
108
  klaude_code/session/selector.py,sha256=HTboyzih7V8zbZoSsArJ-GVC1EnXTGocHJwFmZfbeSg,2567
108
- klaude_code/session/session.py,sha256=9K511qvl-GC5yXmLs5YOIGCYYz0OGf5FJ1fEjK3Lp5M,19184
109
- klaude_code/session/templates/export_session.html,sha256=xtf6gSuou8DOuIM7hieNMmbm_0ReNaQYfXZS0VVrnXY,30222
109
+ klaude_code/session/session.py,sha256=KLE3QUNvt8d7Zu_Mj2x6rdHygzsUtLsvMzQbsiIOrKg,19195
110
+ klaude_code/session/templates/export_session.html,sha256=_0bzEMKhBcc-K9o8cDEMSqTJpkH0UBYovTKlgrD2ODg,34247
110
111
  klaude_code/trace/__init__.py,sha256=B-S4qdCj8W88AaC_gVmhTaejH6eLYClBVh2Q6aGAVBk,184
111
112
  klaude_code/trace/log.py,sha256=0K0uek2KWq0zkUZijcO-TBM6STLe-h_8IIW0lx7V7ZA,4865
112
- klaude_code/ui/__init__.py,sha256=dTKc_a5Mo0DHmnU9BevlbvYQl5A5lKsg22q48PhUd-I,2659
113
+ klaude_code/ui/__init__.py,sha256=AL1Ro0u8ObNPMj4sci_U4zakG7IpnI3bie-C63E2QPI,2873
113
114
  klaude_code/ui/core/__init__.py,sha256=2NakrTDcxem5D0atyEY_Rxv1BbKCeZweF63L6AAq6r8,23
114
115
  klaude_code/ui/core/display.py,sha256=NwFQ9oKi8i3T5EsYDRrTpGBr3BZI0Ggns37JuQEOH54,3540
115
116
  klaude_code/ui/core/input.py,sha256=jyu2wJWvZT7t-icoa1oLO5jfr4WLZ8TReYUwGR15ha0,2571
@@ -118,32 +119,32 @@ klaude_code/ui/modes/__init__.py,sha256=ByDPbyYYU4o5kdnEes3b1VEV173RI9XAXyzkFbrA
118
119
  klaude_code/ui/modes/debug/__init__.py,sha256=1-1tAk7FtENdYzExSttYdHiJ-qH3DIQ5yYJ51ms2uSg,13
119
120
  klaude_code/ui/modes/debug/display.py,sha256=11I-JN9OEz2zBIqhEXctSUaDO1Z0nT_cG8R78jIBftk,1067
120
121
  klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJd3yhVf_k,12
121
- klaude_code/ui/modes/exec/display.py,sha256=6amPuyjLcZ6O7igv9fLwfddgwqoDHA3zq0K6qgxZG2Q,1201
122
+ klaude_code/ui/modes/exec/display.py,sha256=m2kkgaUoGD9rEVUmcm7Vs_PyAI2iruKCJYRhANjSsKo,1965
122
123
  klaude_code/ui/modes/repl/__init__.py,sha256=WlSaybzk2M3Dngf8mJZWr5vx-yJpeph7lTb5Nm9fMRo,1635
123
124
  klaude_code/ui/modes/repl/clipboard.py,sha256=_WVLgv-4mprERmcw7iRYTunrSUU51-oojp_hFCM3gVk,5117
124
125
  klaude_code/ui/modes/repl/completers.py,sha256=-cuExsWHKLrao0Rz04AF4Th4M5b7PjmyE-5TzN_b0c0,16796
125
126
  klaude_code/ui/modes/repl/display.py,sha256=v-Jxe7MWpOCEsx9FFEzqKaIg0jLS7ZU9bevooBjxxEQ,2242
126
- klaude_code/ui/modes/repl/event_handler.py,sha256=iRAoquknnGeJ4gjPYNsX6IRt1WJ9Bdy8473kCE-ZtIY,15953
127
+ klaude_code/ui/modes/repl/event_handler.py,sha256=hgneJ_s5OvJTo7417pbNNRmA0uxOPgHbDaJbszrY5-c,16107
127
128
  klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=wwXTQ_ZP70y_SgIQenttY82aBZDsRYhxerEqm46gpOM,7592
128
129
  klaude_code/ui/modes/repl/key_bindings.py,sha256=Px-QdRHkzvb2fDGg5d3JHic5ieiGiPcXorPJ5bAM8dI,7801
129
130
  klaude_code/ui/modes/repl/renderer.py,sha256=o1QubSm9lej-bVZ1G3ie-5qRxgPMDUo42kC9dTZRkvU,11893
130
131
  klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
132
  klaude_code/ui/renderers/assistant.py,sha256=Dxy6v4pX28RyWhnrjBteY8_NvDIi_jQa-j0mWt-eqWY,569
132
133
  klaude_code/ui/renderers/common.py,sha256=TPH7LCbeJGqB8ArTsVitqJHEyOxHU6nwnRtvF04nLJ4,184
133
- klaude_code/ui/renderers/developer.py,sha256=4XaxqLy4DLTikgA8EoseURxhBn8tuoJYNFBubnZ60qs,3914
134
+ klaude_code/ui/renderers/developer.py,sha256=EzB-FltePb8dxMQOCNYFftHtVwWoLDI5k4uyHtKEMOI,3792
134
135
  klaude_code/ui/renderers/diffs.py,sha256=P--aLjvZy4z77FDx6uM9LlIYVjYlyZwj0MncdJTO2AA,7691
135
136
  klaude_code/ui/renderers/errors.py,sha256=c_fbnoNOnvuI3Bb24IujwV8Mpes-qWS_xCWfAcBvg6A,517
136
- klaude_code/ui/renderers/metadata.py,sha256=MhHF_j2QwFR8IX6cLdfXkYhMcL8IE1CQ9gz3oIs4NCs,6225
137
- klaude_code/ui/renderers/sub_agent.py,sha256=lWKOUTz81OhcFlusSkN-g_yI9d02V3HmmL3Q4mREqAA,2682
137
+ klaude_code/ui/renderers/metadata.py,sha256=KSF6z4LHM_eBtaSPTLSIMK7GI-1MU6FUHaT2Hv4z8tk,6985
138
+ klaude_code/ui/renderers/sub_agent.py,sha256=3cyn95pu4IniOJyWW4vfQ-X72iLufQ3LT9CkAQMuF4k,2686
138
139
  klaude_code/ui/renderers/thinking.py,sha256=jzDfvYuwpafndmBMMb6UumGxur9iFi_X0LYIo08eDlw,1179
139
- klaude_code/ui/renderers/tools.py,sha256=Uo9uLqYCAlBtWafhVDsnQgmcO9bj0p0AFolv402c5iw,20418
140
- klaude_code/ui/renderers/user_input.py,sha256=eHfRuWuqCvRsWS44YHhzyMn1L2hL_nB6Lxh7KmhaqiQ,2202
140
+ klaude_code/ui/renderers/tools.py,sha256=0Ekh5p7kwUYCuPfVrU-OAoLptt6Onx_jE9awBfxCm3I,20426
141
+ klaude_code/ui/renderers/user_input.py,sha256=pPjtTBRtG-sJo_ZSSmE7zmQFZFm7xhwP4g1t81e86iI,2074
141
142
  klaude_code/ui/rich/__init__.py,sha256=olvMm2SteyKioOqUJbEoav2TsDr_mtKqkSaifNumjwc,27
142
143
  klaude_code/ui/rich/live.py,sha256=Uid0QAZG7mHb4KrCF8p9c9n1nHLHzW75xSqcLZ4bLWY,2098
143
144
  klaude_code/ui/rich/markdown.py,sha256=hvL0uvMxUBi7II-Jizn9U92mk4flJpEh_xJkxDQhEK8,11425
144
145
  klaude_code/ui/rich/quote.py,sha256=tZcxN73SfDBHF_qk0Jkh9gWBqPBn8VLp9RF36YRdKEM,1123
145
146
  klaude_code/ui/rich/searchable_text.py,sha256=Adr2EFewX1UInypz-vMOUgZP9gk3Zk8_d2utWhV3K90,2452
146
- klaude_code/ui/rich/status.py,sha256=JIhe8pHah3wmGBdb4KLAN5Bi4Mnj6lesDVSnM0naI44,8027
147
+ klaude_code/ui/rich/status.py,sha256=sHTenGYERGiLwnkwdGFjFw9WDbbnMSPTKeEJiSYYNaU,8503
147
148
  klaude_code/ui/rich/theme.py,sha256=4XCP1v1Q7GubUdBaNIuVSLusiIRGffpUS4e6kSwf24g,10046
148
149
  klaude_code/ui/terminal/__init__.py,sha256=33AbEwVH3G-oJSYL3QDlnbjoVj-uH_C0p09Zr71Z7Fw,21
149
150
  klaude_code/ui/terminal/color.py,sha256=M-i09DVlLAhAyhQjfeAi7OipoGi1p_OVkaZxeRfykY0,7135
@@ -154,7 +155,7 @@ klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlsh
154
155
  klaude_code/ui/utils/common.py,sha256=xzw-Mgj0agxrf22QxpH7YzVIpkMXIRY6SgXWtLYF0yU,2881
155
156
  klaude_code/ui/utils/debouncer.py,sha256=TFF1z7B7-FxONEigkYohhShDlqo4cOcqydE9zz7JBHc,1270
156
157
  klaude_code/version.py,sha256=QDgEqSFhyTSiABQFQc9VfujMPQcdjgoCaYTQsr94x0Q,4752
157
- klaude_code-1.2.2.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
158
- klaude_code-1.2.2.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
159
- klaude_code-1.2.2.dist-info/METADATA,sha256=4_G49Ka_JLaeZy7ak6YLNbsNfaX7dO3sVn2OpE_4sFs,5140
160
- klaude_code-1.2.2.dist-info/RECORD,,
158
+ klaude_code-1.2.3.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
159
+ klaude_code-1.2.3.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
160
+ klaude_code-1.2.3.dist-info/METADATA,sha256=mFJJzpWRIVjD_XvooIx7XApSLrjVo0j4AkpbYq5AVWM,5140
161
+ klaude_code-1.2.3.dist-info/RECORD,,
File without changes