klaude-code 1.2.8__py3-none-any.whl → 1.2.10__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 (82) hide show
  1. klaude_code/auth/codex/__init__.py +1 -1
  2. klaude_code/cli/main.py +12 -1
  3. klaude_code/cli/runtime.py +7 -11
  4. klaude_code/command/__init__.py +68 -21
  5. klaude_code/command/clear_cmd.py +6 -2
  6. klaude_code/command/command_abc.py +5 -2
  7. klaude_code/command/diff_cmd.py +5 -2
  8. klaude_code/command/export_cmd.py +7 -4
  9. klaude_code/command/help_cmd.py +6 -2
  10. klaude_code/command/model_cmd.py +5 -2
  11. klaude_code/command/prompt-deslop.md +14 -0
  12. klaude_code/command/prompt_command.py +8 -3
  13. klaude_code/command/refresh_cmd.py +6 -2
  14. klaude_code/command/registry.py +17 -5
  15. klaude_code/command/release_notes_cmd.py +89 -0
  16. klaude_code/command/status_cmd.py +98 -56
  17. klaude_code/command/terminal_setup_cmd.py +7 -4
  18. klaude_code/const/__init__.py +1 -1
  19. klaude_code/core/agent.py +66 -26
  20. klaude_code/core/executor.py +2 -2
  21. klaude_code/core/manager/agent_manager.py +6 -7
  22. klaude_code/core/manager/llm_clients.py +47 -22
  23. klaude_code/core/manager/llm_clients_builder.py +19 -7
  24. klaude_code/core/manager/sub_agent_manager.py +6 -2
  25. klaude_code/core/prompt.py +38 -28
  26. klaude_code/core/reminders.py +4 -7
  27. klaude_code/core/task.py +59 -40
  28. klaude_code/core/tool/__init__.py +2 -0
  29. klaude_code/core/tool/file/_utils.py +30 -0
  30. klaude_code/core/tool/file/apply_patch_tool.py +1 -1
  31. klaude_code/core/tool/file/edit_tool.py +6 -31
  32. klaude_code/core/tool/file/multi_edit_tool.py +7 -32
  33. klaude_code/core/tool/file/read_tool.py +6 -18
  34. klaude_code/core/tool/file/write_tool.py +6 -31
  35. klaude_code/core/tool/memory/__init__.py +5 -0
  36. klaude_code/core/tool/memory/memory_tool.py +2 -2
  37. klaude_code/core/tool/memory/skill_loader.py +2 -1
  38. klaude_code/core/tool/memory/skill_tool.py +13 -0
  39. klaude_code/core/tool/sub_agent_tool.py +2 -1
  40. klaude_code/core/tool/todo/todo_write_tool.py +1 -1
  41. klaude_code/core/tool/todo/update_plan_tool.py +1 -1
  42. klaude_code/core/tool/tool_context.py +21 -4
  43. klaude_code/core/tool/tool_runner.py +5 -8
  44. klaude_code/core/tool/web/mermaid_tool.py +1 -4
  45. klaude_code/core/turn.py +40 -37
  46. klaude_code/llm/__init__.py +2 -12
  47. klaude_code/llm/anthropic/client.py +14 -44
  48. klaude_code/llm/client.py +2 -2
  49. klaude_code/llm/codex/client.py +4 -3
  50. klaude_code/llm/input_common.py +0 -6
  51. klaude_code/llm/openai_compatible/client.py +31 -74
  52. klaude_code/llm/openai_compatible/input.py +6 -4
  53. klaude_code/llm/openai_compatible/stream_processor.py +82 -0
  54. klaude_code/llm/openrouter/client.py +32 -62
  55. klaude_code/llm/openrouter/input.py +4 -27
  56. klaude_code/llm/registry.py +33 -7
  57. klaude_code/llm/responses/client.py +16 -48
  58. klaude_code/llm/responses/input.py +1 -1
  59. klaude_code/llm/usage.py +61 -11
  60. klaude_code/protocol/commands.py +1 -0
  61. klaude_code/protocol/events.py +11 -2
  62. klaude_code/protocol/model.py +147 -24
  63. klaude_code/protocol/op.py +1 -0
  64. klaude_code/protocol/sub_agent.py +5 -1
  65. klaude_code/session/export.py +56 -32
  66. klaude_code/session/session.py +43 -21
  67. klaude_code/session/templates/export_session.html +4 -1
  68. klaude_code/ui/core/input.py +1 -1
  69. klaude_code/ui/modes/repl/__init__.py +1 -5
  70. klaude_code/ui/modes/repl/clipboard.py +5 -5
  71. klaude_code/ui/modes/repl/event_handler.py +153 -54
  72. klaude_code/ui/modes/repl/renderer.py +4 -4
  73. klaude_code/ui/renderers/developer.py +35 -25
  74. klaude_code/ui/renderers/metadata.py +68 -30
  75. klaude_code/ui/renderers/tools.py +53 -87
  76. klaude_code/ui/rich/markdown.py +5 -5
  77. klaude_code/ui/terminal/control.py +2 -2
  78. klaude_code/version.py +3 -3
  79. {klaude_code-1.2.8.dist-info → klaude_code-1.2.10.dist-info}/METADATA +1 -1
  80. {klaude_code-1.2.8.dist-info → klaude_code-1.2.10.dist-info}/RECORD +82 -78
  81. {klaude_code-1.2.8.dist-info → klaude_code-1.2.10.dist-info}/WHEEL +0 -0
  82. {klaude_code-1.2.8.dist-info → klaude_code-1.2.10.dist-info}/entry_points.txt +0 -0
@@ -121,32 +121,24 @@ def render_read_tool_call(arguments: str) -> RenderableType:
121
121
  return grid
122
122
 
123
123
 
124
- def render_edit_tool_call(arguments: str) -> Text:
125
- render_result: Text = Text.assemble(("→ ", ThemeKey.TOOL_MARK))
124
+ def render_edit_tool_call(arguments: str) -> RenderableType:
125
+ grid = create_grid()
126
+ tool_name_column = Text.assemble(("→", ThemeKey.TOOL_MARK), " ", ("Edit", ThemeKey.TOOL_NAME))
126
127
  try:
127
128
  json_dict = json.loads(arguments)
128
129
  file_path = json_dict.get("file_path")
129
- render_result = (
130
- render_result.append_text(Text("Edit", ThemeKey.TOOL_NAME))
131
- .append_text(Text(" "))
132
- .append_text(render_path(file_path, ThemeKey.TOOL_PARAM_FILE_PATH))
133
- )
130
+ arguments_column = render_path(file_path, ThemeKey.TOOL_PARAM_FILE_PATH)
134
131
  except json.JSONDecodeError:
135
- render_result = (
136
- render_result.append_text(Text("Edit", ThemeKey.TOOL_NAME))
137
- .append_text(Text(" "))
138
- .append_text(
139
- Text(
140
- arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
141
- style=ThemeKey.INVALID_TOOL_CALL_ARGS,
142
- )
143
- )
132
+ arguments_column = Text(
133
+ arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
134
+ style=ThemeKey.INVALID_TOOL_CALL_ARGS,
144
135
  )
145
- return render_result
136
+ grid.add_row(tool_name_column, arguments_column)
137
+ return grid
146
138
 
147
139
 
148
- def render_write_tool_call(arguments: str) -> Text:
149
- render_result: Text = Text.assemble(("→ ", ThemeKey.TOOL_MARK))
140
+ def render_write_tool_call(arguments: str) -> RenderableType:
141
+ grid = create_grid()
150
142
  try:
151
143
  json_dict = json.loads(arguments)
152
144
  file_path = json_dict.get("file_path")
@@ -157,97 +149,77 @@ def render_write_tool_call(arguments: str) -> Text:
157
149
  abs_path = (Path().cwd() / abs_path).resolve()
158
150
  if abs_path.exists():
159
151
  op_label = "Overwrite"
160
- render_result = (
161
- render_result.append_text(Text(op_label, ThemeKey.TOOL_NAME))
162
- .append_text(Text(" "))
163
- .append_text(render_path(file_path, ThemeKey.TOOL_PARAM_FILE_PATH))
164
- )
152
+ tool_name_column = Text.assemble(("→", ThemeKey.TOOL_MARK), " ", (op_label, ThemeKey.TOOL_NAME))
153
+ arguments_column = render_path(file_path, ThemeKey.TOOL_PARAM_FILE_PATH)
165
154
  except json.JSONDecodeError:
166
- render_result = (
167
- render_result.append_text(Text("Write", ThemeKey.TOOL_NAME))
168
- .append_text(Text(" "))
169
- .append_text(
170
- Text(
171
- arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
172
- style=ThemeKey.INVALID_TOOL_CALL_ARGS,
173
- )
174
- )
155
+ tool_name_column = Text.assemble(("→", ThemeKey.TOOL_MARK), " ", ("Write", ThemeKey.TOOL_NAME))
156
+ arguments_column = Text(
157
+ arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
158
+ style=ThemeKey.INVALID_TOOL_CALL_ARGS,
175
159
  )
176
- return render_result
160
+ grid.add_row(tool_name_column, arguments_column)
161
+ return grid
177
162
 
178
163
 
179
- def render_multi_edit_tool_call(arguments: str) -> Text:
180
- render_result: Text = Text.assemble(("→ ", ThemeKey.TOOL_MARK), ("MultiEdit", ThemeKey.TOOL_NAME), " ")
164
+ def render_multi_edit_tool_call(arguments: str) -> RenderableType:
165
+ grid = create_grid()
166
+ tool_name_column = Text.assemble(("→", ThemeKey.TOOL_MARK), " ", ("MultiEdit", ThemeKey.TOOL_NAME))
181
167
  try:
182
168
  json_dict = json.loads(arguments)
183
169
  file_path = json_dict.get("file_path")
184
170
  edits = json_dict.get("edits", [])
185
- render_result = (
186
- render_result.append_text(render_path(file_path, ThemeKey.TOOL_PARAM_FILE_PATH))
187
- .append_text(Text(" - "))
188
- .append_text(Text(f"{len(edits)}", ThemeKey.TOOL_PARAM_BOLD))
189
- .append_text(Text(" updates", ThemeKey.TOOL_PARAM_FILE_PATH))
171
+ arguments_column = Text.assemble(
172
+ render_path(file_path, ThemeKey.TOOL_PARAM_FILE_PATH),
173
+ Text(" - "),
174
+ Text(f"{len(edits)}", ThemeKey.TOOL_PARAM_BOLD),
175
+ Text(" updates", ThemeKey.TOOL_PARAM_FILE_PATH),
190
176
  )
191
177
  except json.JSONDecodeError:
192
- render_result = render_result.append_text(
193
- Text(
194
- arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
195
- style=ThemeKey.INVALID_TOOL_CALL_ARGS,
196
- )
178
+ arguments_column = Text(
179
+ arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
180
+ style=ThemeKey.INVALID_TOOL_CALL_ARGS,
197
181
  )
198
- return render_result
182
+ grid.add_row(tool_name_column, arguments_column)
183
+ return grid
199
184
 
200
185
 
201
186
  def render_apply_patch_tool_call(arguments: str) -> RenderableType:
187
+ grid = create_grid()
188
+ tool_name_column = Text.assemble(("→", ThemeKey.TOOL_MARK), " ", ("Apply Patch", ThemeKey.TOOL_NAME))
189
+
202
190
  try:
203
191
  payload = json.loads(arguments)
204
192
  except json.JSONDecodeError:
205
- return Text.assemble(
206
- ("→ ", ThemeKey.TOOL_MARK),
207
- ("Apply Patch", ThemeKey.TOOL_NAME),
208
- " ",
209
- Text(
210
- arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
211
- style=ThemeKey.INVALID_TOOL_CALL_ARGS,
212
- ),
193
+ arguments_column = Text(
194
+ arguments.strip()[: const.INVALID_TOOL_CALL_MAX_LENGTH],
195
+ style=ThemeKey.INVALID_TOOL_CALL_ARGS,
213
196
  )
197
+ grid.add_row(tool_name_column, arguments_column)
198
+ return grid
214
199
 
215
200
  patch_content = payload.get("patch", "")
216
-
217
- grid = create_grid()
218
- header = Text.assemble(("→ ", ThemeKey.TOOL_MARK), ("Apply Patch", ThemeKey.TOOL_NAME))
219
- summary = Text("", ThemeKey.TOOL_PARAM)
201
+ arguments_column = Text("", ThemeKey.TOOL_PARAM)
220
202
 
221
203
  if isinstance(patch_content, str):
222
204
  lines = [line for line in patch_content.splitlines() if line and not line.startswith("*** Begin Patch")]
223
205
  if lines:
224
- summary = Text(lines[0][: const.INVALID_TOOL_CALL_MAX_LENGTH], ThemeKey.TOOL_PARAM)
206
+ arguments_column = Text(lines[0][: const.INVALID_TOOL_CALL_MAX_LENGTH], ThemeKey.TOOL_PARAM)
225
207
  else:
226
- summary = Text(
208
+ arguments_column = Text(
227
209
  str(patch_content)[: const.INVALID_TOOL_CALL_MAX_LENGTH],
228
210
  ThemeKey.INVALID_TOOL_CALL_ARGS,
229
211
  )
230
212
 
231
- if summary.plain:
232
- grid.add_row(header, summary)
233
- else:
234
- grid.add_row(header, Text("", ThemeKey.TOOL_PARAM))
235
-
213
+ grid.add_row(tool_name_column, arguments_column)
236
214
  return grid
237
215
 
238
216
 
239
217
  def render_todo(tr: events.ToolResultEvent) -> RenderableType:
240
- if tr.ui_extra is None:
241
- return Text.assemble(
242
- (" ✘", ThemeKey.ERROR_BOLD),
243
- " ",
244
- Text("(no content)", style=ThemeKey.ERROR),
245
- )
246
- if tr.ui_extra.type != model.ToolResultUIExtraType.TODO_LIST or tr.ui_extra.todo_list is None:
218
+ if not isinstance(tr.ui_extra, model.TodoListUIExtra):
247
219
  return Text.assemble(
248
220
  (" ✘", ThemeKey.ERROR_BOLD),
249
221
  " ",
250
- Text("(invalid ui_extra)", style=ThemeKey.ERROR),
222
+ Text("(no content)" if tr.ui_extra is None else "(invalid ui_extra)", style=ThemeKey.ERROR),
251
223
  )
252
224
 
253
225
  ui_extra = tr.ui_extra.todo_list
@@ -283,11 +255,9 @@ def render_generic_tool_result(result: str, *, is_error: bool = False) -> Render
283
255
  def _extract_mermaid_link(
284
256
  ui_extra: model.ToolResultUIExtra | None,
285
257
  ) -> model.MermaidLinkUIExtra | None:
286
- if ui_extra is None:
287
- return None
288
- if ui_extra.type != model.ToolResultUIExtraType.MERMAID_LINK:
289
- return None
290
- return ui_extra.mermaid_link
258
+ if isinstance(ui_extra, model.MermaidLinkUIExtra):
259
+ return ui_extra
260
+ return None
291
261
 
292
262
 
293
263
  def render_memory_tool_call(arguments: str) -> RenderableType:
@@ -380,11 +350,9 @@ def render_mermaid_tool_result(tr: events.ToolResultEvent) -> RenderableType:
380
350
  def _extract_truncation(
381
351
  ui_extra: model.ToolResultUIExtra | None,
382
352
  ) -> model.TruncationUIExtra | None:
383
- if ui_extra is None:
384
- return None
385
- if ui_extra.type != model.ToolResultUIExtraType.TRUNCATION:
386
- return None
387
- return ui_extra.truncation
353
+ if isinstance(ui_extra, model.TruncationUIExtra):
354
+ return ui_extra
355
+ return None
388
356
 
389
357
 
390
358
  def render_truncation_info(ui_extra: model.TruncationUIExtra) -> RenderableType:
@@ -496,9 +464,7 @@ def render_tool_call(e: events.ToolCallEvent) -> RenderableType | None:
496
464
 
497
465
 
498
466
  def _extract_diff_text(ui_extra: model.ToolResultUIExtra | None) -> str | None:
499
- if ui_extra is None:
500
- return None
501
- if ui_extra.type == model.ToolResultUIExtraType.DIFF_TEXT:
467
+ if isinstance(ui_extra, model.DiffTextUIExtra):
502
468
  return ui_extra.diff_text
503
469
  return None
504
470
 
@@ -102,7 +102,6 @@ class MarkdownStream:
102
102
 
103
103
  # Defer Live creation until the first update.
104
104
  self.live: Live | None = None
105
- self._live_started: bool = False
106
105
 
107
106
  # Streaming control
108
107
  self.when: float = 0.0 # Timestamp of last update
@@ -119,9 +118,10 @@ class MarkdownStream:
119
118
  self.mark: str | None = mark
120
119
  self.indent: int = max(indent, 0)
121
120
 
122
- # Defer Live creation until the first update
123
- self.live: Live | None = None
124
- self._live_started: bool = False
121
+ @property
122
+ def _live_started(self) -> bool:
123
+ """Check if Live display has been started (derived from self.live)."""
124
+ return self.live is not None
125
125
 
126
126
  def _render_markdown_to_lines(self, text: str) -> list[str]:
127
127
  """Render markdown text to a list of lines.
@@ -214,7 +214,7 @@ class MarkdownStream:
214
214
  console=self.console,
215
215
  )
216
216
  self.live.start()
217
- self._live_started = True
217
+ # Note: self._live_started is now a property derived from self.live
218
218
 
219
219
  # If live rendering isn't available (e.g., after a final update), stop.
220
220
  if self.live is None:
@@ -38,7 +38,7 @@ def start_esc_interrupt_monitor(
38
38
  # Fallback for non-interactive or non-POSIX environments.
39
39
  if not sys.stdin.isatty() or os.name != "posix":
40
40
 
41
- async def _noop() -> None: # type: ignore[return-type]
41
+ async def _noop() -> None:
42
42
  return None
43
43
 
44
44
  return stop_event, asyncio.create_task(_noop())
@@ -85,7 +85,7 @@ def start_esc_interrupt_monitor(
85
85
  log((f"esc monitor error: {exc}", "r red"))
86
86
  finally:
87
87
  try:
88
- termios.tcsetattr(fd, termios.TCSADRAIN, old) # type: ignore[name-defined]
88
+ termios.tcsetattr(fd, termios.TCSADRAIN, old)
89
89
  except Exception:
90
90
  pass
91
91
 
klaude_code/version.py CHANGED
@@ -57,7 +57,7 @@ def _get_installed_version() -> str | None:
57
57
  ver = ver[1:]
58
58
  return ver
59
59
  return None
60
- except Exception:
60
+ except (OSError, subprocess.SubprocessError):
61
61
  return None
62
62
 
63
63
 
@@ -67,7 +67,7 @@ def _get_latest_version() -> str | None:
67
67
  with urllib.request.urlopen(PYPI_URL, timeout=5) as response:
68
68
  data = json.loads(response.read().decode())
69
69
  return data.get("info", {}).get("version")
70
- except Exception:
70
+ except (OSError, json.JSONDecodeError, ValueError):
71
71
  return None
72
72
 
73
73
 
@@ -93,7 +93,7 @@ def _compare_versions(installed: str, latest: str) -> bool:
93
93
  installed_tuple = _parse_version(installed)
94
94
  latest_tuple = _parse_version(latest)
95
95
  return latest_tuple > installed_tuple
96
- except Exception:
96
+ except ValueError:
97
97
  return False
98
98
 
99
99
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.2.8
3
+ Version: 1.2.10
4
4
  Summary: Add your description here
5
5
  Requires-Dist: anthropic>=0.66.0
6
6
  Requires-Dist: openai>=1.102.0
@@ -1,43 +1,45 @@
1
1
  klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  klaude_code/auth/__init__.py,sha256=jLUgi4V4m0t2BlVuuni7iANOErpJgAeEqByuD1sKUvQ,480
3
- klaude_code/auth/codex/__init__.py,sha256=dC81gQ8nujoy9IBF9znUbMQbjv0lDWWdHrm-R5yo5cM,501
3
+ klaude_code/auth/codex/__init__.py,sha256=rrpPvr-_R4kbj_oZ2U_fPmIfDPZov9Pjz2bAFpztUJk,502
4
4
  klaude_code/auth/codex/exceptions.py,sha256=TcAKPozsY3SCh_krTYFlJ8FU5jepgSTg-5UO1dA4OgE,388
5
5
  klaude_code/auth/codex/jwt_utils.py,sha256=tuaJKT4vAIGeaQjNzgNcHWGrYYSDrDeaQT9h4cw5Us8,1134
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=4c0pwFDJXIrumvHKKJthlEkUm6p5RLfPfBOrK4HerTE,11609
10
- klaude_code/cli/runtime.py,sha256=It7JwXi4MfaRHV2CaBjDmR8M8VVJEXoljXMUc7pR85Y,12347
9
+ klaude_code/cli/main.py,sha256=1lasnU_3wrTMmWWNl_1phXraUZn-6w3lsY_zB2xWUFI,12225
10
+ klaude_code/cli/runtime.py,sha256=96KCR-wd2sg9-9y0b6L0cfqy2snkC81AzN5463LAo3k,12223
11
11
  klaude_code/cli/session_cmd.py,sha256=cIBm3uUurke-TfBvQHz9mGW29LOAh22FIpXVyypnwDo,2549
12
- klaude_code/command/__init__.py,sha256=ApRFYqzmDxXe-jJ0tHg4qe4XsJ4QSICu8ICQcmwxQ1Y,1125
13
- klaude_code/command/clear_cmd.py,sha256=ojsDdZnv_-bDYBPecpdY85DfGicst9Jf9j7esg2z2hE,674
14
- klaude_code/command/command_abc.py,sha256=WWY9qi7SILttPl6fJNi9ThevsqpGFoQJ1ecgoosd_Ms,2547
15
- klaude_code/command/diff_cmd.py,sha256=306PcTeKokLmchp6mIWeZ2rokINsU5-2f4iGrjEbkCE,5269
16
- klaude_code/command/export_cmd.py,sha256=lsnBwxjiHyxgU7TPmT038ZVsOVqNxV2l-6U9T-dxI1g,3498
17
- klaude_code/command/help_cmd.py,sha256=VddWegAJS5OjbAZ35c9Pb0SSDZpPH5PqRyQ--sdseII,1709
18
- klaude_code/command/model_cmd.py,sha256=EApytBR6gl1Po9Mi7YVvDWgV-0ivgw-RQTnQ__EIvFQ,1510
12
+ klaude_code/command/__init__.py,sha256=k9LJCFzzABhq09q1TeKSl4oG-288MYFXCICnZemVha8,2878
13
+ klaude_code/command/clear_cmd.py,sha256=EXIhVHvbfpgTrquLzTyeVAPkIRusjFkknwqzcct51ww,733
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
19
+ klaude_code/command/prompt-deslop.md,sha256=YGaAXqem39zd0UWCFjWUj83Cf7cvUJq1768aJExFqeg,1346
19
20
  klaude_code/command/prompt-dev-docs-update.md,sha256=g1IWIWIa-3qlNOw5mBA4N9H1_nvYcw8AKo7XoQw_AZQ,1855
20
21
  klaude_code/command/prompt-dev-docs.md,sha256=PU9iT6XdUEH6grfSjHVma7xKOQcA__ZTKlEDkbbO0hA,1783
21
22
  klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
22
- klaude_code/command/prompt_command.py,sha256=cDdLAyGk3JFS-nRlNzTnT8T35QQ-FC6RT0fD5ELZGO4,2405
23
- klaude_code/command/refresh_cmd.py,sha256=kgpbcnqf1n_ihMW99AfTXeZEkE2_MNwgQ9DbNfl2jqY,1288
24
- klaude_code/command/registry.py,sha256=OZhQqoLfWjqojJauemc8L2rnwPhYoAh2Kjx3HSAz_ZE,3554
25
- klaude_code/command/status_cmd.py,sha256=ogB8x2swxirh5cs0iiBokmLVD287ztM4PySjT-Qid9c,4330
26
- klaude_code/command/terminal_setup_cmd.py,sha256=bQfMDZIzak8emkmuaY43_2YaS7t908sUJ_orYwccTtY,10957
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
27
29
  klaude_code/config/__init__.py,sha256=9XVCYYqzJtCi46I94hbUmJ2yTFuZ-UlH-QTx7OpLAkQ,292
28
30
  klaude_code/config/config.py,sha256=Vc9u7-40T81Rbx1OdMqSWZLh3vf9aj4wmBUnIOH7jAw,6526
29
31
  klaude_code/config/list_model.py,sha256=08vLxar7YAcUNzGTN6bUbPtAoXXyfO5y6LjaaXMbsyQ,8019
30
32
  klaude_code/config/select_model.py,sha256=el1jqXlNyYmHH_dvdcEkWVOYqIZ9y05_VJRlfZk7HkQ,2565
31
- klaude_code/const/__init__.py,sha256=joTUQF1NEA-OHY3fuNIjNYYxOJlBW-MtSQ3YE3EAer4,3980
33
+ klaude_code/const/__init__.py,sha256=dSfcFjVeDoc5UEHtzR-9U_BWCVNXggHyiKHwHapASZ0,3980
32
34
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- klaude_code/core/agent.py,sha256=XCzoo0fR5WVlJjSdOURB1FgvMbgRt4xrLydPORkbqOU,6193
34
- klaude_code/core/executor.py,sha256=cuFxabyChIq8VqFr1ssbAy-VByHu0qJynJfEq2iHajI,18653
35
+ klaude_code/core/agent.py,sha256=jNJn0_eIOJSAXyLq167eZtXRpxcVF9G1QrGRLwpNoD8,7642
36
+ klaude_code/core/executor.py,sha256=kM24uMTW70q2XZJeb7EvgUpLzusPAraZ8fpepIt-Bg8,18653
35
37
  klaude_code/core/manager/__init__.py,sha256=6CswltCHXBUcezlW7xui2S1swDp8JTkS1YiEHmq4-no,658
36
- klaude_code/core/manager/agent_manager.py,sha256=5InJ1EaPKbBSLZy7vLro2B8-DbbjPRHHc4D9SuiT9Rw,4908
37
- klaude_code/core/manager/llm_clients.py,sha256=Fdkd7EijC9IDnEPU622cFLeaYGojov5Z2nPyR0xhj3Q,1335
38
- klaude_code/core/manager/llm_clients_builder.py,sha256=NzZKWXv8xB4GA1Hd6whEYM746atMavnI_nJaq7K5G08,1710
39
- klaude_code/core/manager/sub_agent_manager.py,sha256=X6jilMg4HSIck_m032AyRUarpuux6TVI15g6L8_3T9Q,3474
40
- klaude_code/core/prompt.py,sha256=VQasJ1J1f1cKytMgUsbmY_vhqe2nTJuU2D9VErUGodU,2961
38
+ klaude_code/core/manager/agent_manager.py,sha256=-yrq9EfsebNarHx4rGtaBlxHKUNv2k6SnVI4t1Q8808,5037
39
+ 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/sub_agent_manager.py,sha256=SnDFu8ovcQjBkQSJrSD8e0Yf63NhIjYAt8WyQhBcpy0,3760
42
+ klaude_code/core/prompt.py,sha256=9eO5AqPXYdIw6QZw-HGIcmCPOMFFJVv73nk7xpAf4BA,3329
41
43
  klaude_code/core/prompts/prompt-claude-code.md,sha256=3OY5ShcYPp8f0XrIl-3pBVIDZkweWsLzDHy5ldnSOJc,8954
42
44
  klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md,sha256=SW-y8AmR99JL_9j26k9YVAOQuZ18vR12aT5CWHkZDc4,11741
43
45
  klaude_code/core/prompts/prompt-codex-gpt-5-1.md,sha256=jNi593_4L3EoMvjS0TwltF2b684gtDBsYHa9npxO34A,24239
@@ -46,131 +48,133 @@ klaude_code/core/prompts/prompt-subagent-explore.md,sha256=m7eQMTWWibaZIMPNbMYUh
46
48
  klaude_code/core/prompts/prompt-subagent-oracle.md,sha256=hGtyDm_6UhJZUJwfXt5A-170is1KMHls85fEEo45z-w,1376
47
49
  klaude_code/core/prompts/prompt-subagent-webfetch.md,sha256=kHtJINbCRiRDrip_q6idHHU3CwbDfrVlpgtSZvugOWI,2304
48
50
  klaude_code/core/prompts/prompt-subagent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
49
- klaude_code/core/reminders.py,sha256=CTVIAqwU8bVB02eq9vI4Iha-xO4_MxaCr71maRpfwmE,18221
50
- klaude_code/core/task.py,sha256=wh8fyfWd0JZj3BQtr1uiWoWf-O2N79Fyl2QufanQsOA,9886
51
- klaude_code/core/tool/__init__.py,sha256=GQjs6IXqtiKn8RI3OmM0wki8p16SBnvuHVBez4Z5xqo,2120
51
+ klaude_code/core/reminders.py,sha256=S5ZbYYrIoQKPGtLqtqg8yPCwZRD5Vdlkzf1wu86bw8g,18123
52
+ klaude_code/core/task.py,sha256=OsYWJeJZlYSKUNbNv4DoTzhnopuh5pjyz2wYWQeRq7k,10457
53
+ klaude_code/core/tool/__init__.py,sha256=-pxK4iCkvcdLpav74foMNdeIjsC6PMkVaw_q5kajivg,2170
52
54
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ klaude_code/core/tool/file/_utils.py,sha256=UjXO9Bwyr7YtDeSALiA8cp4KQlQskibZlbk6A33F0q4,779
53
56
  klaude_code/core/tool/file/apply_patch.py,sha256=gUukVxt0qEP2NLHiPsmFWOi0sOuW0FaUnN0BfZ6FcII,17257
54
57
  klaude_code/core/tool/file/apply_patch_tool.md,sha256=KVDsjUiLDa97gym0NrZNVG4jA1_zN-2i-B3upVQyOhU,59
55
- klaude_code/core/tool/file/apply_patch_tool.py,sha256=tUefdyXFf96TgnxDSvAQrdAF2sfhDedhduhwjohPn2M,8261
58
+ klaude_code/core/tool/file/apply_patch_tool.py,sha256=cz9E7oYW9CjaokXhjAeyIxsukdvHVM2uM3cvwwDTNxg,8215
56
59
  klaude_code/core/tool/file/edit_tool.md,sha256=rEcUjJuPC46t1nXWjTDxplDcxWDbzTWsr6_bYt5_aRI,1110
57
- klaude_code/core/tool/file/edit_tool.py,sha256=rmWWcH5of9ufDqBpc0VGLYTjuB_YNUaDgZi8ykTfPMQ,10532
60
+ klaude_code/core/tool/file/edit_tool.py,sha256=5qk7iwoF1ODUhY3eRoUGs7x_RNjXark1XfpYb18oEd8,9994
58
61
  klaude_code/core/tool/file/multi_edit_tool.md,sha256=4G39b-jGdJdGGbBTj7R6tcUfcui9tXn6CLQ5uaX5y1M,2485
59
- klaude_code/core/tool/file/multi_edit_tool.py,sha256=SBiFVqZHNF80GOAJFRiLWRd-k_p7NqQPuJ-YAJHy3nY,7426
62
+ klaude_code/core/tool/file/multi_edit_tool.py,sha256=inXJvAKGp-ZSQVAFk0Tv8kWc1LwxLdCMAla4Fpj47Gs,6887
60
63
  klaude_code/core/tool/file/read_tool.md,sha256=FeRW9WMUNCtgbezjohvSJjFLZhQd1EaHVcjCI4eQHf4,1472
61
- klaude_code/core/tool/file/read_tool.py,sha256=N7Z4MC9vjLKHfUX-rioV63xVQ7fUANy8_hjvoXPDMX4,12894
64
+ klaude_code/core/tool/file/read_tool.py,sha256=I3j6XS4KBt1BH0cyJwLp0zFWh-mq8xAyh_w7_bU96Z8,12803
62
65
  klaude_code/core/tool/file/write_tool.md,sha256=CNnYgtieUasuHdpXLDpTEsqe492Pf7v75M4RQ3oIer8,613
63
- klaude_code/core/tool/file/write_tool.py,sha256=5XrMiRzOVJjKgWqq9AnT6VG4OVNDqfHfXMK72RyE3T8,4878
64
- klaude_code/core/tool/memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ klaude_code/core/tool/file/write_tool.py,sha256=AqprfzACIL-f-J_ZTLntteCddUBCOKFoIukM6kp_ZqI,4340
67
+ klaude_code/core/tool/memory/__init__.py,sha256=oeBpjUXcAilCtYXhiXDzavw5-BE_pbB2ZxsFJKTTcdc,143
65
68
  klaude_code/core/tool/memory/memory_tool.md,sha256=LNpu2kStqcfDA7AXj7IiQqgC6_Yf5kQm06fSVgyN4Jw,1011
66
- klaude_code/core/tool/memory/memory_tool.py,sha256=beNlM-C9aOIck2_qJOGx1YkQ8z3UCR_ufHMr_jxYnJ8,19066
67
- klaude_code/core/tool/memory/skill_loader.py,sha256=AOFU5RQfR6GAKemHEgI40F-X8t8yCnSKsS8Oi6nfZtA,8567
69
+ klaude_code/core/tool/memory/memory_tool.py,sha256=h777Iju8gNijCfYMEALeoyRomBY0FXGu46gykehCeUA,19018
70
+ klaude_code/core/tool/memory/skill_loader.py,sha256=k04Ir1FcYNILDtbF2cri0LR4pS6Bw2X8UP0CU6oUd9w,8658
68
71
  klaude_code/core/tool/memory/skill_tool.md,sha256=UfjJK5EGAd3mf7ym5rIrRdPyV3kBTxNnwzOjNnHOBrE,973
69
- klaude_code/core/tool/memory/skill_tool.py,sha256=Ma0iLQya3AndatUHfEANTDtXzhTly0AkzckPuQ1JXtA,3209
72
+ klaude_code/core/tool/memory/skill_tool.py,sha256=8SC4asNZSKfExuhzbyGz4f2cr78PgCpNkut_31IHePw,3602
70
73
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
74
  klaude_code/core/tool/shell/bash_tool.md,sha256=ILKpnRCBTkU2uSDEdZQjNYo1l6hsM4TO-3RD5zWC61c,3935
72
75
  klaude_code/core/tool/shell/bash_tool.py,sha256=qPB7W51LmFsRxWJoqKih1vNTGIOaXE4wfxnKPzBXs6g,4490
73
76
  klaude_code/core/tool/shell/command_safety.py,sha256=r5nTltVj1Iil7dmnYByj4jp4du7AtPEaUa4J6XdrlTo,13209
74
- klaude_code/core/tool/sub_agent_tool.py,sha256=CpQAG9P6ovtDBaQ_khXNoIfGerbHJVL7UnNRtcqtX5c,2763
77
+ klaude_code/core/tool/sub_agent_tool.py,sha256=Ohroht4z-W_kuBo0AvKoL40XQM0QGzScIDAuqYKXSVk,2765
75
78
  klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
79
  klaude_code/core/tool/todo/todo_write_tool.md,sha256=AJ2OkZGcccQYDXkydPAr5JI2SExBF8qJd0rXsHySLps,9711
77
- klaude_code/core/tool/todo/todo_write_tool.py,sha256=LPCAq_GiG3fPWvVkidl-gITCWSGXLUsyYi0fdUCTv2g,4552
80
+ klaude_code/core/tool/todo/todo_write_tool.py,sha256=XgSo8F1aJn_0fkh9Gx-5DHNFNlbZys1bUjwhe6NwyLU,4506
78
81
  klaude_code/core/tool/todo/update_plan_tool.md,sha256=OoEF4voHHd5J3VDv7tq3UCHdXApkBvxdHXUf5tVOkE8,157
79
- klaude_code/core/tool/todo/update_plan_tool.py,sha256=4l8BO_f0ZZTbI8JNL9mIU_lPo1Qo7E1s93Kz9CR2DuA,3840
82
+ klaude_code/core/tool/todo/update_plan_tool.py,sha256=5MmmApG0wObBgc-mLETjIMupxIv-SZ7Q0uJO2Krtl1k,3794
80
83
  klaude_code/core/tool/tool_abc.py,sha256=3FlVZ8a6hC-_Ci23_cpLaap9nHinHgxSB1TsZL5ylUQ,731
81
- klaude_code/core/tool/tool_context.py,sha256=vCA3oYN_YHnINoxejsdEUfM2QxlbXRaJ3D9_udc-8wk,3749
84
+ klaude_code/core/tool/tool_context.py,sha256=Slnykn14GwN9V_-IBRX3xu0xjvA-Fi3bqHTYR-Z7A5Y,4175
82
85
  klaude_code/core/tool/tool_registry.py,sha256=2d-5zIsODztgJe7obS1OAZbrQSqAquULcoXPLLEr2Xs,2665
83
- klaude_code/core/tool/tool_runner.py,sha256=IyVjMnGVMAjs8bJuCMBfFE1eQ39FSjnOz3Wb5HHQ0T4,10259
86
+ klaude_code/core/tool/tool_runner.py,sha256=I9BfeRgtVT3IoZGXgEVvzTEF8-fpKFqtbt6MgznJleI,10079
84
87
  klaude_code/core/tool/truncation.py,sha256=hHeJDrvvNt0wE9yGZVaZheYUW0VoJ7QbopKo6wjyP-w,6644
85
88
  klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
89
  klaude_code/core/tool/web/mermaid_tool.md,sha256=Ketpxpr7lz8238p5Q7ZzcyWchWd4dU68u708-dxaZds,978
87
- klaude_code/core/tool/web/mermaid_tool.py,sha256=GUwWcrakSZH_Jp61Q_i5TvwQj6sWMrIW0ZbNpJ0dVtE,2750
90
+ klaude_code/core/tool/web/mermaid_tool.py,sha256=Ok0A27oHLnV1c__74bheUuy3wpqDJ1zaXUSxuuqsNPI,2630
88
91
  klaude_code/core/tool/web/web_fetch_tool.md,sha256=_5U-LSoI86rD26nPb0D5BQCr6hj8eyF0UELSiyLznCA,347
89
92
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=iu6kM_-90K8mqHbK9Loui96vICV7d8rmtss68rcFqw0,4958
90
- klaude_code/core/turn.py,sha256=ylcsVa3WsyOAvzR7McZ3a0sF4avbsRwDpoevujJruo8,9303
91
- klaude_code/llm/__init__.py,sha256=hjegW9bOyTZ6tN6TxQaMWKkEOuapgK2LJ0vWs9FLj_c,594
93
+ klaude_code/core/turn.py,sha256=0Pc8GI2tuY2wukCPxCrWvuPlhhZRfXcrduNrDG0yeG8,9517
94
+ klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
92
95
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
93
- klaude_code/llm/anthropic/client.py,sha256=0PyIjCTgxJWk8kS6MpEegxykvlsRRTnhvrThBjMlIdU,11173
96
+ klaude_code/llm/anthropic/client.py,sha256=1gk4Fkd4FvEJjt1Ryta9uP-mMN7ZYX4zqNgxkyK0QT8,9605
94
97
  klaude_code/llm/anthropic/input.py,sha256=qPo4nmhnhSfLqef4UUVoIz8EjoXTxvlsrfsc_6qqM_s,8039
95
- klaude_code/llm/client.py,sha256=Un5LA5Z622JQ1MYEfJi7gXj3ycX3ce0WvYPcOogM32Y,1527
98
+ klaude_code/llm/client.py,sha256=7g9jLe4_aUTp7kSjbWmVlSnoJxQD8l1n1PIAegbSXsQ,1505
96
99
  klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
97
- klaude_code/llm/codex/client.py,sha256=i7l4fQCgyUBn8MndSnsrjXRWA4yWZpN-UJnrUr5kN54,4824
98
- klaude_code/llm/input_common.py,sha256=yLn-g9T_lC3AnPPilFwlKEA2-vnIgyOKlHFBYB00jm8,8972
100
+ klaude_code/llm/codex/client.py,sha256=t-A5kzyqowNIuec1hLlrcYzLnAzTEtVF30wjEKKeg80,4928
101
+ klaude_code/llm/input_common.py,sha256=purxHHMo_yahNvv0Y1pH7WmfTfZgZqUqyo2JvdFiVO0,8526
99
102
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
100
- klaude_code/llm/openai_compatible/client.py,sha256=hidXCXqsVdDbN_R-J5gjCTs1IXrLW_HRebqdu1PTGnM,9183
101
- klaude_code/llm/openai_compatible/input.py,sha256=AispOfSlQPmFWPgDYs2j3Q_2zwpYyZDf6oQNG8Z5q1M,3590
103
+ klaude_code/llm/openai_compatible/client.py,sha256=R4T0KhQb-gpyczJfUG1y42l4_K_IsIWHFIPLtPZ6iwQ,7597
104
+ klaude_code/llm/openai_compatible/input.py,sha256=rtWVjpwb9tLrinucezmncQXet8MerUxE5Gxc32sfDr4,3750
105
+ klaude_code/llm/openai_compatible/stream_processor.py,sha256=ckOBWZ_iUqgcESD5pnvjqJxvPI7YA4k9DYZkZ37KbmE,3388
102
106
  klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=kuw3ceDgenQz2Ccc9KYqBkDo6F1sDb5Aga6m41AIECA,4071
103
107
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
104
- klaude_code/llm/openrouter/client.py,sha256=oq8VPmehAdSK9wsnKCNDRmkicEbeZ4sjy7bPfuWBNPc,9101
105
- klaude_code/llm/openrouter/input.py,sha256=JrO3T8XMRumjwDoP4sc1UKTU9K_BFot63pi83sUN-IE,5901
108
+ klaude_code/llm/openrouter/client.py,sha256=tFb6e0iNz-72pygnmtKnNeQUQ2zY5ui1vTPcho99NCg,7835
109
+ klaude_code/llm/openrouter/input.py,sha256=2GuDVHd_74ZtHQyFyTGhZqtWjM7m5GYqFtKf--AvmlI,5059
106
110
  klaude_code/llm/openrouter/reasoning_handler.py,sha256=TYIHdwMopi8DVqOpeN3vpyp-GcWOZgTeRnT5QvlK70U,8100
107
- klaude_code/llm/registry.py,sha256=KBKSelBLlGooInpzfVztN6OZqqfc0WzmB-cT8lE5fw8,686
111
+ klaude_code/llm/registry.py,sha256=bbxZ_Mb7C2xCk_OVUQoZnsyPgmO3tbfJ292qaCtr1Ts,1763
108
112
  klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
109
- klaude_code/llm/responses/client.py,sha256=5-c0DH-9chtkGCoBe4tgYXatwj2XmlF83TRfE0Zsn9w,10795
110
- klaude_code/llm/responses/input.py,sha256=hnTnOGpo1-N_vsi7C3O_PJoj-Gf1cBdt9Q1sal3vhYM,6079
111
- klaude_code/llm/usage.py,sha256=CsZ3eAkt8lwJ47r0UV1fThu32tBBPAr-Zjc_-xq63rY,4302
113
+ klaude_code/llm/responses/client.py,sha256=hcFbDgUJPMZsAR8kSxfshuAEAVXJOZL2FIxVqZ1ku90,9359
114
+ klaude_code/llm/responses/input.py,sha256=noNmalXvxw6UXo6ngkhFBroECxK6igmgEQ49YVhY0xg,6049
115
+ klaude_code/llm/usage.py,sha256=3FWDQZeM2LKXt1eeP2K40lkjtwovZP6SLCYlBJ0NV8Y,5647
112
116
  klaude_code/protocol/__init__.py,sha256=aGUgzhYqvhuT3Mk2vj7lrHGriH4h9TSbqV1RsRFAZjQ,194
113
- klaude_code/protocol/commands.py,sha256=zoqyBSpFZI8q8LP3rlr1mR-ekCufx-DfPGbzqsgx7X8,544
114
- klaude_code/protocol/events.py,sha256=DYICx6ALXVvVDENNIVQWlewm1pmSAxMjsrApeLahnck,3307
117
+ klaude_code/protocol/commands.py,sha256=ulHcHvvRbJosmp51l-xNio8ImDEI8uVmG17wVH2kg90,580
118
+ klaude_code/protocol/events.py,sha256=exOriAIxdIzS7WDKCw3am-uw1egx_8tVbvcgO6s3nMI,3562
115
119
  klaude_code/protocol/llm_param.py,sha256=Hjq8Z-3nGhAJovf-lcsNc0kBVGRDWKe910J5lZwQfq4,4424
116
- klaude_code/protocol/model.py,sha256=VT2ESJFKyTCy05T1yY0_QVL381qKbkQM3Sx66kon5TU,7750
117
- klaude_code/protocol/op.py,sha256=rkPvDRsOgPyibMI1n0pDO7ghFWJBfDGas9BnACtmfO4,2654
120
+ klaude_code/protocol/model.py,sha256=rNbwfmqtmrMffpt9CkSDCe32PLCJG9bED_oS_uPWTZk,12116
121
+ klaude_code/protocol/op.py,sha256=NScxaXHqqTu5KpDKfMN8Zv5kIZXMrZQOJgDPWhM7rPg,2687
118
122
  klaude_code/protocol/op_handler.py,sha256=_lnv3-RxKkrTfGTNBlQ23gbHJBEtMLC8O48SYWDtPjE,843
119
- klaude_code/protocol/sub_agent.py,sha256=M17Cu58xC40j2pQF0cjeFaGtfLOMjiNIHNzE7Ej50LQ,13419
123
+ klaude_code/protocol/sub_agent.py,sha256=dPOG0rGQJEpx2w0FtXodP0VsJLnCtPa5vIAP4eZ1iq8,13548
120
124
  klaude_code/protocol/tools.py,sha256=hkjVirnQqGTJS46IWvVKXWR4usPPUgDZDnm34LzAVSc,348
121
125
  klaude_code/session/__init__.py,sha256=oXcDA5w-gJCbzmlF8yuWy3ezIW9DgFBNUs-gJHUJ-Rc,121
122
- klaude_code/session/export.py,sha256=lmU_X_NjNP3G8SNF2dxZk2wp4Q4S0KM4UYU200fZE5s,23573
126
+ klaude_code/session/export.py,sha256=OOC4f-dzy1Qk4V6XHspb6abiqYsMvec_UHxp0mEUzTY,24493
123
127
  klaude_code/session/selector.py,sha256=HTboyzih7V8zbZoSsArJ-GVC1EnXTGocHJwFmZfbeSg,2567
124
- klaude_code/session/session.py,sha256=1s9KmpgqBXBDyPH04udYMAE3FynGyrpXY7oQIoxXVTI,19403
125
- klaude_code/session/templates/export_session.html,sha256=q8CradCANsE2uj00qnH6v1KV5QZQPHSWzxXcVCVT0qk,41406
128
+ klaude_code/session/session.py,sha256=9sjU1iEpmpawcxh3PuXkfrMzf8It0kc6r_xi8uyCYKE,20170
129
+ klaude_code/session/templates/export_session.html,sha256=O25hJaq2WnKFswZSxJOzufGj0WYmva9IQjwod2mzYRc,41537
126
130
  klaude_code/trace/__init__.py,sha256=B-S4qdCj8W88AaC_gVmhTaejH6eLYClBVh2Q6aGAVBk,184
127
131
  klaude_code/trace/log.py,sha256=0K0uek2KWq0zkUZijcO-TBM6STLe-h_8IIW0lx7V7ZA,4865
128
132
  klaude_code/ui/__init__.py,sha256=AL1Ro0u8ObNPMj4sci_U4zakG7IpnI3bie-C63E2QPI,2873
129
133
  klaude_code/ui/core/__init__.py,sha256=2NakrTDcxem5D0atyEY_Rxv1BbKCeZweF63L6AAq6r8,23
130
134
  klaude_code/ui/core/display.py,sha256=NwFQ9oKi8i3T5EsYDRrTpGBr3BZI0Ggns37JuQEOH54,3540
131
- klaude_code/ui/core/input.py,sha256=jyu2wJWvZT7t-icoa1oLO5jfr4WLZ8TReYUwGR15ha0,2571
135
+ klaude_code/ui/core/input.py,sha256=GqEos_VKRpfzQg0LQvr3210gzu2mw0_7OpPyNXmF3LI,2533
132
136
  klaude_code/ui/core/stage_manager.py,sha256=ozKYS213_RpsgYxF9mIDcTObrxqkqbE3Ao6CDhnES2E,1559
133
137
  klaude_code/ui/modes/__init__.py,sha256=ByDPbyYYU4o5kdnEes3b1VEV173RI9XAXyzkFbrApEY,26
134
138
  klaude_code/ui/modes/debug/__init__.py,sha256=1-1tAk7FtENdYzExSttYdHiJ-qH3DIQ5yYJ51ms2uSg,13
135
139
  klaude_code/ui/modes/debug/display.py,sha256=11I-JN9OEz2zBIqhEXctSUaDO1Z0nT_cG8R78jIBftk,1067
136
140
  klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJd3yhVf_k,12
137
141
  klaude_code/ui/modes/exec/display.py,sha256=m2kkgaUoGD9rEVUmcm7Vs_PyAI2iruKCJYRhANjSsKo,1965
138
- klaude_code/ui/modes/repl/__init__.py,sha256=WlSaybzk2M3Dngf8mJZWr5vx-yJpeph7lTb5Nm9fMRo,1635
139
- klaude_code/ui/modes/repl/clipboard.py,sha256=_WVLgv-4mprERmcw7iRYTunrSUU51-oojp_hFCM3gVk,5117
142
+ klaude_code/ui/modes/repl/__init__.py,sha256=JursXYxevw0hrezE-urGo25962InIXVPj_uYnPafN-U,1528
143
+ klaude_code/ui/modes/repl/clipboard.py,sha256=ZCpk7kRSXGhh0Q_BWtUUuSYT7ZOqRjAoRcg9T9n48Wo,5137
140
144
  klaude_code/ui/modes/repl/completers.py,sha256=V6pxi61w1z0B1eDliudahBQJ6wkPXAGI4AaBg8J0XtE,18283
141
145
  klaude_code/ui/modes/repl/display.py,sha256=v-Jxe7MWpOCEsx9FFEzqKaIg0jLS7ZU9bevooBjxxEQ,2242
142
- klaude_code/ui/modes/repl/event_handler.py,sha256=5I8Ds1AfUF9eZtKiq99p_Vh3GMB-VV8YjWvwDuUv96c,15812
146
+ klaude_code/ui/modes/repl/event_handler.py,sha256=qZdyDmPN_KsMYjkGlm6-H4Owqo5JVGH-XB0x7h9YKz8,18797
143
147
  klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=wwXTQ_ZP70y_SgIQenttY82aBZDsRYhxerEqm46gpOM,7592
144
148
  klaude_code/ui/modes/repl/key_bindings.py,sha256=Px-QdRHkzvb2fDGg5d3JHic5ieiGiPcXorPJ5bAM8dI,7801
145
- klaude_code/ui/modes/repl/renderer.py,sha256=0BQZxHG1zMqMt6I31zNkN7Nl2hQxVoryClXXZIjOLys,11982
149
+ klaude_code/ui/modes/repl/renderer.py,sha256=G7K9HXqFKLdEvWgz3JpruJk02RBULqq7-GSu_gCkP-A,11962
146
150
  klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
151
  klaude_code/ui/renderers/assistant.py,sha256=Dxy6v4pX28RyWhnrjBteY8_NvDIi_jQa-j0mWt-eqWY,569
148
152
  klaude_code/ui/renderers/common.py,sha256=TPH7LCbeJGqB8ArTsVitqJHEyOxHU6nwnRtvF04nLJ4,184
149
- klaude_code/ui/renderers/developer.py,sha256=hVSpAKx-b9MJUBxKgYd4rY-3J-O4g7wpjbp88M_k6nU,6182
153
+ klaude_code/ui/renderers/developer.py,sha256=fE-9LRzVLiKnK3ctFcuDDP_eehohhsgPCH_tYaOp-xs,6378
150
154
  klaude_code/ui/renderers/diffs.py,sha256=P--aLjvZy4z77FDx6uM9LlIYVjYlyZwj0MncdJTO2AA,7691
151
155
  klaude_code/ui/renderers/errors.py,sha256=c_fbnoNOnvuI3Bb24IujwV8Mpes-qWS_xCWfAcBvg6A,517
152
- klaude_code/ui/renderers/metadata.py,sha256=tFmekiQ70Rfulj0cqE7AeKVlVjOD6KVEFAIhFuzpTvc,7195
156
+ klaude_code/ui/renderers/metadata.py,sha256=P7AIfLA6Ge5pbNNaB8eOs5m6nm7WcYxnto8BAdd5cE0,8809
153
157
  klaude_code/ui/renderers/sub_agent.py,sha256=3cyn95pu4IniOJyWW4vfQ-X72iLufQ3LT9CkAQMuF4k,2686
154
158
  klaude_code/ui/renderers/thinking.py,sha256=jzDfvYuwpafndmBMMb6UumGxur9iFi_X0LYIo08eDlw,1179
155
- klaude_code/ui/renderers/tools.py,sha256=0Ekh5p7kwUYCuPfVrU-OAoLptt6Onx_jE9awBfxCm3I,20426
159
+ klaude_code/ui/renderers/tools.py,sha256=kHxInHy9N3n4Np0svQsy6JUDjlUzG0gr2-7t4WG58YA,19564
156
160
  klaude_code/ui/renderers/user_input.py,sha256=rDdOYvbgJ6oePQAtyTCK-KhARfLKytpTZboZ-cFIuJQ,2603
157
161
  klaude_code/ui/rich/__init__.py,sha256=olvMm2SteyKioOqUJbEoav2TsDr_mtKqkSaifNumjwc,27
158
162
  klaude_code/ui/rich/live.py,sha256=Uid0QAZG7mHb4KrCF8p9c9n1nHLHzW75xSqcLZ4bLWY,2098
159
- klaude_code/ui/rich/markdown.py,sha256=hvL0uvMxUBi7II-Jizn9U92mk4flJpEh_xJkxDQhEK8,11425
163
+ klaude_code/ui/rich/markdown.py,sha256=XYJoTAiNnXXWySxwmlPuAGWelV6sZgQ6foZUX_s43IE,11461
160
164
  klaude_code/ui/rich/quote.py,sha256=tZcxN73SfDBHF_qk0Jkh9gWBqPBn8VLp9RF36YRdKEM,1123
161
165
  klaude_code/ui/rich/searchable_text.py,sha256=Adr2EFewX1UInypz-vMOUgZP9gk3Zk8_d2utWhV3K90,2452
162
166
  klaude_code/ui/rich/status.py,sha256=sHTenGYERGiLwnkwdGFjFw9WDbbnMSPTKeEJiSYYNaU,8503
163
167
  klaude_code/ui/rich/theme.py,sha256=JAlFXwcZYbHv0vcuweWnzu4vR2CDe-mqH24CEtNBnL4,10159
164
168
  klaude_code/ui/terminal/__init__.py,sha256=33AbEwVH3G-oJSYL3QDlnbjoVj-uH_C0p09Zr71Z7Fw,21
165
169
  klaude_code/ui/terminal/color.py,sha256=M-i09DVlLAhAyhQjfeAi7OipoGi1p_OVkaZxeRfykY0,7135
166
- klaude_code/ui/terminal/control.py,sha256=P9PyaX8v1qp1zxwr7yGwTiNEb772KNMUSQWkVKMvAvQ,5056
170
+ klaude_code/ui/terminal/control.py,sha256=Yq0giFYIBOIJp1KQTvqAglQXKzSbwO5f2fI_b8EoTcU,4997
167
171
  klaude_code/ui/terminal/notifier.py,sha256=YOQXZYrjUZFLRt1iIoHxDKYoQUS-760lpydBGw9OxbM,3227
168
172
  klaude_code/ui/terminal/progress_bar.py,sha256=MDnhPbqCnN4GDgLOlxxOEVZPDwVC_XL2NM5sl1MFNcQ,2133
169
173
  klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlshyOQ,15
170
174
  klaude_code/ui/utils/common.py,sha256=xzw-Mgj0agxrf22QxpH7YzVIpkMXIRY6SgXWtLYF0yU,2881
171
175
  klaude_code/ui/utils/debouncer.py,sha256=TFF1z7B7-FxONEigkYohhShDlqo4cOcqydE9zz7JBHc,1270
172
- klaude_code/version.py,sha256=QDgEqSFhyTSiABQFQc9VfujMPQcdjgoCaYTQsr94x0Q,4752
173
- klaude_code-1.2.8.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
174
- klaude_code-1.2.8.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
175
- klaude_code-1.2.8.dist-info/METADATA,sha256=yaLap7nVbPl0CLFhi9dpa8e_kSZrleziUA76nOy6a20,5140
176
- klaude_code-1.2.8.dist-info/RECORD,,
176
+ 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,,