klaude-code 2.10.3__py3-none-any.whl → 2.10.4__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 (56) hide show
  1. klaude_code/auth/AGENTS.md +4 -24
  2. klaude_code/auth/__init__.py +1 -17
  3. klaude_code/cli/auth_cmd.py +3 -53
  4. klaude_code/cli/list_model.py +0 -50
  5. klaude_code/config/assets/builtin_config.yaml +0 -28
  6. klaude_code/config/config.py +5 -42
  7. klaude_code/const.py +5 -2
  8. klaude_code/core/agent_profile.py +2 -10
  9. klaude_code/core/backtrack/__init__.py +3 -0
  10. klaude_code/core/backtrack/manager.py +48 -0
  11. klaude_code/core/memory.py +25 -9
  12. klaude_code/core/task.py +53 -7
  13. klaude_code/core/tool/__init__.py +2 -0
  14. klaude_code/core/tool/backtrack/__init__.py +3 -0
  15. klaude_code/core/tool/backtrack/backtrack_tool.md +17 -0
  16. klaude_code/core/tool/backtrack/backtrack_tool.py +65 -0
  17. klaude_code/core/tool/context.py +5 -0
  18. klaude_code/core/turn.py +3 -0
  19. klaude_code/llm/input_common.py +70 -1
  20. klaude_code/llm/openai_compatible/input.py +5 -2
  21. klaude_code/llm/openrouter/input.py +5 -2
  22. klaude_code/llm/registry.py +0 -1
  23. klaude_code/protocol/events.py +10 -0
  24. klaude_code/protocol/llm_param.py +0 -1
  25. klaude_code/protocol/message.py +10 -1
  26. klaude_code/protocol/tools.py +1 -0
  27. klaude_code/session/session.py +111 -2
  28. klaude_code/session/store.py +2 -0
  29. klaude_code/skill/assets/executing-plans/SKILL.md +84 -0
  30. klaude_code/skill/assets/writing-plans/SKILL.md +116 -0
  31. klaude_code/tui/commands.py +15 -0
  32. klaude_code/tui/components/developer.py +1 -1
  33. klaude_code/tui/components/rich/status.py +7 -76
  34. klaude_code/tui/components/rich/theme.py +10 -0
  35. klaude_code/tui/components/tools.py +31 -18
  36. klaude_code/tui/display.py +4 -0
  37. klaude_code/tui/input/prompt_toolkit.py +15 -1
  38. klaude_code/tui/machine.py +26 -8
  39. klaude_code/tui/renderer.py +97 -0
  40. klaude_code/tui/runner.py +7 -2
  41. klaude_code/tui/terminal/image.py +28 -12
  42. klaude_code/ui/terminal/title.py +8 -3
  43. {klaude_code-2.10.3.dist-info → klaude_code-2.10.4.dist-info}/METADATA +1 -1
  44. {klaude_code-2.10.3.dist-info → klaude_code-2.10.4.dist-info}/RECORD +46 -49
  45. klaude_code/auth/antigravity/__init__.py +0 -20
  46. klaude_code/auth/antigravity/exceptions.py +0 -17
  47. klaude_code/auth/antigravity/oauth.py +0 -315
  48. klaude_code/auth/antigravity/pkce.py +0 -25
  49. klaude_code/auth/antigravity/token_manager.py +0 -27
  50. klaude_code/core/prompts/prompt-antigravity.md +0 -80
  51. klaude_code/llm/antigravity/__init__.py +0 -3
  52. klaude_code/llm/antigravity/client.py +0 -558
  53. klaude_code/llm/antigravity/input.py +0 -268
  54. klaude_code/skill/assets/create-plan/SKILL.md +0 -74
  55. {klaude_code-2.10.3.dist-info → klaude_code-2.10.4.dist-info}/WHEEL +0 -0
  56. {klaude_code-2.10.3.dist-info → klaude_code-2.10.4.dist-info}/entry_points.txt +0 -0
@@ -35,6 +35,7 @@ from klaude_code.tui.commands import (
35
35
  PrintBlankLine,
36
36
  PrintRuleLine,
37
37
  RenderAssistantImage,
38
+ RenderBacktrack,
38
39
  RenderBashCommandEnd,
39
40
  RenderBashCommandStart,
40
41
  RenderCommand,
@@ -59,6 +60,7 @@ from klaude_code.tui.commands import (
59
60
  StartThinkingStream,
60
61
  TaskClockClear,
61
62
  TaskClockStart,
63
+ UpdateTerminalTitlePrefix,
62
64
  )
63
65
  from klaude_code.tui.components import command_output as c_command_output
64
66
  from klaude_code.tui.components import developer as c_developer
@@ -85,6 +87,7 @@ from klaude_code.tui.terminal.notifier import (
85
87
  emit_tmux_signal,
86
88
  )
87
89
  from klaude_code.tui.terminal.progress_bar import OSC94States, emit_osc94
90
+ from klaude_code.ui.terminal.title import update_terminal_title
88
91
 
89
92
 
90
93
  @dataclass
@@ -136,6 +139,7 @@ class _SessionStatus:
136
139
  color: Style | None = None
137
140
  color_index: int | None = None
138
141
  sub_agent_state: model.SubAgentState | None = None
142
+ turn_first_dev_msg_rendered: bool = False
139
143
 
140
144
 
141
145
  class TUICommandRenderer:
@@ -475,6 +479,10 @@ class TUICommandRenderer:
475
479
  if not c_developer.need_render_developer_message(e):
476
480
  return
477
481
  with self.session_print_context(e.session_id):
482
+ session_status = self._sessions.get(e.session_id)
483
+ if session_status and not session_status.turn_first_dev_msg_rendered:
484
+ session_status.turn_first_dev_msg_rendered = True
485
+ self.print()
478
486
  self.print(c_developer.render_developer_message(e))
479
487
 
480
488
  # Display images from @ file references and user attachments
@@ -567,6 +575,8 @@ class TUICommandRenderer:
567
575
  )
568
576
 
569
577
  def display_turn_start(self, event: events.TurnStartEvent) -> None:
578
+ if event.session_id in self._sessions:
579
+ self._sessions[event.session_id].turn_first_dev_msg_rendered = False
570
580
  if not self.is_sub_agent_session(event.session_id):
571
581
  self.print()
572
582
 
@@ -610,6 +620,8 @@ class TUICommandRenderer:
610
620
  sub_agent_color=self._current_sub_agent_color,
611
621
  )
612
622
  )
623
+ else:
624
+ self.print()
613
625
 
614
626
  def display_interrupt(self) -> None:
615
627
  self.print(c_user_input.render_interrupt())
@@ -678,6 +690,75 @@ class TUICommandRenderer:
678
690
 
679
691
  self.print()
680
692
 
693
+ def display_backtrack(
694
+ self,
695
+ checkpoint_id: int,
696
+ note: str,
697
+ rationale: str,
698
+ original_user_message: str,
699
+ messages_discarded: int | None,
700
+ ) -> None:
701
+ self.console.print(
702
+ Rule(
703
+ Text(f"Backtracked to Checkpoint {checkpoint_id}", style=ThemeKey.BACKTRACK),
704
+ characters="=",
705
+ style=ThemeKey.LINES,
706
+ )
707
+ )
708
+ self.print()
709
+
710
+ if messages_discarded:
711
+ self.console.print(Text(f" Discarded {messages_discarded} messages", style=ThemeKey.BACKTRACK_INFO))
712
+
713
+ if rationale:
714
+ self.console.print(Text(" Rationale:", style=ThemeKey.BACKTRACK_INFO))
715
+ rationale_preview = rationale[:300] + "..." if len(rationale) > 300 else rationale
716
+ self.console.print(
717
+ Padding(
718
+ Panel(
719
+ NoInsetMarkdown(
720
+ rationale_preview, code_theme=self.themes.code_theme, style=ThemeKey.BACKTRACK_NOTE
721
+ ),
722
+ box=box.SIMPLE,
723
+ border_style=ThemeKey.LINES,
724
+ style=ThemeKey.BACKTRACK_NOTE,
725
+ ),
726
+ (0, 0, 0, 4),
727
+ )
728
+ )
729
+
730
+ if original_user_message:
731
+ self.console.print(Text(" Returned to:", style=ThemeKey.BACKTRACK_INFO))
732
+ msg_preview = (
733
+ original_user_message[:200] + "..." if len(original_user_message) > 200 else original_user_message
734
+ )
735
+ self.console.print(
736
+ Padding(
737
+ Panel(
738
+ Text(msg_preview, style=ThemeKey.BACKTRACK_USER_MESSAGE),
739
+ box=box.SIMPLE,
740
+ border_style=ThemeKey.LINES,
741
+ ),
742
+ (0, 0, 0, 4),
743
+ )
744
+ )
745
+
746
+ self.console.print(Text(" Summary:", style=ThemeKey.BACKTRACK_INFO))
747
+ note_preview = note[:300] + "..." if len(note) > 300 else note
748
+ self.console.print(
749
+ Padding(
750
+ Panel(
751
+ NoInsetMarkdown(note_preview, code_theme=self.themes.code_theme, style=ThemeKey.BACKTRACK_NOTE),
752
+ box=box.SIMPLE,
753
+ border_style=ThemeKey.LINES,
754
+ style=ThemeKey.BACKTRACK_NOTE,
755
+ ),
756
+ (0, 0, 0, 4),
757
+ )
758
+ )
759
+
760
+ self.print()
761
+
681
762
  # ---------------------------------------------------------------------
682
763
  # Notifications
683
764
  # ---------------------------------------------------------------------
@@ -797,6 +878,20 @@ class TUICommandRenderer:
797
878
  self.display_error(event)
798
879
  case RenderCompactionSummary(summary=summary, kept_items_brief=kept_items_brief):
799
880
  self.display_compaction_summary(summary, kept_items_brief)
881
+ case RenderBacktrack(
882
+ checkpoint_id=checkpoint_id,
883
+ note=note,
884
+ rationale=rationale,
885
+ original_user_message=original_user_message,
886
+ messages_discarded=messages_discarded,
887
+ ):
888
+ self.display_backtrack(
889
+ checkpoint_id=checkpoint_id,
890
+ note=note,
891
+ rationale=rationale,
892
+ original_user_message=original_user_message,
893
+ messages_discarded=messages_discarded,
894
+ )
800
895
  case SpinnerStart():
801
896
  self.spinner_start()
802
897
  case SpinnerStop():
@@ -815,6 +910,8 @@ class TUICommandRenderer:
815
910
  r_status.set_task_start()
816
911
  case TaskClockClear():
817
912
  r_status.clear_task_start()
913
+ case UpdateTerminalTitlePrefix(prefix=prefix, model_name=model_name):
914
+ update_terminal_title(model_name, prefix=prefix)
818
915
  case _:
819
916
  continue
820
917
 
klaude_code/tui/runner.py CHANGED
@@ -142,14 +142,19 @@ async def run_interactive(init_config: AppInitConfig, session_id: str | None = N
142
142
  elif detected is False:
143
143
  theme = "dark"
144
144
 
145
- display: ui.DisplayABC = TUIDisplay(theme=theme)
145
+ tui_display = TUIDisplay(theme=theme)
146
+ display: ui.DisplayABC = tui_display
146
147
  if init_config.debug:
147
148
  display = ui.DebugEventDisplay(display)
148
149
 
150
+ def _on_model_change(model_name: str) -> None:
151
+ update_terminal_title(model_name)
152
+ tui_display.set_model_name(model_name)
153
+
149
154
  components = await initialize_app_components(
150
155
  init_config=init_config,
151
156
  display=display,
152
- on_model_change=update_terminal_title,
157
+ on_model_change=_on_model_change,
153
158
  )
154
159
 
155
160
  def _status_provider() -> REPLStatusSnapshot:
@@ -14,19 +14,25 @@ _CHUNK_SIZE = 4096
14
14
  # Max columns for image display
15
15
  _MAX_COLS = 80
16
16
 
17
+ # Max rows for image display
18
+ _MAX_ROWS = 35
19
+
17
20
  # Image formats that need conversion to PNG
18
21
  _NEEDS_CONVERSION = {".jpg", ".jpeg", ".gif", ".bmp", ".webp", ".tiff", ".tif"}
19
22
 
20
- # Approximate pixels per terminal column (typical for most terminals)
23
+ # Approximate pixels per terminal cell (typical for most terminals)
21
24
  _PIXELS_PER_COL = 9
25
+ _PIXELS_PER_ROW = 18
22
26
 
23
27
 
24
- def _get_png_width(data: bytes) -> int | None:
25
- """Extract width from PNG header (IHDR chunk)."""
26
- # PNG signature (8 bytes) + IHDR length (4 bytes) + "IHDR" (4 bytes) + width (4 bytes)
27
- if len(data) < 24 or data[:8] != b"\x89PNG\r\n\x1a\n":
28
+ def _get_png_dimensions(data: bytes) -> tuple[int, int] | None:
29
+ """Extract width and height from PNG header (IHDR chunk)."""
30
+ # PNG signature (8 bytes) + IHDR length (4 bytes) + "IHDR" (4 bytes) + width (4 bytes) + height (4 bytes)
31
+ if len(data) < 28 or data[:8] != b"\x89PNG\r\n\x1a\n":
28
32
  return None
29
- return int.from_bytes(data[16:20], "big")
33
+ width = int.from_bytes(data[16:20], "big")
34
+ height = int.from_bytes(data[20:24], "big")
35
+ return width, height
30
36
 
31
37
 
32
38
  def _convert_to_png(path: Path) -> bytes | None:
@@ -76,16 +82,26 @@ def print_kitty_image(file_path: str | Path, *, file: IO[str] | None = None) ->
76
82
  term_size = shutil.get_terminal_size()
77
83
  target_cols = min(_MAX_COLS, term_size.columns)
78
84
 
79
- # Only set column width if image is wider than target, to avoid upscaling small images
80
85
  size_param = ""
81
- img_width = _get_png_width(data)
82
- if img_width is not None:
86
+ dimensions = _get_png_dimensions(data)
87
+ if dimensions is not None:
88
+ img_width, img_height = dimensions
83
89
  img_cols = img_width // _PIXELS_PER_COL
84
- if img_cols > target_cols:
90
+ img_rows = img_height // _PIXELS_PER_ROW
91
+ exceeds_width = img_cols > target_cols
92
+ exceeds_height = img_rows > _MAX_ROWS
93
+ if exceeds_width and exceeds_height:
94
+ # Both exceed: use the more constrained dimension to preserve aspect ratio
95
+ width_scale = target_cols / img_cols
96
+ height_scale = _MAX_ROWS / img_rows
97
+ size_param = f"c={target_cols}" if width_scale < height_scale else f"r={_MAX_ROWS}"
98
+ elif exceeds_width:
85
99
  size_param = f"c={target_cols}"
100
+ elif exceeds_height:
101
+ size_param = f"r={_MAX_ROWS}"
86
102
  else:
87
- # Fallback: always constrain if we can't determine image size
88
- size_param = f"c={target_cols}"
103
+ # Fallback: constrain by height since we can't determine image size
104
+ size_param = f"r={_MAX_ROWS}"
89
105
  print("", file=out)
90
106
  _write_kitty_graphics(out, encoded, size_param=size_param)
91
107
  print("", file=out)
@@ -22,12 +22,17 @@ def set_terminal_title(title: str) -> None:
22
22
  stream.flush()
23
23
 
24
24
 
25
- def update_terminal_title(model_name: str | None = None) -> None:
25
+ def update_terminal_title(model_name: str | None = None, *, prefix: str | None = None) -> None:
26
26
  """Update terminal title with folder name and optional model name."""
27
27
  folder_name = os.path.basename(os.getcwd())
28
28
  if model_name:
29
29
  # Strip provider suffix (e.g., opus@openrouter -> opus)
30
30
  model_alias = model_name.split("@")[0]
31
- set_terminal_title(f"klaude [{model_alias}] · {folder_name}")
31
+ title = f"klaude [{model_alias}] · {folder_name}"
32
32
  else:
33
- set_terminal_title(f"klaude · {folder_name}")
33
+ title = f"klaude · {folder_name}"
34
+
35
+ if prefix:
36
+ title = f"{prefix} {title}"
37
+
38
+ set_terminal_title(title)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 2.10.3
3
+ Version: 2.10.4
4
4
  Summary: Minimal code agent CLI
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: chardet>=5.2.0
@@ -2,13 +2,8 @@ klaude_code/.DS_Store,sha256=cLWFbSgdN0bXEd3_tz93BJSposEPafUBqSr7t-3lPbA,6148
2
2
  klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  klaude_code/app/__init__.py,sha256=7mgWpN9SFDqe8AW44bBn9M19nVsBcZURrsGB_8l2hrU,264
4
4
  klaude_code/app/runtime.py,sha256=d06L6O0uyExL-_qEVSKqekk_tUBr6hAzV9jT8As6eSY,6180
5
- klaude_code/auth/AGENTS.md,sha256=5ObIfgMfUDuNBKykK6kikRSEvCxDt5fO0-ySVaLVDW0,8467
6
- klaude_code/auth/__init__.py,sha256=LhGS2P80Ci_DeaqxVueknDIj-Ded4OFQdNmFHekXNY8,1106
7
- klaude_code/auth/antigravity/__init__.py,sha256=Lv37yKg7CLzoQss2Jho-jtrGiU-zUCa7W1w3eDWmR0o,610
8
- klaude_code/auth/antigravity/exceptions.py,sha256=jKtlTtoHzoqGARYmLjFl0Sxms9ySj_raPAaqEc4tcVs,448
9
- klaude_code/auth/antigravity/oauth.py,sha256=2ghPKXhlLF-iaEmsoJoVQZ1tkK75O7XdJuH1o_l0SDw,11101
10
- klaude_code/auth/antigravity/pkce.py,sha256=SfSLyIkiO9s0ROLDljz9Vu5GCxYP42U1b1nvWbXnkSI,664
11
- klaude_code/auth/antigravity/token_manager.py,sha256=Osab3ppyzvndTf1B8FBrrW3XayrhwOKkGpsQBTEWBnI,752
5
+ klaude_code/auth/AGENTS.md,sha256=OUjHxPk6H0cp3NeH4wLE51fWkBj_YJp1a8of_p2-sLE,8014
6
+ klaude_code/auth/__init__.py,sha256=NluhqwoReX6tynV7M4DXEKuIojgx6yAlZ0S6igvZtw8,653
12
7
  klaude_code/auth/base.py,sha256=j6sc8XvP2kXRHOfEfr_nKyp94QPVWJsJDN0lMYLsg2Q,5178
13
8
  klaude_code/auth/claude/__init__.py,sha256=h1oyqEttDM5TAF6w1Stk6YXYMsbATjODCsi6GhU4zAA,218
14
9
  klaude_code/auth/claude/exceptions.py,sha256=_3KbC6W7_gWpxTsSqI0Bxk5Q_v3Fad6dBjweEsoFun4,246
@@ -21,25 +16,27 @@ klaude_code/auth/codex/oauth.py,sha256=y1qpZ-6GK4wtxj7O6hFj5SWX61SFuS_buv0j_Wt46
21
16
  klaude_code/auth/codex/token_manager.py,sha256=I6tSp6jiBAe0mrYC94F7FfaP3KWf1iwcaG1SBxyVX-g,669
22
17
  klaude_code/auth/env.py,sha256=QLqV2QjVCAAPSaH2xm2W0KvQ-RSbRxk_Y_FSH_MGDNY,2550
23
18
  klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
24
- klaude_code/cli/auth_cmd.py,sha256=OwU7aOgSc7lZusQuVK6P6X0flKWK6cU677ED3YUja9s,11100
19
+ klaude_code/cli/auth_cmd.py,sha256=mgnFav918Mx5KyXNX3dAFC3Ps-CW4Ym3LYHK_ro6nBs,8721
25
20
  klaude_code/cli/config_cmd.py,sha256=7BmZpKeiO24mKKLKGO46WvSQzSaNwuZ3KtCV4GH-Yh0,3306
26
21
  klaude_code/cli/cost_cmd.py,sha256=PofksXj7ZmalaRfxAHCxtUBxEc7tfI-sIER_9GRA1CU,16604
27
22
  klaude_code/cli/debug.py,sha256=vEHOjObhrIHDAXk3q6cOgeW2NZxCx5AWM1rJ6FiJnVU,1901
28
- klaude_code/cli/list_model.py,sha256=GYznb88rvubnUCMvW-D1r3aGVWQB4-DzvsTjBSHjOUw,16168
23
+ klaude_code/cli/list_model.py,sha256=5Yra8N0uI_O332BDMlaUKL9MHbiR7NQGVuZOO2wIHAM,14277
29
24
  klaude_code/cli/main.py,sha256=bQijkLDTYtjFUdU1t-dGCzOilo7mcotIQefleaF9or8,13072
30
25
  klaude_code/cli/self_update.py,sha256=1xdG9ifvRZQDSx6RAtSSgXmw9hZNXMLvqC2zu4bS-GY,2622
31
26
  klaude_code/config/__init__.py,sha256=Qe1BeMekBfO2-Zd30x33lB70hdM1QQZGrp4DbWSQ-II,353
32
27
  klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
33
- klaude_code/config/assets/builtin_config.yaml,sha256=5S5dEox3cr5bLWk6N3z6njIP5RLe-sHE2vAvkKPBCqo,9112
28
+ klaude_code/config/assets/builtin_config.yaml,sha256=Bkr_GzsAk7_czsA8ag9Fp4nr8gr9rYgQuv8zwvX-OVI,8521
34
29
  klaude_code/config/builtin_config.py,sha256=OG5VERUHo3tSojgFXfNDV6pAHNOh3kO-xFHpvTr-cpc,1786
35
- klaude_code/config/config.py,sha256=otBvsUkvI-2fpZzx9fO6SPnCek7FI7kufvAnGIQqTz8,27084
30
+ klaude_code/config/config.py,sha256=yxS7szRLelwIOpjGRUBWAowZgBcHB6HAayPrfrY-qnA,25601
36
31
  klaude_code/config/model_matcher.py,sha256=3IlLU5h3NDh_bURbCW-PV027C3irG3hyitwj1cj99Ig,6179
37
32
  klaude_code/config/sub_agent_model_helper.py,sha256=PvYuGE0fVKn7eReHyL7Q3ReyH6_nCm7VPwEgZqcX5cI,8384
38
33
  klaude_code/config/thinking.py,sha256=5uVM0cFUJZBBsBGGdPG-tjdiNwZ-GFeWOBBWIdSPFvQ,9017
39
- klaude_code/const.py,sha256=VCK3HgZJZO6jcYz6U2rcHS7W-n4oyKYg9AC6eTB4HIQ,11575
34
+ klaude_code/const.py,sha256=WOGLb-CWPSM5iPCDnlYNB-xo8s_bw2o6PclcDXoxkBE,11651
40
35
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
36
  klaude_code/core/agent.py,sha256=GrIg22nfoq1c90UHyEfU_bh46vtXTCo4bLezb-3mGNo,4120
42
- klaude_code/core/agent_profile.py,sha256=wfde6zMez5abh5O04e7BzBlbLhHwd23pn4FBijOHxQg,11231
37
+ klaude_code/core/agent_profile.py,sha256=_dnSLXxLgjTtgDYamu2DyBgyVrjzDZL-KOhmlS_ZiUI,10933
38
+ klaude_code/core/backtrack/__init__.py,sha256=hbuXEr3Wi3zIM0J7xO5hfCEYwihWnWsMLc15Mczztuk,134
39
+ klaude_code/core/backtrack/manager.py,sha256=V2AErUazyeGhW90Fyv1IDtgXUX1V7Ayg1-xS65lucrk,1792
43
40
  klaude_code/core/bash_mode.py,sha256=BUy2_uOcJ8bO89t_QCwtw6GlHt7vd1t62sN5iWk-UuQ,9250
44
41
  klaude_code/core/compaction/AGENTS.md,sha256=KZR5lxe4jVAbT5K9PxbZcHWI1UwsppbGmxIfCdHYr7Q,3684
45
42
  klaude_code/core/compaction/__init__.py,sha256=CvidYx3sX0IZAa4pifX9jrQSkg4Nib7PKrcaOHswF60,329
@@ -52,8 +49,7 @@ klaude_code/core/manager/__init__.py,sha256=hdIbpnYj6i18byiWjtJIm5l7NYYDQMvafw8f
52
49
  klaude_code/core/manager/llm_clients.py,sha256=UxI_j4_pzheBggOkNuMhx_7n2AyQq-znnWkKGd77f_s,1384
53
50
  klaude_code/core/manager/llm_clients_builder.py,sha256=O2J5-uhT6GfIzWqBfxJzotQyPR_Z46YdGCXf92C8p-E,2467
54
51
  klaude_code/core/manager/sub_agent_manager.py,sha256=sQ88o0ivWHTlaNz-FC23CiHiPXF4mLsQ0T69jPO9Hck,7797
55
- klaude_code/core/memory.py,sha256=pq4E4Urfq8bj8EFIqet98gB2Zw97NvL6CahfRi6IpMc,4957
56
- klaude_code/core/prompts/prompt-antigravity.md,sha256=OpxPKLY6S8QDJExrHTuU_snIxgvNrvT09WHj-8dWZcc,6671
52
+ klaude_code/core/memory.py,sha256=EUOLUUPoGUXdhpDkAcGMkOg5aWKqByIHEeCWuslw9J4,5597
57
53
  klaude_code/core/prompts/prompt-claude-code.md,sha256=Wcv_FZ9vmFA2LhvkLiomN9g2oAmvs6qO3FN_xeAE4XM,8359
58
54
  klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md,sha256=GA1pIIF6JuAl4P3FIW4tVJ6zL_5iZ8MY_PF0DW9hBuU,11719
59
55
  klaude_code/core/prompts/prompt-codex-gpt-5-2.md,sha256=LUPKiO1x6cWKWmetMEVGSxCE_St2yDk-SAHL0TthHmc,25798
@@ -65,9 +61,12 @@ klaude_code/core/prompts/prompt-sub-agent-image-gen.md,sha256=tXYKSzFd04OiC0dmVO
65
61
  klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=xi9nyk8k0_64muL2RBMkrCdli5elXALjhKAsRO3qr-U,3627
66
62
  klaude_code/core/prompts/prompt-sub-agent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
67
63
  klaude_code/core/reminders.py,sha256=Dar0GqyOgiZiv0VzrzYOGM22ViSWJUaV12Ssdtcdjlo,21720
68
- klaude_code/core/task.py,sha256=uXNg_SxVnp6nFwDmWl8LjhG0HDv7_3P83zAV6dR2gcQ,20125
69
- klaude_code/core/tool/__init__.py,sha256=3NrBZrSTcm0rX0ube_cCXNSS59sYkaTSY4s5mxcfrH4,1436
70
- klaude_code/core/tool/context.py,sha256=lHMjbLE--WVek8gAPOvaHz4CdeRGzLXSusMyEdEU5ss,2961
64
+ klaude_code/core/task.py,sha256=6-rRnFDDDhQuRbdMI0iMKFZc6buiLH-VKsd3es89IPE,22908
65
+ klaude_code/core/tool/__init__.py,sha256=3bpgc58vW2eApsQdcdHl72VBgZlgptfFiUvgnjWkeHc,1509
66
+ klaude_code/core/tool/backtrack/__init__.py,sha256=2cOxuxVvX6MtbzA6k7dygST6FuOFfgGn_BI4Lm3pAXg,102
67
+ klaude_code/core/tool/backtrack/backtrack_tool.md,sha256=wmp-Shu6L1eV07fHNwETiLoCI5bhV2ymiGxpx-VJD8M,811
68
+ klaude_code/core/tool/backtrack/backtrack_tool.py,sha256=Pu0nkaVfLn-wNnyMwyE--Oxu-MUOR1ZjwtltoYQgywE,2593
69
+ klaude_code/core/tool/context.py,sha256=gHA25ze1CPeV2HeIZemcjShvvjujhr29l7L-s2-hvtw,3215
71
70
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
71
  klaude_code/core/tool/file/_utils.py,sha256=OG4BE9WyJqzH8ilVCL3D9yvAcHk-r-L9snd-E8gO_io,967
73
72
  klaude_code/core/tool/file/apply_patch.py,sha256=ovdSw7Lt68wVORGcmG_JzsljI2y4M0l2g0JkhMcI51w,16073
@@ -107,14 +106,11 @@ klaude_code/core/tool/web/web_fetch_tool.md,sha256=tpLnWd9miepnS1E3vUumaEHLrUoVg
107
106
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=THMbzs-aHI6ST9NU0kNUtJCz9uhclDB7v8S9814dwnI,9597
108
107
  klaude_code/core/tool/web/web_search_tool.md,sha256=l5gGPx-fXHFel1zLBljm8isy9pwEYXGrq5cFzzw1VBw,1135
109
108
  klaude_code/core/tool/web/web_search_tool.py,sha256=ljkgXxP6L5nJnbYB_IOUtPUN9zA_h5hBD55lhNAja08,4293
110
- klaude_code/core/turn.py,sha256=TK4-ZGmRo_qa21XRklGfEMnfhFGR20wnKjnvlf31HBQ,18882
109
+ klaude_code/core/turn.py,sha256=3tgxRpvt7eK_A1g2NVDq351nwTm3EOKyw6pf0grE0T8,19045
111
110
  klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
112
111
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
113
112
  klaude_code/llm/anthropic/client.py,sha256=RpYw4UQnhLzAsp6i-FU7cDW4deqngdAoQaTPGnCeO5U,17346
114
113
  klaude_code/llm/anthropic/input.py,sha256=_ng3WtRWbyhmMuFDNCnJoEi-k-tEOy9ukGbzvvgZ3vQ,10819
115
- klaude_code/llm/antigravity/__init__.py,sha256=TuK_k4mJpBQVBCfhRFQvVLeGtHRU8_2wXO2lRC-OB9o,71
116
- klaude_code/llm/antigravity/client.py,sha256=XnOBw7QPNA8NRrZIdNrOD1qLrvWLyI82PL7kIolgdic,20120
117
- klaude_code/llm/antigravity/input.py,sha256=WblkpS4DxnqHLb9oXGS3uDlgbzdP4GKWmC9L2HEtRwk,9463
118
114
  klaude_code/llm/bedrock_anthropic/__init__.py,sha256=NvgfmEREWgpSqlB7eS6RP-TGEZd2asMIKmI_mXenhSc,96
119
115
  klaude_code/llm/bedrock_anthropic/client.py,sha256=mETQrhGDt4uEDXO2c3y5Iao9RngygFSF6MOtwqAy1tk,2279
120
116
  klaude_code/llm/claude/__init__.py,sha256=8VCvvEjQQI-RpAMfHCl5ct4zlDU_jgbAuLOc9p9u-B4,61
@@ -124,31 +120,31 @@ klaude_code/llm/google/__init__.py,sha256=tQtf_mh_mC3E4S9XAsnhS2JZXGRnYUsBKF0jpX
124
120
  klaude_code/llm/google/client.py,sha256=9yf49q4-I-OSbUuHreBSiwqxXnRH7718bDpSyENfPUY,21330
125
121
  klaude_code/llm/google/input.py,sha256=tBOX2R9_26EVnNwe-QF77nRcALwu3xGlTNjGgwo2Sx4,9340
126
122
  klaude_code/llm/image.py,sha256=TJzduNtSmoJLizTUDo0EjbovqOeaXkvwnRyMfuzVVUQ,4512
127
- klaude_code/llm/input_common.py,sha256=htV8YHDlQ7fx2qW_D9e_BgxWlyBmZwAtNxnM15uj9gQ,7563
123
+ klaude_code/llm/input_common.py,sha256=hE_Ncnjv9ZK_ct8TzIXe9g1-IgtCuGL6lgYeKKX0ZeI,10437
128
124
  klaude_code/llm/json_stable.py,sha256=FrgJbJ33YrAkzl5iPOWLolFjYFZMuT97sbOegeXN7GE,1288
129
125
  klaude_code/llm/openai_codex/__init__.py,sha256=Dx2MxrZEHQZ8gsJmM05dE4qqak4F0zjwfXd5v8pIXaE,139
130
126
  klaude_code/llm/openai_codex/client.py,sha256=wIOfCsB1F_b9D6ymq-nyCIXAuuBTz6-CMUxD8NiuvkQ,5403
131
127
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
132
128
  klaude_code/llm/openai_compatible/client.py,sha256=oiRmqiqNJ-clLk6pK1LTOAyx1svmNBg1sNuT8uN3l5g,4717
133
- klaude_code/llm/openai_compatible/input.py,sha256=UfEu2c866QuVMFTY3GEPhuKV7QcCgxBwNYqGT88E_8E,2834
129
+ klaude_code/llm/openai_compatible/input.py,sha256=bd4yWGfkPtjDRaQy_VY3jLkS-Hlk_poBmSafMD-d1sM,3048
134
130
  klaude_code/llm/openai_compatible/stream.py,sha256=lG8iBXGmIyBfOrVbb1VTTit-NXD4TiibVk7oBfP4xJU,17036
135
131
  klaude_code/llm/openai_responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
136
132
  klaude_code/llm/openai_responses/client.py,sha256=qmQNcHZUBzvjQZZQkWh2f3oUYC9Lbx_dZD7KwnXbPPI,16362
137
133
  klaude_code/llm/openai_responses/input.py,sha256=eEeSHlGYY5VYGpj2DIVm8qjH2cXo-JaODT_SjFtS6Nw,9264
138
134
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
139
135
  klaude_code/llm/openrouter/client.py,sha256=pBQG3JIftEyDpWNo_rT7cDaTAmeUxTktyRRTcZNq9Hg,5858
140
- klaude_code/llm/openrouter/input.py,sha256=VqKPWCUb-BlFwNs1uldDD_dGPJzwskG301uULaqm958,6363
136
+ klaude_code/llm/openrouter/input.py,sha256=Zhijo6-WbuuNcR1Hmxh9Y9x-yGkJLQXOLGzdj7-u-10,6577
141
137
  klaude_code/llm/openrouter/reasoning.py,sha256=u7ccfnGxJ4Ws8P3X5FW91d8HXie29JjeWz0hZ1r0oFg,3320
142
138
  klaude_code/llm/partial_message.py,sha256=-sjlpV-et4ViBtBpdtihK5QBjAlwS47-mBpVbRQPP3s,142
143
- klaude_code/llm/registry.py,sha256=oYObtCgWQxL2eFfmvpYLqMhKvYD3JoszzpvuC08sRQQ,2177
139
+ klaude_code/llm/registry.py,sha256=8iSq6YFYlXuP7Iwy-T4Pq6zyGIAKlivRYa_x_q8L5h4,2101
144
140
  klaude_code/llm/stream_parts.py,sha256=jeu_pUAQ8oHp-Xie9cIhMGDPrOKG_T6bdcMHtiq2ol0,2936
145
141
  klaude_code/llm/usage.py,sha256=q9c7cFJlXUVvw0Rqjy31bEDwBMz9o_bHt3Lssgfbfm4,5780
146
142
  klaude_code/log.py,sha256=i9iVCmp4dxqxqH_7XPMVjZt8umiH1KPhRbX4Ao93mSM,11382
147
143
  klaude_code/protocol/__init__.py,sha256=TTPnuyQ22RypoTGKdoiS7ZEgHzinuaRHUrauzHDh7Xo,246
148
144
  klaude_code/protocol/commands.py,sha256=sy6z48I3q8HHL91bqou9n0TZZ91P34pVmtNHqcHArBo,759
149
- klaude_code/protocol/events.py,sha256=Xu2i81OgfuCCeyTBecVy_CoKsHpuo3R_aOyW0vS51KM,5273
150
- klaude_code/protocol/llm_param.py,sha256=MzKiZBKK_uTvJsmbaXJd7EEmQ9dedLEtVsSJUn2jbjg,5223
151
- klaude_code/protocol/message.py,sha256=RVU67DdIcgvYmEUuexOaYuy-IH8_92MGLyFxUstoIWw,7106
145
+ klaude_code/protocol/events.py,sha256=bMs-nh5RfdB19RVb5w_7UnscQuOaIWVnlrRh-Elzpg0,5476
146
+ klaude_code/protocol/llm_param.py,sha256=mFdAcbzJrIFB4T2QCbLyeZxZQ_38lUNCclEZIH3eWtQ,5191
147
+ klaude_code/protocol/message.py,sha256=rsjDvbXT_uLYTJ05sn9bHPmk3NqffLQ98dpyFcaItnU,7337
152
148
  klaude_code/protocol/model.py,sha256=iSx14YBbHokc0wR-RBs5bUBz3og95wgJbPV35OOimNk,10534
153
149
  klaude_code/protocol/op.py,sha256=eV144aS6YrviPyMLdMRr3Wpwq8dAOPsVFZ2o-fN4bhU,7644
154
150
  klaude_code/protocol/op_handler.py,sha256=8ngSwR7KKXgCoBYf9TCZlP2AvbQjbp3J3JcIKlPtwK4,2751
@@ -158,22 +154,23 @@ klaude_code/protocol/sub_agent/explore.py,sha256=GAl1aoj6afNq5WiuBuWKsxCEQ5tnbcT
158
154
  klaude_code/protocol/sub_agent/image_gen.py,sha256=HlJFODtjzAuUbolNTVariRzYR8c17Y2ZK4jPESmHPGU,1225
159
155
  klaude_code/protocol/sub_agent/task.py,sha256=D7OOmqqwExqvblJzogKMIag9_JsJIbl3ytWN0WVSNtc,599
160
156
  klaude_code/protocol/sub_agent/web.py,sha256=gvs2lE4sFByuZqoHttphR3U4WERY2_Z8rf4PMkyD7Qc,701
161
- klaude_code/protocol/tools.py,sha256=JxkhZquAcYfIUVUgCWSVuwD2JQGhvnHWQ1ata7AQslY,380
157
+ klaude_code/protocol/tools.py,sha256=RYwuFyh5FD9MQn70sJwIV-dzzkvx21ICWVUjh99Lpk8,404
162
158
  klaude_code/session/__init__.py,sha256=4sw81uQvEd3YUOOjamKk1KqGmxeb4Ic9T1Tee5zztyU,241
163
159
  klaude_code/session/codec.py,sha256=a374UZkOusn9MgFCc--yznDljK_4Qfy6yDPfhQq5_P0,1889
164
160
  klaude_code/session/export.py,sha256=EQZD8R7w3dnLpJjC6WP5yf7X6mAdjOkmwm1bMw7nftM,44922
165
161
  klaude_code/session/selector.py,sha256=snBpnz9UQCe_0K8HttSGCJECCE4YEzpWs_Fdmk2P9nI,2195
166
- klaude_code/session/session.py,sha256=AL-2oNggPf7PTnNthFdyiI233ySWdCcOqcxufkqrvwE,29373
167
- klaude_code/session/store.py,sha256=f_Ve6uMX1s-yH3jqiDWPULoLnab07QcFA04b3PD0ehE,6306
162
+ klaude_code/session/session.py,sha256=Hopzu-aX2Xbb68-lIMV_Yq4ScMjIXUwcargmxKdzL5w,33791
163
+ klaude_code/session/store.py,sha256=5Hyw8xG5I5isO0IUggKmnivN0VtbLfvXiZclqIJFpYE,6389
168
164
  klaude_code/session/templates/export_session.html,sha256=ekRt1zGePqT2lOYSPgdNlDjsOemM2r7FVB6X8nBrC00,137452
169
165
  klaude_code/session/templates/mermaid_viewer.html,sha256=2e5q0YpKpqB2FeFdH5t-BxJKtDDGrKKz8z1hmKSZ93M,30991
170
166
  klaude_code/skill/.DS_Store,sha256=zy9qIqi2YLGzlZwHNM4oAX8rDoNTg9yxdo22PJOwupg,6148
171
167
  klaude_code/skill/__init__.py,sha256=yeWeCfRGPOhT4mx_pjdo4fLondQ_Vx0edBtnFusLhls,839
172
168
  klaude_code/skill/assets/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
173
- klaude_code/skill/assets/create-plan/SKILL.md,sha256=ZAtiM2qPHcc8Z3Ongl1NgX5ythITPwyvcIqisgqWrGA,2493
174
169
  klaude_code/skill/assets/deslop/SKILL.md,sha256=1rJVgwSjd1ZB4-yZXRqH2LYD1_yzz11GVpt9ajuvADM,1404
170
+ klaude_code/skill/assets/executing-plans/SKILL.md,sha256=0Jn6Qv11GPTa-p8tUcHAj86XBJDVdoK2rNPnpXu1W1I,2550
175
171
  klaude_code/skill/assets/handoff/SKILL.md,sha256=GDHrEqWUeAQy7gGhha_y5jzjpv8C-xhk0hqMH5h59v8,1712
176
172
  klaude_code/skill/assets/skill-creator/SKILL.md,sha256=0ByoWb9ao0UKSoM5Tmz-Qe5CAPliTrVpUK0gPd9TFqo,5520
173
+ klaude_code/skill/assets/writing-plans/SKILL.md,sha256=IEbluVWqFsKI-ccpDFjyN2KN-2um1IF_rT2g-oMLRsI,3264
177
174
  klaude_code/skill/loader.py,sha256=g3MNDBq4B4_hf_d1NXf0Zhw3Xu9M2GIiaUZIN6S1ikM,8706
178
175
  klaude_code/skill/manager.py,sha256=6N1sfa0a5a7NgQgj3M_rRO2aj0vecyeBp_kWOZg211c,3452
179
176
  klaude_code/skill/system_skills.py,sha256=AmQFyUW0yNc6gkG2-SnwLMNH3M8ESNH9aPKvjD95wkc,5595
@@ -198,12 +195,12 @@ klaude_code/tui/command/resume_cmd.py,sha256=5pjxsfRHt2s_daVP1OUmPLERaZK_t_i_MWU
198
195
  klaude_code/tui/command/status_cmd.py,sha256=yALYGxyUX7iVdSRAKdG526YkqOvGV9F0CJNwk8nmzu4,5164
199
196
  klaude_code/tui/command/sub_agent_model_cmd.py,sha256=OA0Dr0az7MUPxcoYvMDHisp5sQ0UmKUvJm-BjDfG0I0,8112
200
197
  klaude_code/tui/command/thinking_cmd.py,sha256=gUQOhqtEieIMR-FUMSDj7OYEPloAC-ZSKxD1OVBn3jo,2683
201
- klaude_code/tui/commands.py,sha256=JAjhWvWUeajh8hQoPD9-iQpw2RBiJcosNd1sus3Hw2I,3825
198
+ klaude_code/tui/commands.py,sha256=zx55QzRH3EwtG5fYaqs7o20_ZbfEGMK17L5WTtrQH6Q,4166
202
199
  klaude_code/tui/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
200
  klaude_code/tui/components/bash_syntax.py,sha256=a8JMn6rFlJXcx7-WbsxIVwqtWQoI9krLUkj0imVC20I,7632
204
201
  klaude_code/tui/components/command_output.py,sha256=SnNiWdMAK37wd6PtfSWsLW2UutNfkpTKDbFmw2wu3LA,3688
205
202
  klaude_code/tui/components/common.py,sha256=dhUYLVVOSKxg5GCoS4eyUeKZ3E8Kpt4nqft4njuvPaI,4698
206
- klaude_code/tui/components/developer.py,sha256=jJPx3F6T8pBc1ubgJaAeOE5dpapBi8jfXDZA_PZdQxg,5487
203
+ klaude_code/tui/components/developer.py,sha256=jYnZs91TOZM3UAb1yjxtDQS6COytVRD_s85sMl7hnOI,5486
207
204
  klaude_code/tui/components/diffs.py,sha256=vwllnYBxC5xGjfKU3uIkCjcupr9nrjRjvvj0tg0_MQA,3085
208
205
  klaude_code/tui/components/errors.py,sha256=uqxVDqZLV6-Gvk46JWPFy2dc_bXHxgg_FEwrUX71jyg,733
209
206
  klaude_code/tui/components/mermaid_viewer.py,sha256=zI1FBuX6Ionx38KqkzhOIQ9tFzd7REPbjW1iqSiNrec,3086
@@ -214,14 +211,14 @@ klaude_code/tui/components/rich/code_panel.py,sha256=SOdyfHBZNB4gAWIbnN_enhHB1EW
214
211
  klaude_code/tui/components/rich/live.py,sha256=xiMT6dPsxM_jaazddKrV9CMJQWwpe2t9OdjffHvo1JU,2821
215
212
  klaude_code/tui/components/rich/markdown.py,sha256=8BXTyR0UMQ6Ut62HMeFPTB_8QLAvYDtk9SbGZ6H1hkY,25518
216
213
  klaude_code/tui/components/rich/quote.py,sha256=u6sBmGdp0ckaZLw_XgJk7iHW4zxnWikUaB3GX2tkhlM,5375
217
- klaude_code/tui/components/rich/status.py,sha256=hSvMwEguF2DfHH3ISR0bmDg58zAnM3CTJLcRff_rtrg,14791
218
- klaude_code/tui/components/rich/theme.py,sha256=eg9EIcjp2qysQi1s_D2r7QYtclOe3CMXJjf_bwTXAGM,17078
214
+ klaude_code/tui/components/rich/status.py,sha256=j2AONwSxhGjb4EWfs_TacIsJrAf5uHGI9ZJm9yvm9uE,12249
215
+ klaude_code/tui/components/rich/theme.py,sha256=f-Sxn8Dxro_5Fbf6WvBNrmOuath18gJnLe7paGZf7fw,17540
219
216
  klaude_code/tui/components/sub_agent.py,sha256=8XTWsTi9mfbNLMD8SZ__nZQmBf81rW-NWpuOT-sFbv8,4723
220
217
  klaude_code/tui/components/thinking.py,sha256=yVzY7BbcdDwB4XKi9i2sp3cKREirvmlMiEID74b-5_0,955
221
- klaude_code/tui/components/tools.py,sha256=MqW-_a4gtMnCR5N8APJYtN2TfSvuUdvo2WFEGm3Qa9A,27327
218
+ klaude_code/tui/components/tools.py,sha256=fDb1qxUmAJgoU2kAFmRLKZdvxWSlk6Dlqqur34xWK1U,27585
222
219
  klaude_code/tui/components/user_input.py,sha256=u3i6y3aKvUv7at39eeT2mEi0cgOsrha91FH-lUsUetw,3659
223
220
  klaude_code/tui/components/welcome.py,sha256=Ahkhg0dsSqy17pKLOp_5UZWn9vysr68T3Y-jB40yWsA,5303
224
- klaude_code/tui/display.py,sha256=VbBmNjGxp6R4oLjC0FrjXkr0INWSjfXlWq1mSVFGyMU,3933
221
+ klaude_code/tui/display.py,sha256=U5gB772q3qphjSJamAhTAnJ1xJ4TNLjBNQpoWcssT8k,4102
225
222
  klaude_code/tui/input/AGENTS.md,sha256=2RBLz7H0JbUJv6OBzeadLOlGUF5EBqvtwTGBf6nZuN0,1633
226
223
  klaude_code/tui/input/__init__.py,sha256=wLbjqBrvP6fmbGtbKe9Wp12yxhse0faVLOxtoWua_1E,353
227
224
  klaude_code/tui/input/completers.py,sha256=vs2Lq0_PIO1FszV968gJobeqptM5Jz4YCv-MpPqHakE,34559
@@ -229,14 +226,14 @@ klaude_code/tui/input/drag_drop.py,sha256=oyKtrHCyUiGiMLEXpsDTnTnAKJ1_xrvVkrASOi
229
226
  klaude_code/tui/input/images.py,sha256=dfM_BvlQE6F8BYEr2YBNTsWKd57_Jx-2wgFtv5ZSXSk,11202
230
227
  klaude_code/tui/input/key_bindings.py,sha256=6oxWdTdklFqLDOk6ZpyKijgrnQO4B9hSqgMfT2kdjXs,30032
231
228
  klaude_code/tui/input/paste.py,sha256=kELg5jC0WdBXWHJUsEjIhZ67KCvHMbN1XzyGmevVSNM,1888
232
- klaude_code/tui/input/prompt_toolkit.py,sha256=gohHzvAWp7Wh06-VjxTZpPojPq_0lVW-KeoTUPRsgSQ,30660
233
- klaude_code/tui/machine.py,sha256=STwhoBw_HwpkDHDts7CrwtUN211OYaySQ0jy8r7fa08,32579
234
- klaude_code/tui/renderer.py,sha256=b59_Pr17seKOcQlHDEH4CMWKNWzdpMzmUhqUDqLvQyU,34884
235
- klaude_code/tui/runner.py,sha256=ZADAH28Iu1DU-KDCggEyvJiM_LTbN1sjPEaQsuBNTbc,13111
229
+ klaude_code/tui/input/prompt_toolkit.py,sha256=RTPDpbQynbAKicN0N_hd2Wkm9azbxI6Tuz0OqWtRKVg,31363
230
+ klaude_code/tui/machine.py,sha256=c2mfVNos7jgd1a6xEbnLHsI9rs3juV9zYoasxe1_1N0,33168
231
+ klaude_code/tui/renderer.py,sha256=ej-OjTbB6Uyq0v0ZrSPGlKDBMN7t-5bJmQ44EjLFpT0,38744
232
+ klaude_code/tui/runner.py,sha256=plTltsmg_GQzgX9WPiLsZ-sQKVwyc_79z5Ws0Gl-sqo,13277
236
233
  klaude_code/tui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
237
234
  klaude_code/tui/terminal/color.py,sha256=6SJR2RA8cqJINNoRz65w0HL3x9g46ydIvDOGWMeNnQU,7195
238
235
  klaude_code/tui/terminal/control.py,sha256=m2fL6uHum5Li25X2IPnI4z_oVzMpVYcSldB-r0NLLzk,4920
239
- klaude_code/tui/terminal/image.py,sha256=9sKNj9luQsRWfbshscof3s6fvzBPbadU1L1eV4oidTs,4326
236
+ klaude_code/tui/terminal/image.py,sha256=d7ocaedHZV7svnxzdaSetf7u58xGU8EWKvTMa603Q-I,5045
240
237
  klaude_code/tui/terminal/notifier.py,sha256=3nR9vzI-7m5GkkQ_iYh7t3j8aSlQSgwtGt8swGLX2UI,4703
241
238
  klaude_code/tui/terminal/progress_bar.py,sha256=Go-0_ZodrmJVaQodaPnyxVU2nkpkBaYLnZBqwAUQukE,2133
242
239
  klaude_code/tui/terminal/selector.py,sha256=grMAqJpMftHwlI74DkFOlWWrAbc-lFjyUkaXl2DUQww,32402
@@ -247,9 +244,9 @@ klaude_code/ui/core/display.py,sha256=wk3_4-SE93BpxJOrx9MzEouMc4wTsYo7bBj9eeJO-i
247
244
  klaude_code/ui/core/input.py,sha256=8wXszl2Es6BbpqUjXMZka-7zc1d0kuySCxJUiDGHTaY,2593
248
245
  klaude_code/ui/debug_mode.py,sha256=ZvqbOx4c_rUerMbEZzOfcbNf9leqEDFjqJUlALtzF9Y,1111
249
246
  klaude_code/ui/terminal/__init__.py,sha256=5OeAzr994r8-peWsLON0iXsAvJ2pexwMp36JY7FKGDc,179
250
- klaude_code/ui/terminal/title.py,sha256=lCk1dKk7fIe5Fb-FRU9P4ktVEfBmT3ac3wICYmC4mGE,1229
247
+ klaude_code/ui/terminal/title.py,sha256=XqF4P3H7nZYA3umqfCjq-i_bN-j1kNkgckwmH5rpETI,1318
251
248
  klaude_code/update.py,sha256=QER816AZe9u3RhRvP0Z37Jh2Ch5RLy9PREyDsI0e1dA,4480
252
- klaude_code-2.10.3.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
253
- klaude_code-2.10.3.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
254
- klaude_code-2.10.3.dist-info/METADATA,sha256=p1r3t9GoNu-eBxdkTC3cKWiS7kAbXF2BXyD1ALViTm0,10120
255
- klaude_code-2.10.3.dist-info/RECORD,,
249
+ klaude_code-2.10.4.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
250
+ klaude_code-2.10.4.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
251
+ klaude_code-2.10.4.dist-info/METADATA,sha256=Y_5cqZoJ9sM9oFgSG-2XAs8PJlBDlUfEo99ibkyA4jU,10120
252
+ klaude_code-2.10.4.dist-info/RECORD,,
@@ -1,20 +0,0 @@
1
- """Antigravity authentication helpers."""
2
-
3
- from klaude_code.auth.antigravity.exceptions import (
4
- AntigravityAuthError,
5
- AntigravityNotLoggedInError,
6
- AntigravityOAuthError,
7
- AntigravityTokenExpiredError,
8
- )
9
- from klaude_code.auth.antigravity.oauth import AntigravityOAuth
10
- from klaude_code.auth.antigravity.token_manager import AntigravityAuthState, AntigravityTokenManager
11
-
12
- __all__ = [
13
- "AntigravityAuthError",
14
- "AntigravityAuthState",
15
- "AntigravityNotLoggedInError",
16
- "AntigravityOAuth",
17
- "AntigravityOAuthError",
18
- "AntigravityTokenExpiredError",
19
- "AntigravityTokenManager",
20
- ]
@@ -1,17 +0,0 @@
1
- """Exceptions for Antigravity authentication."""
2
-
3
-
4
- class AntigravityAuthError(Exception):
5
- """Base exception for Antigravity authentication errors."""
6
-
7
-
8
- class AntigravityNotLoggedInError(AntigravityAuthError):
9
- """User has not logged in to Antigravity."""
10
-
11
-
12
- class AntigravityTokenExpiredError(AntigravityAuthError):
13
- """Token expired and refresh failed."""
14
-
15
-
16
- class AntigravityOAuthError(AntigravityAuthError):
17
- """OAuth flow failed."""