klaude-code 1.2.15__py3-none-any.whl → 1.2.17__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 (59) hide show
  1. klaude_code/cli/main.py +66 -42
  2. klaude_code/cli/runtime.py +34 -13
  3. klaude_code/command/__init__.py +3 -0
  4. klaude_code/command/export_cmd.py +2 -2
  5. klaude_code/command/export_online_cmd.py +149 -0
  6. klaude_code/command/prompt-handoff.md +33 -0
  7. klaude_code/command/thinking_cmd.py +5 -1
  8. klaude_code/config/config.py +20 -21
  9. klaude_code/config/list_model.py +1 -1
  10. klaude_code/const/__init__.py +3 -0
  11. klaude_code/core/executor.py +2 -2
  12. klaude_code/core/manager/llm_clients_builder.py +1 -1
  13. klaude_code/core/manager/sub_agent_manager.py +30 -6
  14. klaude_code/core/prompt.py +15 -13
  15. klaude_code/core/prompts/{prompt-subagent-explore.md → prompt-sub-agent-explore.md} +0 -1
  16. klaude_code/core/prompts/{prompt-subagent-oracle.md → prompt-sub-agent-oracle.md} +1 -2
  17. klaude_code/core/prompts/prompt-sub-agent-web.md +48 -0
  18. klaude_code/core/reminders.py +75 -32
  19. klaude_code/core/task.py +18 -22
  20. klaude_code/core/tool/__init__.py +4 -0
  21. klaude_code/core/tool/report_back_tool.py +84 -0
  22. klaude_code/core/tool/sub_agent_tool.py +6 -0
  23. klaude_code/core/tool/tool_runner.py +9 -1
  24. klaude_code/core/tool/web/web_search_tool.md +23 -0
  25. klaude_code/core/tool/web/web_search_tool.py +126 -0
  26. klaude_code/core/turn.py +45 -4
  27. klaude_code/llm/anthropic/input.py +14 -5
  28. klaude_code/llm/openrouter/input.py +14 -3
  29. klaude_code/llm/responses/input.py +19 -0
  30. klaude_code/protocol/commands.py +1 -0
  31. klaude_code/protocol/events.py +9 -0
  32. klaude_code/protocol/model.py +24 -14
  33. klaude_code/protocol/sub_agent/__init__.py +117 -0
  34. klaude_code/protocol/sub_agent/explore.py +63 -0
  35. klaude_code/protocol/sub_agent/oracle.py +91 -0
  36. klaude_code/protocol/sub_agent/task.py +61 -0
  37. klaude_code/protocol/sub_agent/web.py +78 -0
  38. klaude_code/protocol/tools.py +2 -0
  39. klaude_code/session/export.py +12 -6
  40. klaude_code/session/session.py +12 -2
  41. klaude_code/session/templates/export_session.html +111 -36
  42. klaude_code/ui/modes/repl/completers.py +1 -1
  43. klaude_code/ui/modes/repl/event_handler.py +65 -8
  44. klaude_code/ui/modes/repl/renderer.py +11 -9
  45. klaude_code/ui/renderers/developer.py +18 -7
  46. klaude_code/ui/renderers/metadata.py +24 -12
  47. klaude_code/ui/renderers/sub_agent.py +63 -3
  48. klaude_code/ui/renderers/thinking.py +1 -1
  49. klaude_code/ui/renderers/tools.py +24 -37
  50. klaude_code/ui/rich/markdown.py +20 -48
  51. klaude_code/ui/rich/status.py +61 -17
  52. klaude_code/ui/rich/theme.py +8 -7
  53. {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/METADATA +114 -22
  54. {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/RECORD +57 -48
  55. klaude_code/core/prompts/prompt-subagent-webfetch.md +0 -46
  56. klaude_code/protocol/sub_agent.py +0 -354
  57. /klaude_code/core/prompts/{prompt-subagent.md → prompt-sub-agent.md} +0 -0
  58. {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/WHEEL +0 -0
  59. {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/entry_points.txt +0 -0
@@ -2,10 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import contextlib
4
4
  import math
5
+ import random
5
6
  import time
6
7
 
7
8
  import rich.status as rich_status
8
- from rich._spinners import SPINNERS
9
9
  from rich.color import Color
10
10
  from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
11
11
  from rich.spinner import Spinner as RichSpinner
@@ -17,18 +17,32 @@ from klaude_code import const
17
17
  from klaude_code.ui.rich.theme import ThemeKey
18
18
  from klaude_code.ui.terminal.color import get_last_terminal_background_rgb
19
19
 
20
- BREATHING_SPINNER_NAME = "dot"
20
+ # Use an existing Rich spinner name; BreathingSpinner overrides its rendering
21
+ BREATHING_SPINNER_NAME = "dots"
22
+
23
+ # Alternating glyphs for the breathing spinner - switches at each "transparent" point
24
+ _BREATHING_SPINNER_GLYPHS_BASE = [
25
+ "✦",
26
+ "✶",
27
+ "✲",
28
+ "◆",
29
+ "❖",
30
+ "✧",
31
+ "❋",
32
+ "✸",
33
+ "✻",
34
+ "◇",
35
+ "✴",
36
+ "✷",
37
+ "⟡",
38
+ "⬡",
39
+ "⬢",
40
+ ]
41
+
42
+ # Shuffle glyphs on module load for variety across sessions
43
+ BREATHING_SPINNER_GLYPHS = _BREATHING_SPINNER_GLYPHS_BASE.copy()
44
+ random.shuffle(BREATHING_SPINNER_GLYPHS)
21
45
 
22
- SPINNERS.update(
23
- {
24
- BREATHING_SPINNER_NAME: {
25
- "interval": 100,
26
- # Frames content is ignored by the custom breathing spinner implementation,
27
- # but we keep a single-frame list for correct width measurement.
28
- "frames": ["⏺"],
29
- }
30
- }
31
- )
32
46
 
33
47
  _process_start: float | None = None
34
48
 
@@ -126,6 +140,17 @@ def _breathing_intensity() -> float:
126
140
  return 0.5 * (1.0 - math.cos(2.0 * math.pi * phase))
127
141
 
128
142
 
143
+ def _breathing_glyph() -> str:
144
+ """Get the current glyph for the breathing spinner.
145
+
146
+ Alternates between glyphs at each breath cycle (when intensity reaches 0).
147
+ """
148
+ period = max(const.SPINNER_BREATH_PERIOD_SECONDS, 0.1)
149
+ elapsed = _elapsed_since_start()
150
+ cycle = int(elapsed / period)
151
+ return BREATHING_SPINNER_GLYPHS[cycle % len(BREATHING_SPINNER_GLYPHS)]
152
+
153
+
129
154
  def _breathing_style(console: Console, base_style: Style, intensity: float) -> Style:
130
155
  """Blend a base style's foreground color toward terminal background.
131
156
 
@@ -154,15 +179,34 @@ def _breathing_style(console: Console, base_style: Style, intensity: float) -> S
154
179
 
155
180
 
156
181
  class ShimmerStatusText:
157
- """Renderable status line with shimmer effect on the main text and hint."""
182
+ """Renderable status line with shimmer effect on the main text and hint.
158
183
 
159
- def __init__(self, main_text: str | Text, main_style: ThemeKey) -> None:
184
+ Supports optional right-aligned text that stays fixed at the right edge.
185
+ """
186
+
187
+ def __init__(self, main_text: str | Text, main_style: ThemeKey, right_text: Text | None = None) -> None:
160
188
  self._main_text = main_text if isinstance(main_text, Text) else Text(main_text)
161
189
  self._main_style = main_style
162
- self._hint_text = Text(" (esc to interrupt)")
190
+ self._hint_text = Text(const.STATUS_HINT_TEXT)
163
191
  self._hint_style = ThemeKey.STATUS_HINT
192
+ self._right_text = right_text
164
193
 
165
194
  def __rich_console__(self, console: Console, options: ConsoleOptions) -> RenderResult:
195
+ left_text = self._render_left_text(console)
196
+
197
+ if self._right_text is None:
198
+ yield left_text
199
+ return
200
+
201
+ # Use Table.grid to create left-right aligned layout
202
+ table = Table.grid(expand=True)
203
+ table.add_column(justify="left", ratio=1)
204
+ table.add_column(justify="right")
205
+ table.add_row(left_text, self._right_text)
206
+ yield table
207
+
208
+ def _render_left_text(self, console: Console) -> Text:
209
+ """Render the left part with shimmer effect."""
166
210
  result = Text()
167
211
  main_style = console.get_style(str(self._main_style))
168
212
  hint_style = console.get_style(str(self._hint_style))
@@ -180,7 +224,7 @@ class ShimmerStatusText:
180
224
  style = _shimmer_style(console, base_style, intensity)
181
225
  result.append(ch, style=style)
182
226
 
183
- yield result
227
+ return result
184
228
 
185
229
 
186
230
  def spinner_name() -> str:
@@ -219,7 +263,7 @@ class BreathingSpinner(RichSpinner):
219
263
  intensity = _breathing_intensity()
220
264
  style = _breathing_style(console, base_style, intensity)
221
265
 
222
- glyph = self.frames[0] if self.frames else "⏺"
266
+ glyph = _breathing_glyph()
223
267
  frame = Text(glyph, style=style)
224
268
 
225
269
  if not self.text:
@@ -29,7 +29,7 @@ class Palette:
29
29
  LIGHT_PALETTE = Palette(
30
30
  red="red",
31
31
  yellow="yellow",
32
- green="spring_green4",
32
+ green="#00875f",
33
33
  cyan="cyan",
34
34
  blue="#3078C5",
35
35
  orange="#d77757",
@@ -38,8 +38,8 @@ LIGHT_PALETTE = Palette(
38
38
  grey2="#93a4b1",
39
39
  grey3="#c4ced4",
40
40
  grey_green="#96a096",
41
- purple="slate_blue3",
42
- lavender="steel_blue",
41
+ purple="#5f5fd7",
42
+ lavender="#5f87af",
43
43
  diff_add="#2e5a32 on #e8f5e9",
44
44
  diff_remove="#5a2e32 on #ffebee",
45
45
  code_theme="ansi_light",
@@ -47,11 +47,11 @@ LIGHT_PALETTE = Palette(
47
47
  )
48
48
 
49
49
  DARK_PALETTE = Palette(
50
- red="indian_red",
50
+ red="#d75f5f",
51
51
  yellow="yellow",
52
- green="sea_green3",
52
+ green="#5fd787",
53
53
  cyan="cyan",
54
- blue="deep_sky_blue1",
54
+ blue="#00afff",
55
55
  orange="#e6704e",
56
56
  magenta="magenta",
57
57
  grey1="#99aabb",
@@ -234,7 +234,7 @@ def get_theme(theme: str | None = None) -> Themes:
234
234
  markdown_theme=Theme(
235
235
  styles={
236
236
  "markdown.code": palette.purple,
237
- "markdown.code.block": "on " + palette.text_background,
237
+ "markdown.code.border": palette.grey3,
238
238
  "markdown.h1": "bold reverse",
239
239
  "markdown.h1.border": palette.grey3,
240
240
  "markdown.h2.border": palette.grey3,
@@ -256,6 +256,7 @@ def get_theme(theme: str | None = None) -> Themes:
256
256
  "markdown.hr": palette.grey3,
257
257
  "markdown.item.bullet": palette.grey2,
258
258
  "markdown.item.number": palette.grey2,
259
+ "markdown.code.block": palette.grey1,
259
260
  "markdown.strong": "bold italic " + palette.grey1,
260
261
  }
261
262
  ),
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: klaude-code
3
- Version: 1.2.15
3
+ Version: 1.2.17
4
4
  Summary: Add your description here
5
5
  Requires-Dist: anthropic>=0.66.0
6
+ Requires-Dist: ddgs>=9.9.3
6
7
  Requires-Dist: openai>=1.102.0
7
8
  Requires-Dist: pillow>=12.0.0
8
9
  Requires-Dist: prompt-toolkit>=3.0.52
@@ -22,6 +23,7 @@ An minimal and opinionated code agent with multi-model support.
22
23
  ## Key Features
23
24
  - **Adaptive Tooling**: Model-aware toolsets (Claude Code tools for Sonnet, Codex `apply_patch` for GPT-5.1/Codex).
24
25
  - **Multi-Provider Support**: Compatible with `anthropic-messages-api`,`openai-responses-api`, and `openai-compatible-api`(`openrouter-api`), featuring interleaved thinking, OpenRouter's provider sorting etc.
26
+ - **Structured Sub-Agent Output**: Main agent defines output JSON schema for sub-agents; sub-agents use `report_back` tool with constrained decoding to return schema-compliant structured data.
25
27
  - **Skill System**: Extensible support for loading Claude Skills.
26
28
  - **Session Management**: Robust context preservation with resumable sessions (`--continue`).
27
29
  - **Simple TUI**: Clean interface offering full visibility into model responses, reasoning and actions.
@@ -70,47 +72,137 @@ Open the configuration file in editor:
70
72
  klaude config
71
73
  ```
72
74
 
73
- An minimal example config yaml using OpenRouter's API Key:
75
+ An example config yaml:
74
76
 
75
77
  ```yaml
76
78
  provider_list:
77
- - provider_name: openrouter-work
79
+ - provider_name: openrouter
78
80
  protocol: openrouter # support <responses|openrouter|anthropic|openai>
79
81
  api_key: <your-openrouter-api-key>
82
+
83
+ - provider_name: openai-responses
84
+ protocol: responses
85
+ api_key: <your-openai-api-key>
86
+
87
+ - provider_name: anthropic
88
+ protocol: anthropic
89
+ api_key: <your-anthropic-api-key>
90
+
91
+ - provider_name: moonshot
92
+ protocol: anthropic
93
+ base_url: https://api.moonshot.cn/anthropic
94
+ api_key: <your-api-key>
95
+
96
+ - provider_name: deepseek
97
+ protocol: anthropic
98
+ base_url: https://api.deepseek.com/anthropic
99
+ api_key: <your-api-key>
100
+
80
101
  model_list:
81
- - model_name: gpt-5.1-codex
82
- provider: openrouter
102
+
103
+ - model_name: deepseek
104
+ provider: deepseek
105
+ model_params:
106
+ model: deepseek-reasoner
107
+ context_limit: 128000
108
+ thinking:
109
+ type: enabled
110
+ budget_tokens: 8192
111
+ cost:
112
+ currency: CNY
113
+ input: 2
114
+ output: 3
115
+ cache_read: 0.2
116
+
117
+ - model_name: codex-max
118
+ provider: openai-responses
83
119
  model_params:
84
- model: openai/gpt-5.1-codex
85
- context_limit: 368000
120
+ model: gpt-5.1-codex-max
86
121
  thinking:
87
122
  reasoning_effort: medium
88
- - model_name: gpt-5.1-high
123
+ context_limit: 400000
124
+ max_tokens: 128000
125
+ cost:
126
+ input: 1.25
127
+ output: 10
128
+ cache_read: 0.13
129
+
130
+ - model_name: gpt-5.1
89
131
  provider: openrouter
90
132
  model_params:
91
133
  model: openai/gpt-5.1
92
- context_limit: 368000
134
+ context_limit: 400000
135
+ max_tokens: 128000
136
+ verbosity: high
93
137
  thinking:
94
138
  reasoning_effort: high
95
- - model_name: sonnet
139
+ cost:
140
+ input: 1.25
141
+ output: 10
142
+ cache_read: 0.13
143
+
144
+ - model_name: kimi@moonshot
145
+ provider: moonshot
146
+ model_params:
147
+ model: kimi-k2-thinking
148
+ context_limit: 262144
149
+ thinking:
150
+ type: enabled
151
+ budget_tokens: 8192
152
+ cost:
153
+ currency: CNY
154
+ input: 4
155
+ output: 16
156
+ cache_read: 1
157
+
158
+ - model_name: opus
96
159
  provider: openrouter
97
160
  model_params:
98
- model: anthropic/claude-4.5-sonnet
99
- context_limit: 168000
161
+ model: anthropic/claude-4.5-opus
162
+ context_limit: 200000
100
163
  provider_routing:
101
- sort: throughput
102
- - model_name: haiku
164
+ only: [ google-vertex ]
165
+ verbosity: high
166
+ thinking:
167
+ type: enabled
168
+ budget_tokens: 31999
169
+ cost:
170
+ input: 5
171
+ output: 25
172
+ cache_read: 0.5
173
+ cache_write: 6.25
174
+
175
+ - model_name: gemini
103
176
  provider: openrouter
104
177
  model_params:
105
- model: anthropic/claude-haiku-4.5
106
- context_limit: 168000
107
- provider_routing:
108
- sort: throughput
109
- main_model: gpt-5.1-codex
110
- subagent_models:
111
- oracle: gpt-5.1-high
178
+ model: google/gemini-3-pro-preview
179
+ context_limit: 1048576
180
+ thinking:
181
+ reasoning_effort: medium
182
+ cost:
183
+ input: 2
184
+ output: 12
185
+ cache_read: 0.2
186
+
187
+ - model_name: haiku
188
+ provider: anthropic
189
+ model_params:
190
+ model: claude-haiku-4-5-20251001
191
+ context_limit: 200000
192
+ cost:
193
+ input: 1
194
+ output: 5
195
+ cache_read: 0.1
196
+ cache_write: 1.25
197
+
198
+ main_model: opus
199
+
200
+ sub_agent_models:
201
+ oracle: gpt-5.1
112
202
  explore: haiku
113
- task: sonnet
203
+ task: opus
204
+ webfetchagent: haiku
205
+
114
206
  ```
115
207
 
116
208
  List configured providers and models:
@@ -9,19 +9,21 @@ klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,4
9
9
  klaude_code/cli/auth_cmd.py,sha256=UWMHjn9xZp2o8OZc-x8y9MnkZgRWOkFXk05iKJYcySE,2561
10
10
  klaude_code/cli/config_cmd.py,sha256=zlqQV2DCU1NqCQ1th9v-bduw84sGM4739-iyJBoiNSA,2897
11
11
  klaude_code/cli/debug.py,sha256=kIgdmlMhAKg7S42uYvwwK8q_5EdKsEHSd1fiHUW176Q,2417
12
- klaude_code/cli/main.py,sha256=rulQhW9D5LZtmUFM7EUgJ-0osMJT33BWT2ulb8usPtg,8003
13
- klaude_code/cli/runtime.py,sha256=vDkSngZJd69QhCzqc8--P5OKdT8_6OzuoOQeIBqTI_A,11461
12
+ klaude_code/cli/main.py,sha256=kviR4yqAaLU_KiMT50px-fTLFWfVBWr4ZzhraH6b5qQ,8679
13
+ klaude_code/cli/runtime.py,sha256=fls03WSeWrRZ0Z_WVg1BzbYcpEOzq8_pnJMjzdrvAZA,12141
14
14
  klaude_code/cli/session_cmd.py,sha256=jAopkqq_DGgoDIcGxT-RSzn9R4yqBC8NCaNgK1GLqnQ,2634
15
- klaude_code/command/__init__.py,sha256=FsJtajofM-VJru-2XHRDbho565O0O7xJGI1MGC3HOFo,3041
15
+ klaude_code/command/__init__.py,sha256=UomokpjnAFhZElfCzCKiHBKkWBDvciktJmB-8XVIu7M,3184
16
16
  klaude_code/command/clear_cmd.py,sha256=diIe1pscX1ko7bRN4FGylsTvDSAF6HHPwnsbXqTtHP0,657
17
17
  klaude_code/command/command_abc.py,sha256=1Wwp94Q3W08GNCraYYEGcjjNC7JLIei6E953zSZ2lZ4,2605
18
18
  klaude_code/command/diff_cmd.py,sha256=mQu-FedUsZabE3-KwZV2JmOfm67-A41C2gz7rr6N9W8,5251
19
- klaude_code/command/export_cmd.py,sha256=_EAWh1BTCfuzqkEHcLGn_SYuiXh6VE8YBdDfuJgyy-U,3478
19
+ klaude_code/command/export_cmd.py,sha256=BPY3zYzUUuVDetakmRQpHkx1IOMw-jEQAu0LOUZn88I,3478
20
+ klaude_code/command/export_online_cmd.py,sha256=U9-athU84NUm7OY2Ar3Q3hVxvONUME2BqAK9_Q7VcsY,5686
20
21
  klaude_code/command/help_cmd.py,sha256=N9X9q2hw7AXrmvBszmzL6tYz3GNZR768wMQqmC0Vp1Q,1692
21
22
  klaude_code/command/model_cmd.py,sha256=dIjAlh2PAsjKFzEQ9JrQDslPnfdl16k9whiLd7gevcc,1505
22
23
  klaude_code/command/prompt-deslop.md,sha256=YGaAXqem39zd0UWCFjWUj83Cf7cvUJq1768aJExFqeg,1346
23
24
  klaude_code/command/prompt-dev-docs-update.md,sha256=g1IWIWIa-3qlNOw5mBA4N9H1_nvYcw8AKo7XoQw_AZQ,1855
24
25
  klaude_code/command/prompt-dev-docs.md,sha256=PU9iT6XdUEH6grfSjHVma7xKOQcA__ZTKlEDkbbO0hA,1783
26
+ klaude_code/command/prompt-handoff.md,sha256=RXIeXNwOpSpkwAyNFSvQFoo077TVkbj11fqQ2r8aCh4,1638
25
27
  klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
26
28
  klaude_code/command/prompt_command.py,sha256=8jBUcfSmC9tXAYkLAB-u81KFqSKtCAHfHMnTQDzpgcg,2607
27
29
  klaude_code/command/refresh_cmd.py,sha256=8TB1ibGn7w0xFemYTzIuoB0VXWU9Klem3wu-HfFfGlk,1271
@@ -29,33 +31,33 @@ klaude_code/command/registry.py,sha256=Vy2WL1M35LL3aLkidXa2QGgGBFBKHQe_S93TZcH55
29
31
  klaude_code/command/release_notes_cmd.py,sha256=lDeAjuMDOSUISM0yYKZKbkjrYvFmvA5_fylkalTPaBU,2707
30
32
  klaude_code/command/status_cmd.py,sha256=F7XgfivBm80kJEsCgRHGXWOALAT_Y2QyLQ38ooc_ZSE,5393
31
33
  klaude_code/command/terminal_setup_cmd.py,sha256=iSYGZlflj_i-7i-9FhfhtbyyIe3UNkhPeehZezi-ULM,10944
32
- klaude_code/command/thinking_cmd.py,sha256=pvCxyfDuF1aWJuYaRkVkDmuc0JkJUGBHJR2gNHt8PMQ,7997
34
+ klaude_code/command/thinking_cmd.py,sha256=Q2lW-RLiEFLRztGio7M0EXsZx0NS3TjrZwfLtlTTTrY,8151
33
35
  klaude_code/config/__init__.py,sha256=Qrqvi8nizkj6N77h2vDj0r4rbgCiqxvz2HLBPFuWulA,120
34
- klaude_code/config/config.py,sha256=2tSf6x88vuPfMMWcKlckXPoEjnxzFCtw2g_gbDjzK90,7268
35
- klaude_code/config/list_model.py,sha256=Uthp0nHaENBgD6l_a6wG0RFkRHQhLvIyjHPsP55Kazw,8010
36
+ klaude_code/config/config.py,sha256=2jvM6a8zoC-TdRFaLIw3OW5paxxeXC6l-o05ds4RysA,7263
37
+ klaude_code/config/list_model.py,sha256=9YOxhWE0J59NaY-SrgPA9_jA1A8rlOGwWmzK0TRuos4,8011
36
38
  klaude_code/config/select_model.py,sha256=aOizajRXcc_IOy0bSzK_KOZhbMQSx4g6IeNkgLsyV1c,2168
37
- klaude_code/const/__init__.py,sha256=5sbJ0NMLRTesavJmgK6wu30pNSs9tpigM0F86BF_W08,4168
39
+ klaude_code/const/__init__.py,sha256=uNLYBV7avW00NQDJ_ZB6n0xEeF-CYlyswKOBAHk2MmI,4256
38
40
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
41
  klaude_code/core/agent.py,sha256=bWm-UFX_0-KAy5j_YHH8X8o3MJT4-40Ni2EaDP2SL5k,5819
40
- klaude_code/core/executor.py,sha256=WBwE6RLeCfw6b1j6EKEb_y36Qyg9pAPprlkKbbDGx2M,18685
42
+ klaude_code/core/executor.py,sha256=9hqu7ySPCpKmuge-j1kcBGlB6FAVKbC1KYMonuSvR0c,18688
41
43
  klaude_code/core/manager/__init__.py,sha256=6CswltCHXBUcezlW7xui2S1swDp8JTkS1YiEHmq4-no,658
42
44
  klaude_code/core/manager/agent_manager.py,sha256=Z_LEV9WP-4h6tLAy4_WJnnJElY8MfH1OTRHk_LRw0VI,5202
43
45
  klaude_code/core/manager/llm_clients.py,sha256=X2oMFWgJcP0tK8GEtMMDYR3HyR6_H8FuyCqpzWF5x2k,871
44
- klaude_code/core/manager/llm_clients_builder.py,sha256=Kx4QyJmTr6BlN-yCqYglrhMxsCe2woe6yzLtHIQuV04,1520
45
- klaude_code/core/manager/sub_agent_manager.py,sha256=YC_T-pA6P0295XqNzQDE7Ds0PnJ8XdH0YS2iRe9C0UQ,3748
46
- klaude_code/core/prompt.py,sha256=arzgHc6l076ZvKUhLbdD8JD3sPPwgv459vox7j6EX3A,3508
46
+ klaude_code/core/manager/llm_clients_builder.py,sha256=pPZ_xBh-_ipV66L-9a1fnwNos4iik82Zkq0E0y3WrfI,1521
47
+ klaude_code/core/manager/sub_agent_manager.py,sha256=G4se7JvDBYtEJ2t-dzOAoBYZcQcyjlAoIaAZwsnSn0s,4709
48
+ klaude_code/core/prompt.py,sha256=o0BHYPdr8Jcv7xGWGgNRKvWsrw9D51MJGNWq8JYH4o0,3552
47
49
  klaude_code/core/prompts/prompt-claude-code.md,sha256=c7kNgwjJqnbwQuKWGJoMx-AMbf1gxAFC3ZFDhngBe74,8293
48
50
  klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md,sha256=SW-y8AmR99JL_9j26k9YVAOQuZ18vR12aT5CWHkZDc4,11741
49
51
  klaude_code/core/prompts/prompt-codex-gpt-5-1.md,sha256=jNi593_4L3EoMvjS0TwltF2b684gtDBsYHa9npxO34A,24239
50
52
  klaude_code/core/prompts/prompt-gemini.md,sha256=JjE1tHSByGKJzjn4Gpj1zekT7ry1Yqbwx5qx3fZy2gE,3901
51
53
  klaude_code/core/prompts/prompt-minimal.md,sha256=6-ZmQQkE3f92W_3V2wS7ocB13wLog1_UojCjZG0K4v8,1559
52
- klaude_code/core/prompts/prompt-subagent-explore.md,sha256=m7eQMTWWibaZIMPNbMYUhPbNRn5KrTq5tIoXw1HJuLY,2124
53
- klaude_code/core/prompts/prompt-subagent-oracle.md,sha256=hGtyDm_6UhJZUJwfXt5A-170is1KMHls85fEEo45z-w,1376
54
- klaude_code/core/prompts/prompt-subagent-webfetch.md,sha256=kHtJINbCRiRDrip_q6idHHU3CwbDfrVlpgtSZvugOWI,2304
55
- klaude_code/core/prompts/prompt-subagent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
56
- klaude_code/core/reminders.py,sha256=CVnJ1rKuJ0bSTXiGz7fO8gPCoP93rTDBELfHAIwQsBU,18132
57
- klaude_code/core/task.py,sha256=M_wl695oC-20rMTlsnsf2_-75GFbqDFg-Gz54Myhgr8,10549
58
- klaude_code/core/tool/__init__.py,sha256=7D3XQ23yvw2MQB_PH2JlPO2m1JLc9CE7NE6AcKAe7ks,2023
54
+ klaude_code/core/prompts/prompt-sub-agent-explore.md,sha256=i0I9LFB3X8VZIQtxK87CXwcRKowSO_HJxSIKopkFy_Q,2123
55
+ klaude_code/core/prompts/prompt-sub-agent-oracle.md,sha256=1PLI3snvxnenCOPVrL0IxZnBl5b2xxGhlufHAyLyf60,1376
56
+ klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=3wq3el0dU_RotKuOdwBkoHtnxRmIX9B_yGkZH6hKzxo,1910
57
+ klaude_code/core/prompts/prompt-sub-agent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
58
+ klaude_code/core/reminders.py,sha256=b4w6HRMY1SAZaBUXbEkil1nTbQXruYDpPuJurwMczkI,19518
59
+ klaude_code/core/task.py,sha256=MK40Tx2WOvfscM1Tqyoqq2XteR66YHcYlAlq0Yw2-LM,10388
60
+ klaude_code/core/tool/__init__.py,sha256=qNdrji0JlmDp6nW9wFngT_38FpsSgCMkaKhRLpTZERk,2158
59
61
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
62
  klaude_code/core/tool/file/_utils.py,sha256=LLmdEOJnC7MgdiAlWtBPZR0h23oM9wD_UsKqU1Nfkbs,774
61
63
  klaude_code/core/tool/file/apply_patch.py,sha256=LZd3pYQ9ow_TxiFnqYuzD216HmvkLX6lW6BoMd9iQRs,17080
@@ -75,11 +77,12 @@ klaude_code/core/tool/memory/memory_tool.py,sha256=xasFf1IQp1LFaL4ctDIQt5jfrd_z6
75
77
  klaude_code/core/tool/memory/skill_loader.py,sha256=DOlfALn4GwSPHDubNhYtzxM5di29uE7_tOdRi3yxfDc,8726
76
78
  klaude_code/core/tool/memory/skill_tool.md,sha256=UfjJK5EGAd3mf7ym5rIrRdPyV3kBTxNnwzOjNnHOBrE,973
77
79
  klaude_code/core/tool/memory/skill_tool.py,sha256=8SC4asNZSKfExuhzbyGz4f2cr78PgCpNkut_31IHePw,3602
80
+ klaude_code/core/tool/report_back_tool.py,sha256=KRZzQAIxniwXe58SDJcfK_DCf9TFFAx8XC75wPEjmpY,3246
78
81
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
82
  klaude_code/core/tool/shell/bash_tool.md,sha256=ILKpnRCBTkU2uSDEdZQjNYo1l6hsM4TO-3RD5zWC61c,3935
80
83
  klaude_code/core/tool/shell/bash_tool.py,sha256=qPB7W51LmFsRxWJoqKih1vNTGIOaXE4wfxnKPzBXs6g,4490
81
84
  klaude_code/core/tool/shell/command_safety.py,sha256=bGsooLovuzq8WmLcZ2v24AVBDj3bZv2p4GSL0IlixvM,13192
82
- klaude_code/core/tool/sub_agent_tool.py,sha256=Ohroht4z-W_kuBo0AvKoL40XQM0QGzScIDAuqYKXSVk,2765
85
+ klaude_code/core/tool/sub_agent_tool.py,sha256=vFRmULiOERqK0V9OoHww80e3yA_Q5Wxu3iv8Dpxi8d0,2992
83
86
  klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
87
  klaude_code/core/tool/todo/todo_write_tool.md,sha256=BFP9qIkzkakzskHwIOPVtDhehkh0F90A5oosyDuC_BE,1682
85
88
  klaude_code/core/tool/todo/todo_write_tool.py,sha256=XgSo8F1aJn_0fkh9Gx-5DHNFNlbZys1bUjwhe6NwyLU,4506
@@ -89,18 +92,20 @@ klaude_code/core/tool/todo/update_plan_tool.py,sha256=5MmmApG0wObBgc-mLETjIMupxI
89
92
  klaude_code/core/tool/tool_abc.py,sha256=3FlVZ8a6hC-_Ci23_cpLaap9nHinHgxSB1TsZL5ylUQ,731
90
93
  klaude_code/core/tool/tool_context.py,sha256=M6KpU2xtgKeQmvAZwqeLnzbzWvjxTt_M0p2ohC1tsb4,4157
91
94
  klaude_code/core/tool/tool_registry.py,sha256=vp7xmXvPW-vpX0fXi41RiQMZtQFwgyA0GP7K_wHRR9I,2630
92
- klaude_code/core/tool/tool_runner.py,sha256=3e1G591UYrIjvUP0g0h7DreXiPivj5SXN2uSg-9nzE0,10073
95
+ klaude_code/core/tool/tool_runner.py,sha256=yBHN3EAVokxgu95oW6fgI_feH4iB5qIusl_tBs3wj2U,10462
93
96
  klaude_code/core/tool/truncation.py,sha256=guC5PZVFvl4ZLPa3nwM2L0q37vMaTkuxrOzXzx89qmQ,6604
94
97
  klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
98
  klaude_code/core/tool/web/mermaid_tool.md,sha256=Ketpxpr7lz8238p5Q7ZzcyWchWd4dU68u708-dxaZds,978
96
99
  klaude_code/core/tool/web/mermaid_tool.py,sha256=Ok0A27oHLnV1c__74bheUuy3wpqDJ1zaXUSxuuqsNPI,2630
97
100
  klaude_code/core/tool/web/web_fetch_tool.md,sha256=_5U-LSoI86rD26nPb0D5BQCr6hj8eyF0UELSiyLznCA,347
98
101
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=iu6kM_-90K8mqHbK9Loui96vICV7d8rmtss68rcFqw0,4958
99
- klaude_code/core/turn.py,sha256=Vh2hAbB6l5ohkMbRMONaOAJQ0MYzKZnz4ZRrECt27VM,9761
102
+ klaude_code/core/tool/web/web_search_tool.md,sha256=l5gGPx-fXHFel1zLBljm8isy9pwEYXGrq5cFzzw1VBw,1135
103
+ klaude_code/core/tool/web/web_search_tool.py,sha256=riI5ugsrkg1kOaaQ-Q2CYyGYx6r8WRo1db0eoitSEH0,3829
104
+ klaude_code/core/turn.py,sha256=4v6cWUUMXA1VLSmkc6bwJzE0kdbOPv0IiqnwzKfyKOw,11472
100
105
  klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
101
106
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
102
107
  klaude_code/llm/anthropic/client.py,sha256=J0uv_tGHq2V5A_LuaJOVHXW6vARdZxsWOvzO6PdW4JQ,9742
103
- klaude_code/llm/anthropic/input.py,sha256=qPo4nmhnhSfLqef4UUVoIz8EjoXTxvlsrfsc_6qqM_s,8039
108
+ klaude_code/llm/anthropic/input.py,sha256=nyDX3uFK0GVduSiLlBEgBjAl70e0pgIZSF3PbbbuW78,8585
104
109
  klaude_code/llm/client.py,sha256=FbFnzLUAKM61goiYNdKi8-D4rBfu_ksaxjJtmJn0w_4,960
105
110
  klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
106
111
  klaude_code/llm/codex/client.py,sha256=0BAOiLAdk2PxBEYuC_TGOs4_h6yfNZr1YWuf1lzkBxM,5329
@@ -112,27 +117,31 @@ klaude_code/llm/openai_compatible/stream_processor.py,sha256=EOJeoWlQGHrDj6chMcl
112
117
  klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=kuw3ceDgenQz2Ccc9KYqBkDo6F1sDb5Aga6m41AIECA,4071
113
118
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
114
119
  klaude_code/llm/openrouter/client.py,sha256=5grbpu5ft4QclxwzFQaePitSKmQKg82RoVV124ajNh8,8855
115
- klaude_code/llm/openrouter/input.py,sha256=2GuDVHd_74ZtHQyFyTGhZqtWjM7m5GYqFtKf--AvmlI,5059
120
+ klaude_code/llm/openrouter/input.py,sha256=aHVJCejkwzWaTM_EBbgmzKWyZfttAws2Y7QDW_NCnZk,5671
116
121
  klaude_code/llm/openrouter/reasoning_handler.py,sha256=r8I2F-oFTCkqJpINv74SCQZXwAuQZym7wJi5ScSe6hs,3378
117
122
  klaude_code/llm/registry.py,sha256=grgHetTd-lSxTXiY689QW_Zd6voaid7qBqSnulpg_fE,1734
118
123
  klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
119
124
  klaude_code/llm/responses/client.py,sha256=OdvnFeEOUp5aYX5hEVVZzJ8aSB5t2sfBCVNOElSMSIY,9908
120
- klaude_code/llm/responses/input.py,sha256=noNmalXvxw6UXo6ngkhFBroECxK6igmgEQ49YVhY0xg,6049
125
+ klaude_code/llm/responses/input.py,sha256=qr61LmQJdcb_f-ofrAz06WpK_k4PEcI36XsyuZAXbKk,6805
121
126
  klaude_code/llm/usage.py,sha256=cq6yZNSKBhRVVjFqBYJQrK3mw9ZSLXaTpbDeal-BjBQ,4205
122
127
  klaude_code/protocol/__init__.py,sha256=aGUgzhYqvhuT3Mk2vj7lrHGriH4h9TSbqV1RsRFAZjQ,194
123
- klaude_code/protocol/commands.py,sha256=WX7EW3DbZs7oV7zhnKXHQhDZdIZTN35MTBJ4hWMAHjM,606
124
- klaude_code/protocol/events.py,sha256=UX7j14DNlZrZ4dyim6MRmLWiHpqvx_uuQZlc6vp8nx8,3685
128
+ klaude_code/protocol/commands.py,sha256=II1YcxCEfENzO8FkpPy8tU_NDGfZrMwp5REP1o2vSz4,642
129
+ klaude_code/protocol/events.py,sha256=KUMf1rLNdHQO9cZiQ9Pa1VsKkP1PTMbUkp18bu_jGy8,3935
125
130
  klaude_code/protocol/llm_param.py,sha256=cb4ubLq21PIsMOC8WJb0aid12z_sT1b7FsbNJMr-jLg,4255
126
- klaude_code/protocol/model.py,sha256=Gd2nUhJC4mj5l2x6oDH9Sho8iY32hHgWLa_q8wDlquk,12312
131
+ klaude_code/protocol/model.py,sha256=JDWjN_GiUwJQxVA2HFXo2cryR_UOEjDBeVB3SwmrbE8,12584
127
132
  klaude_code/protocol/op.py,sha256=hdQTzD6zAsRMJJFaLOPvDX9gokhtIBSYNQuZ20TusI4,2824
128
133
  klaude_code/protocol/op_handler.py,sha256=_lnv3-RxKkrTfGTNBlQ23gbHJBEtMLC8O48SYWDtPjE,843
129
- klaude_code/protocol/sub_agent.py,sha256=ZCEeflbUcMLKrajgxYuWHY2y0TmMIQBJ2-VdQcPiiLw,13575
130
- klaude_code/protocol/tools.py,sha256=hkjVirnQqGTJS46IWvVKXWR4usPPUgDZDnm34LzAVSc,348
134
+ klaude_code/protocol/sub_agent/__init__.py,sha256=Abap5lPLgnSCQsVD3axfeqnj2UtxOcDLGX8e9HugfSU,3964
135
+ klaude_code/protocol/sub_agent/explore.py,sha256=Z4M7i98XBLew38ClXiW-hJteSYjMUu2b548rkR7JW3A,2579
136
+ klaude_code/protocol/sub_agent/oracle.py,sha256=0cbuutKQcvwaM--Q15mbkCdbpZMF4YjxDN1jkuGVKp4,3344
137
+ klaude_code/protocol/sub_agent/task.py,sha256=fvj4i1vfWXivStQ-9urDS40wTWkmNRvl6D-A0exExJg,3608
138
+ klaude_code/protocol/sub_agent/web.py,sha256=873AK6WRDS_yU-m1GJ6aZ5dZv3pIwvVQlbvgvab4vcY,2918
139
+ klaude_code/protocol/tools.py,sha256=QvFtVAGkA5elef3HWnSs7FcxcI0FOn4N_toCLT-S6Rw,401
131
140
  klaude_code/session/__init__.py,sha256=oXcDA5w-gJCbzmlF8yuWy3ezIW9DgFBNUs-gJHUJ-Rc,121
132
- klaude_code/session/export.py,sha256=yoRvIfEehjwHL9qNNd6kJWhXLdXTsQlpf8KCoR_tjkI,26512
141
+ klaude_code/session/export.py,sha256=bgljE-3vGH2fKl6d8UptGmG4sPoy8gdVgSstMBsMy9M,26783
133
142
  klaude_code/session/selector.py,sha256=gijwWQkSV20XYP3Fxr27mFXuqP4ChY2DQm_YuBOTQKw,2888
134
- klaude_code/session/session.py,sha256=w9ei9kkgT7-C4hlToQm0Cd35HTTOSPYkIGnrtaoJg6Q,21386
135
- klaude_code/session/templates/export_session.html,sha256=BKFn1_EHg0vsF0g2J0sWoe0efF6eNk9loaPYEG8p3GQ,47705
143
+ klaude_code/session/session.py,sha256=NY5fbMe0E3WtZCN1U6MP_Xx6cKXZ93LO6GVX5KFEzUk,21789
144
+ klaude_code/session/templates/export_session.html,sha256=gsHhR_Vtu8Wa_0suWkIddtuBipYBiFPylddtlQ-krkk,49677
136
145
  klaude_code/trace/__init__.py,sha256=cETWJZZJaJ8_kA5Uki0om5n-ZpBxO9ph6YGYsJDXOEk,234
137
146
  klaude_code/trace/log.py,sha256=0H_RqkytSpt6AAIFDg-MV_8vA9zsR9BB1UqT6moTTTg,9134
138
147
  klaude_code/ui/__init__.py,sha256=XuEQsFUkJet8HI04cRmNLwnHOUqaPCRy4hF7PJnIfCY,2737
@@ -147,30 +156,30 @@ klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJ
147
156
  klaude_code/ui/modes/exec/display.py,sha256=m2kkgaUoGD9rEVUmcm7Vs_PyAI2iruKCJYRhANjSsKo,1965
148
157
  klaude_code/ui/modes/repl/__init__.py,sha256=35a6SUiL1SDi2i43X2VjHQw97rR7yhbLBzkGI5aC6Bc,1526
149
158
  klaude_code/ui/modes/repl/clipboard.py,sha256=ZCpk7kRSXGhh0Q_BWtUUuSYT7ZOqRjAoRcg9T9n48Wo,5137
150
- klaude_code/ui/modes/repl/completers.py,sha256=RyxvbOwVXTa4PTl1thVz6YbBhXhCZa7ZX87eiGRHGp4,18224
159
+ klaude_code/ui/modes/repl/completers.py,sha256=1SZdliYseQk6JNpCZC5I3B-j7mTe4ooVyrrNqpZ77oU,18232
151
160
  klaude_code/ui/modes/repl/display.py,sha256=0u4ISeOoYjynF7InYyV-PMOZqP44QBbjYOLOL18V0c0,2245
152
- klaude_code/ui/modes/repl/event_handler.py,sha256=j24Q-ygfI2RHuYj2Atg_1vrzW7fT6lx-jww11Uzs25g,21220
161
+ klaude_code/ui/modes/repl/event_handler.py,sha256=YJjf9TclTJXGIvGUvVyyHHgmGyslRUhkJEyf4CuBQW0,23553
153
162
  klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=EAIAtcL9EHVPmVK6oOHg0xCeZ0IOnG5S5KsaL85OHOk,6368
154
163
  klaude_code/ui/modes/repl/key_bindings.py,sha256=Fxz9Ey2SnOHvfleMeSYVduxuofY0Yo-97hMRs-OMe-o,7800
155
- klaude_code/ui/modes/repl/renderer.py,sha256=M0Fhj_mQXyjHnKDzrmZ0mnPk7L6IFIU4wCgHSsffmAQ,11406
164
+ klaude_code/ui/modes/repl/renderer.py,sha256=qiB6wuk-bBroN1OCDDC-h09Mduo4Utj6xAZx6YmHu-Y,11660
156
165
  klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
166
  klaude_code/ui/renderers/assistant.py,sha256=Dxy6v4pX28RyWhnrjBteY8_NvDIi_jQa-j0mWt-eqWY,569
158
167
  klaude_code/ui/renderers/common.py,sha256=TPH7LCbeJGqB8ArTsVitqJHEyOxHU6nwnRtvF04nLJ4,184
159
- klaude_code/ui/renderers/developer.py,sha256=fE-9LRzVLiKnK3ctFcuDDP_eehohhsgPCH_tYaOp-xs,6378
168
+ klaude_code/ui/renderers/developer.py,sha256=dlap4Cdcx4cCtbixUEQLd4UoLDaT8VXGOQtbvCIbweo,6916
160
169
  klaude_code/ui/renderers/diffs.py,sha256=iPQxxZW1JGPwtTdCKMEkDlNb5trLm9tdWjfMRmtj6yQ,7616
161
170
  klaude_code/ui/renderers/errors.py,sha256=c_fbnoNOnvuI3Bb24IujwV8Mpes-qWS_xCWfAcBvg6A,517
162
- klaude_code/ui/renderers/metadata.py,sha256=gnnIEs7iFiWNCADKa7N9FtDxvVZKtVo-6JuT2I9sIhA,7760
163
- klaude_code/ui/renderers/sub_agent.py,sha256=3cyn95pu4IniOJyWW4vfQ-X72iLufQ3LT9CkAQMuF4k,2686
164
- klaude_code/ui/renderers/thinking.py,sha256=rYc7KttyEW7r3133dFLofpiQCYH-NiZolexYo-N8Vfs,1181
165
- klaude_code/ui/renderers/tools.py,sha256=d-8udsM-81P6rwQhJgmN_J93Kj8KVvrUBbcH86PmTRc,21619
171
+ klaude_code/ui/renderers/metadata.py,sha256=eo5vtAyo3IILtGMOvFluDLPiFjNTBjnGny_Vo1FJ564,7988
172
+ klaude_code/ui/renderers/sub_agent.py,sha256=grQ_9G_7iYHdCpxrM0qDAKEMQfXcxBv0bI0GPe3s0lE,4961
173
+ klaude_code/ui/renderers/thinking.py,sha256=OaM41EXbqSg8d7MBbkoZPW6878HCMxF-Fuq1a4eScDI,1181
174
+ klaude_code/ui/renderers/tools.py,sha256=5B_NZDYpcdaWLRO2nRF_h07PICN17vjTVBbs1Vf4cbY,21409
166
175
  klaude_code/ui/renderers/user_input.py,sha256=rDdOYvbgJ6oePQAtyTCK-KhARfLKytpTZboZ-cFIuJQ,2603
167
176
  klaude_code/ui/rich/__init__.py,sha256=olvMm2SteyKioOqUJbEoav2TsDr_mtKqkSaifNumjwc,27
168
177
  klaude_code/ui/rich/live.py,sha256=Uid0QAZG7mHb4KrCF8p9c9n1nHLHzW75xSqcLZ4bLWY,2098
169
- klaude_code/ui/rich/markdown.py,sha256=k5Kx5SSoSMnVW-35dZw6Yp26ahPErDYVpKPI6wpXP8c,12347
178
+ klaude_code/ui/rich/markdown.py,sha256=5gZXSnQHPZ-Gvan2XOabOcYy3imWbcoYGh4aTf7ETcM,10773
170
179
  klaude_code/ui/rich/quote.py,sha256=tZcxN73SfDBHF_qk0Jkh9gWBqPBn8VLp9RF36YRdKEM,1123
171
180
  klaude_code/ui/rich/searchable_text.py,sha256=DCVZgEFv7_ergAvT2v7XrfQAUXUzhmAwuVAchlIx8RY,2448
172
- klaude_code/ui/rich/status.py,sha256=r5KmymTKo-FsOVBJxp8orhqFT8GP8Mf1DHkw1icnuOA,8522
173
- klaude_code/ui/rich/theme.py,sha256=yMGWoVzG9leHB3eR4ufFzW2nAhXOtiYEwwn0kvCtr4E,10140
181
+ klaude_code/ui/rich/status.py,sha256=wNQUeR76HFhhJ_EyUFk76fSWI_SSL9Bx3YCSHTeLbjU,9768
182
+ klaude_code/ui/rich/theme.py,sha256=SXnV4NBmAXVPCWyLBOLapB0W_0qJ9msgw_qelpjhUzI,10151
174
183
  klaude_code/ui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
175
184
  klaude_code/ui/terminal/color.py,sha256=M-i09DVlLAhAyhQjfeAi7OipoGi1p_OVkaZxeRfykY0,7135
176
185
  klaude_code/ui/terminal/control.py,sha256=6SGNwxorP3jMW9xqnZy2BC0OsJd4DSrS13O3t6YlZzs,4916
@@ -180,7 +189,7 @@ klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlsh
180
189
  klaude_code/ui/utils/common.py,sha256=UCQMun23l-EREr3xkl-Bjx67yfi9ctRTw2gcGPsOM2c,2881
181
190
  klaude_code/ui/utils/debouncer.py,sha256=x8AYxf48Xd6tabBvH8cVl1bIV8FzyeDo3HswDjtNfwU,1266
182
191
  klaude_code/version.py,sha256=x2OeiACPdzS87EWtaSi_UP13htm81Uq7mlV3kFy5jko,4815
183
- klaude_code-1.2.15.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
184
- klaude_code-1.2.15.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
185
- klaude_code-1.2.15.dist-info/METADATA,sha256=r1bX2TVm7kMRX4v3YEHPbhn7P954cykmgxHvQFZG2o4,5067
186
- klaude_code-1.2.15.dist-info/RECORD,,
192
+ klaude_code-1.2.17.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
193
+ klaude_code-1.2.17.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
194
+ klaude_code-1.2.17.dist-info/METADATA,sha256=IEr-eRq2S40hEcKYAaPyi54pkUXvV_rdKcKn2tapA0I,6847
195
+ klaude_code-1.2.17.dist-info/RECORD,,
@@ -1,46 +0,0 @@
1
- You are a web content fetching and analysis specialist. Your job is to retrieve content from URLs and extract or analyze information according to the user's instructions.
2
-
3
- Your available tools:
4
- - WebFetch: Fetch content from a URL. HTML pages are automatically converted to Markdown.
5
- - Read: Read files from the filesystem (useful when WebFetch output is truncated and saved to a file)
6
- - Bash: Run shell commands (use `rg` to search through large saved files)
7
-
8
- Workflow:
9
- 1. Use WebFetch to retrieve the URL content
10
- 2. Analyze the content according to the user's prompt
11
- 3. If the output was truncated and saved to a file, use Read or `rg` to search through the full content
12
- 4. If you need information from a linked page, use WebFetch to follow that link
13
- 5. Return a clear, structured summary of your findings
14
-
15
- Guidelines:
16
- - Focus on extracting the specific information requested
17
- - For large pages, prioritize the most relevant sections
18
- - If content is truncated, look for the saved file path in the system reminder and use rg to search it
19
- - Return structured data when appropriate (lists, tables, key-value pairs)
20
- - Be concise but comprehensive in your final response
21
- - Use absolute file paths when referencing saved files
22
- - Avoid using emojis
23
-
24
- Following links:
25
- - If a link on the page seems relevant to answering the question, use WebFetch to follow it
26
- - You can fetch multiple pages in sequence to gather all needed information
27
- - After fetching a link, analyze the content yourself to extract what's needed
28
- - Remember to include any fetched URLs in your Sources section if they were helpful
29
-
30
- Handling truncated content:
31
- When WebFetch output is too large, it will be truncated and the full content saved to a temporary file.
32
- The file path will be shown in a system-reminder tag. Use these approaches to access the full content:
33
- - `rg "pattern" /path/to/file` to search for specific content
34
- - Read tool with offset/limit to read specific sections
35
-
36
- Response format:
37
- Your response should be structured as follows:
38
-
39
- [Your answer to the user's question]
40
-
41
- ## Sources
42
- - [URL 1] (saved to local: /path/to/file if saved)
43
- - [URL 2]
44
- ...
45
-
46
- Only include URLs that actually contributed information to your answer. The main URL is always included. Add any additional URLs you fetched that provided relevant information.