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.
- klaude_code/cli/main.py +66 -42
- klaude_code/cli/runtime.py +34 -13
- klaude_code/command/__init__.py +3 -0
- klaude_code/command/export_cmd.py +2 -2
- klaude_code/command/export_online_cmd.py +149 -0
- klaude_code/command/prompt-handoff.md +33 -0
- klaude_code/command/thinking_cmd.py +5 -1
- klaude_code/config/config.py +20 -21
- klaude_code/config/list_model.py +1 -1
- klaude_code/const/__init__.py +3 -0
- klaude_code/core/executor.py +2 -2
- klaude_code/core/manager/llm_clients_builder.py +1 -1
- klaude_code/core/manager/sub_agent_manager.py +30 -6
- klaude_code/core/prompt.py +15 -13
- klaude_code/core/prompts/{prompt-subagent-explore.md → prompt-sub-agent-explore.md} +0 -1
- klaude_code/core/prompts/{prompt-subagent-oracle.md → prompt-sub-agent-oracle.md} +1 -2
- klaude_code/core/prompts/prompt-sub-agent-web.md +48 -0
- klaude_code/core/reminders.py +75 -32
- klaude_code/core/task.py +18 -22
- klaude_code/core/tool/__init__.py +4 -0
- klaude_code/core/tool/report_back_tool.py +84 -0
- klaude_code/core/tool/sub_agent_tool.py +6 -0
- klaude_code/core/tool/tool_runner.py +9 -1
- klaude_code/core/tool/web/web_search_tool.md +23 -0
- klaude_code/core/tool/web/web_search_tool.py +126 -0
- klaude_code/core/turn.py +45 -4
- klaude_code/llm/anthropic/input.py +14 -5
- klaude_code/llm/openrouter/input.py +14 -3
- klaude_code/llm/responses/input.py +19 -0
- klaude_code/protocol/commands.py +1 -0
- klaude_code/protocol/events.py +9 -0
- klaude_code/protocol/model.py +24 -14
- klaude_code/protocol/sub_agent/__init__.py +117 -0
- klaude_code/protocol/sub_agent/explore.py +63 -0
- klaude_code/protocol/sub_agent/oracle.py +91 -0
- klaude_code/protocol/sub_agent/task.py +61 -0
- klaude_code/protocol/sub_agent/web.py +78 -0
- klaude_code/protocol/tools.py +2 -0
- klaude_code/session/export.py +12 -6
- klaude_code/session/session.py +12 -2
- klaude_code/session/templates/export_session.html +111 -36
- klaude_code/ui/modes/repl/completers.py +1 -1
- klaude_code/ui/modes/repl/event_handler.py +65 -8
- klaude_code/ui/modes/repl/renderer.py +11 -9
- klaude_code/ui/renderers/developer.py +18 -7
- klaude_code/ui/renderers/metadata.py +24 -12
- klaude_code/ui/renderers/sub_agent.py +63 -3
- klaude_code/ui/renderers/thinking.py +1 -1
- klaude_code/ui/renderers/tools.py +24 -37
- klaude_code/ui/rich/markdown.py +20 -48
- klaude_code/ui/rich/status.py +61 -17
- klaude_code/ui/rich/theme.py +8 -7
- {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/METADATA +114 -22
- {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/RECORD +57 -48
- klaude_code/core/prompts/prompt-subagent-webfetch.md +0 -46
- klaude_code/protocol/sub_agent.py +0 -354
- /klaude_code/core/prompts/{prompt-subagent.md → prompt-sub-agent.md} +0 -0
- {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/WHEEL +0 -0
- {klaude_code-1.2.15.dist-info → klaude_code-1.2.17.dist-info}/entry_points.txt +0 -0
klaude_code/ui/rich/status.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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 =
|
|
266
|
+
glyph = _breathing_glyph()
|
|
223
267
|
frame = Text(glyph, style=style)
|
|
224
268
|
|
|
225
269
|
if not self.text:
|
klaude_code/ui/rich/theme.py
CHANGED
|
@@ -29,7 +29,7 @@ class Palette:
|
|
|
29
29
|
LIGHT_PALETTE = Palette(
|
|
30
30
|
red="red",
|
|
31
31
|
yellow="yellow",
|
|
32
|
-
green="
|
|
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="
|
|
42
|
-
lavender="
|
|
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="
|
|
50
|
+
red="#d75f5f",
|
|
51
51
|
yellow="yellow",
|
|
52
|
-
green="
|
|
52
|
+
green="#5fd787",
|
|
53
53
|
cyan="cyan",
|
|
54
|
-
blue="
|
|
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.
|
|
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.
|
|
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
|
|
75
|
+
An example config yaml:
|
|
74
76
|
|
|
75
77
|
```yaml
|
|
76
78
|
provider_list:
|
|
77
|
-
- provider_name: openrouter
|
|
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
|
-
|
|
82
|
-
|
|
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:
|
|
85
|
-
context_limit: 368000
|
|
120
|
+
model: gpt-5.1-codex-max
|
|
86
121
|
thinking:
|
|
87
122
|
reasoning_effort: medium
|
|
88
|
-
|
|
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:
|
|
134
|
+
context_limit: 400000
|
|
135
|
+
max_tokens: 128000
|
|
136
|
+
verbosity: high
|
|
93
137
|
thinking:
|
|
94
138
|
reasoning_effort: high
|
|
95
|
-
|
|
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-
|
|
99
|
-
context_limit:
|
|
161
|
+
model: anthropic/claude-4.5-opus
|
|
162
|
+
context_limit: 200000
|
|
100
163
|
provider_routing:
|
|
101
|
-
|
|
102
|
-
|
|
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:
|
|
106
|
-
context_limit:
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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:
|
|
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=
|
|
13
|
-
klaude_code/cli/runtime.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
35
|
-
klaude_code/config/list_model.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
45
|
-
klaude_code/core/manager/sub_agent_manager.py,sha256=
|
|
46
|
-
klaude_code/core/prompt.py,sha256=
|
|
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-
|
|
53
|
-
klaude_code/core/prompts/prompt-
|
|
54
|
-
klaude_code/core/prompts/prompt-
|
|
55
|
-
klaude_code/core/prompts/prompt-
|
|
56
|
-
klaude_code/core/reminders.py,sha256=
|
|
57
|
-
klaude_code/core/task.py,sha256=
|
|
58
|
-
klaude_code/core/tool/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
124
|
-
klaude_code/protocol/events.py,sha256=
|
|
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=
|
|
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=
|
|
130
|
-
klaude_code/protocol/
|
|
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=
|
|
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=
|
|
135
|
-
klaude_code/session/templates/export_session.html,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
163
|
-
klaude_code/ui/renderers/sub_agent.py,sha256=
|
|
164
|
-
klaude_code/ui/renderers/thinking.py,sha256=
|
|
165
|
-
klaude_code/ui/renderers/tools.py,sha256=
|
|
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=
|
|
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=
|
|
173
|
-
klaude_code/ui/rich/theme.py,sha256=
|
|
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.
|
|
184
|
-
klaude_code-1.2.
|
|
185
|
-
klaude_code-1.2.
|
|
186
|
-
klaude_code-1.2.
|
|
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.
|