klaude-code 1.2.6__py3-none-any.whl → 1.2.7__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/auth/__init__.py +24 -0
- klaude_code/auth/codex/__init__.py +20 -0
- klaude_code/auth/codex/exceptions.py +17 -0
- klaude_code/auth/codex/jwt_utils.py +45 -0
- klaude_code/auth/codex/oauth.py +229 -0
- klaude_code/auth/codex/token_manager.py +84 -0
- klaude_code/cli/main.py +63 -0
- klaude_code/command/status_cmd.py +13 -5
- klaude_code/config/list_model.py +53 -0
- klaude_code/core/prompt.py +10 -14
- klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md +117 -0
- klaude_code/core/prompts/prompt-subagent-explore.md +3 -1
- klaude_code/core/reminders.py +14 -5
- klaude_code/core/task.py +1 -0
- klaude_code/core/tool/truncation.py +4 -0
- klaude_code/llm/__init__.py +2 -0
- klaude_code/llm/anthropic/input.py +25 -10
- klaude_code/llm/codex/__init__.py +5 -0
- klaude_code/llm/codex/client.py +116 -0
- klaude_code/llm/responses/client.py +153 -138
- klaude_code/llm/usage.py +3 -0
- klaude_code/protocol/llm_param.py +3 -1
- klaude_code/protocol/model.py +2 -1
- klaude_code/protocol/sub_agent.py +2 -1
- klaude_code/session/export.py +9 -14
- klaude_code/session/templates/export_session.html +5 -0
- klaude_code/ui/modes/repl/completers.py +41 -8
- klaude_code/ui/modes/repl/event_handler.py +15 -23
- klaude_code/ui/renderers/developer.py +9 -8
- klaude_code/ui/renderers/metadata.py +9 -5
- klaude_code/ui/renderers/user_input.py +23 -10
- klaude_code/ui/rich/theme.py +2 -0
- {klaude_code-1.2.6.dist-info → klaude_code-1.2.7.dist-info}/METADATA +1 -1
- {klaude_code-1.2.6.dist-info → klaude_code-1.2.7.dist-info}/RECORD +37 -28
- /klaude_code/core/prompts/{prompt-codex.md → prompt-codex-gpt-5-1.md} +0 -0
- {klaude_code-1.2.6.dist-info → klaude_code-1.2.7.dist-info}/WHEEL +0 -0
- {klaude_code-1.2.6.dist-info → klaude_code-1.2.7.dist-info}/entry_points.txt +0 -0
|
@@ -37,7 +37,7 @@ class SpinnerStatusState:
|
|
|
37
37
|
Layers (from low to high priority):
|
|
38
38
|
- base_status: Set by TodoChange, persistent within a turn
|
|
39
39
|
- composing: True when assistant is streaming text
|
|
40
|
-
- tool_calls: Accumulated from ToolCallStart
|
|
40
|
+
- tool_calls: Accumulated from ToolCallStart, cleared at turn start
|
|
41
41
|
|
|
42
42
|
Display logic:
|
|
43
43
|
- If tool_calls: show base + tool_calls (composing is hidden)
|
|
@@ -52,14 +52,12 @@ class SpinnerStatusState:
|
|
|
52
52
|
self._base_status: str | None = None
|
|
53
53
|
self._composing: bool = False
|
|
54
54
|
self._tool_calls: dict[str, int] = {}
|
|
55
|
-
self._pending_clear: bool = False
|
|
56
55
|
|
|
57
56
|
def reset(self) -> None:
|
|
58
57
|
"""Reset all layers."""
|
|
59
58
|
self._base_status = None
|
|
60
59
|
self._composing = False
|
|
61
60
|
self._tool_calls = {}
|
|
62
|
-
self._pending_clear = False
|
|
63
61
|
|
|
64
62
|
def set_base_status(self, status: str | None) -> None:
|
|
65
63
|
"""Set base status from TodoChange."""
|
|
@@ -71,21 +69,16 @@ class SpinnerStatusState:
|
|
|
71
69
|
|
|
72
70
|
def add_tool_call(self, tool_name: str) -> None:
|
|
73
71
|
"""Add a tool call to the accumulator."""
|
|
74
|
-
if self._pending_clear:
|
|
75
|
-
self._tool_calls = {}
|
|
76
|
-
self._composing = False
|
|
77
|
-
self._pending_clear = False
|
|
78
72
|
self._tool_calls[tool_name] = self._tool_calls.get(tool_name, 0) + 1
|
|
79
73
|
|
|
80
74
|
def clear_tool_calls(self) -> None:
|
|
81
|
-
"""Clear tool calls and composing state
|
|
75
|
+
"""Clear tool calls and composing state."""
|
|
82
76
|
self._tool_calls = {}
|
|
83
|
-
self._composing = False
|
|
84
|
-
self._pending_clear = False
|
|
85
77
|
|
|
86
|
-
def
|
|
87
|
-
"""
|
|
88
|
-
self.
|
|
78
|
+
def clear_for_new_turn(self) -> None:
|
|
79
|
+
"""Clear tool calls and composing state for a new turn."""
|
|
80
|
+
self._tool_calls = {}
|
|
81
|
+
self._composing = False
|
|
89
82
|
|
|
90
83
|
def get_status(self) -> Text:
|
|
91
84
|
"""Get current spinner status as rich Text."""
|
|
@@ -203,24 +196,26 @@ class DisplayEventHandler:
|
|
|
203
196
|
def _on_turn_start(self, event: events.TurnStartEvent) -> None:
|
|
204
197
|
emit_osc94(OSC94States.INDETERMINATE)
|
|
205
198
|
self.renderer.display_turn_start(event)
|
|
206
|
-
self.spinner_status.
|
|
199
|
+
self.spinner_status.clear_for_new_turn()
|
|
200
|
+
self._update_spinner()
|
|
207
201
|
|
|
208
202
|
async def _on_thinking(self, event: events.ThinkingEvent) -> None:
|
|
209
203
|
if self.renderer.is_sub_agent_session(event.session_id):
|
|
210
204
|
return
|
|
211
|
-
self._clear_and_update_spinner()
|
|
212
205
|
await self.stage_manager.enter_thinking_stage()
|
|
213
206
|
self.renderer.display_thinking(event.content)
|
|
214
207
|
|
|
215
208
|
async def _on_assistant_delta(self, event: events.AssistantMessageDeltaEvent) -> None:
|
|
216
209
|
if self.renderer.is_sub_agent_session(event.session_id):
|
|
210
|
+
self.spinner_status.set_composing(True)
|
|
211
|
+
self._update_spinner()
|
|
217
212
|
return
|
|
218
213
|
if len(event.content.strip()) == 0 and self.stage_manager.current_stage != Stage.ASSISTANT:
|
|
219
214
|
return
|
|
220
215
|
first_delta = self.assistant_stream.mdstream is None
|
|
221
216
|
if first_delta:
|
|
222
|
-
self.spinner_status.clear_tool_calls()
|
|
223
217
|
self.spinner_status.set_composing(True)
|
|
218
|
+
self.spinner_status.clear_tool_calls()
|
|
224
219
|
self._update_spinner()
|
|
225
220
|
self.assistant_stream.mdstream = MarkdownStream(
|
|
226
221
|
mdargs={"code_theme": self.renderer.themes.code_theme},
|
|
@@ -252,6 +247,7 @@ class DisplayEventHandler:
|
|
|
252
247
|
self.assistant_stream.clear()
|
|
253
248
|
self.assistant_stream.mdstream = None
|
|
254
249
|
self.spinner_status.set_composing(False)
|
|
250
|
+
self._update_spinner()
|
|
255
251
|
await self.stage_manager.transition_to(Stage.WAITING)
|
|
256
252
|
self.renderer.spinner_start()
|
|
257
253
|
|
|
@@ -280,14 +276,15 @@ class DisplayEventHandler:
|
|
|
280
276
|
active_form_status_text = self._extract_active_form_text(event)
|
|
281
277
|
self.spinner_status.set_base_status(active_form_status_text if active_form_status_text else None)
|
|
282
278
|
# Clear tool calls when todo changes, as the tool execution has advanced
|
|
283
|
-
self.
|
|
279
|
+
self.spinner_status.clear_for_new_turn()
|
|
280
|
+
self._update_spinner()
|
|
284
281
|
|
|
285
282
|
async def _on_task_finish(self, event: events.TaskFinishEvent) -> None:
|
|
286
283
|
self.renderer.display_task_finish(event)
|
|
287
284
|
if not self.renderer.is_sub_agent_session(event.session_id):
|
|
288
285
|
emit_osc94(OSC94States.HIDDEN)
|
|
289
286
|
self.spinner_status.reset()
|
|
290
|
-
|
|
287
|
+
self.renderer.spinner_stop()
|
|
291
288
|
await self.stage_manager.transition_to(Stage.WAITING)
|
|
292
289
|
self._maybe_notify_task_finish(event)
|
|
293
290
|
|
|
@@ -330,11 +327,6 @@ class DisplayEventHandler:
|
|
|
330
327
|
"""Update spinner text from current status state."""
|
|
331
328
|
self.renderer.spinner_update(self.spinner_status.get_status())
|
|
332
329
|
|
|
333
|
-
def _clear_and_update_spinner(self) -> None:
|
|
334
|
-
"""Clear tool calls and update spinner."""
|
|
335
|
-
self.spinner_status.clear_tool_calls()
|
|
336
|
-
self._update_spinner()
|
|
337
|
-
|
|
338
330
|
async def _flush_assistant_buffer(self, state: StreamState) -> None:
|
|
339
331
|
if state.mdstream is not None:
|
|
340
332
|
state.mdstream.update(state.buffer)
|
|
@@ -115,13 +115,14 @@ def _format_tokens(tokens: int) -> str:
|
|
|
115
115
|
return str(tokens)
|
|
116
116
|
|
|
117
117
|
|
|
118
|
-
def _format_cost(cost: float | None) -> str:
|
|
119
|
-
"""Format cost
|
|
118
|
+
def _format_cost(cost: float | None, currency: str = "USD") -> str:
|
|
119
|
+
"""Format cost with currency symbol."""
|
|
120
120
|
if cost is None:
|
|
121
121
|
return "-"
|
|
122
|
+
symbol = "¥" if currency == "CNY" else "$"
|
|
122
123
|
if cost < 0.01:
|
|
123
|
-
return f"
|
|
124
|
-
return f"
|
|
124
|
+
return f"{symbol}{cost:.4f}"
|
|
125
|
+
return f"{symbol}{cost:.2f}"
|
|
125
126
|
|
|
126
127
|
|
|
127
128
|
def _render_status_output(command_output: model.CommandOutput) -> RenderableType:
|
|
@@ -149,10 +150,10 @@ def _render_status_output(command_output: model.CommandOutput) -> RenderableType
|
|
|
149
150
|
if usage.total_cost is not None:
|
|
150
151
|
table.add_row("", "") # Empty line
|
|
151
152
|
table.add_row(Text("Cost", style="bold"), "")
|
|
152
|
-
table.add_row("Input Cost", _format_cost(usage.input_cost))
|
|
153
|
+
table.add_row("Input Cost", _format_cost(usage.input_cost, usage.currency))
|
|
153
154
|
if usage.cache_read_cost is not None and usage.cache_read_cost > 0:
|
|
154
|
-
table.add_row("Cache Read Cost", _format_cost(usage.cache_read_cost))
|
|
155
|
-
table.add_row("Output Cost", _format_cost(usage.output_cost))
|
|
156
|
-
table.add_row("Total Cost", _format_cost(usage.total_cost))
|
|
155
|
+
table.add_row("Cache Read Cost", _format_cost(usage.cache_read_cost, usage.currency))
|
|
156
|
+
table.add_row("Output Cost", _format_cost(usage.output_cost, usage.currency))
|
|
157
|
+
table.add_row("Total Cost", _format_cost(usage.total_cost, usage.currency))
|
|
157
158
|
|
|
158
159
|
return Padding.indent(table, level=2)
|
|
@@ -24,6 +24,10 @@ def _get_version() -> str:
|
|
|
24
24
|
def render_response_metadata(e: events.ResponseMetadataEvent) -> RenderableType:
|
|
25
25
|
metadata = e.metadata
|
|
26
26
|
|
|
27
|
+
# Get currency symbol
|
|
28
|
+
currency = metadata.usage.currency if metadata.usage else "USD"
|
|
29
|
+
currency_symbol = "¥" if currency == "CNY" else "$"
|
|
30
|
+
|
|
27
31
|
# Line 1: Model and Provider
|
|
28
32
|
model_text = Text()
|
|
29
33
|
model_text.append_text(Text("- ", style=ThemeKey.METADATA_BOLD)).append_text(
|
|
@@ -46,7 +50,7 @@ def render_response_metadata(e: events.ResponseMetadataEvent) -> RenderableType:
|
|
|
46
50
|
(format_number(metadata.usage.input_tokens), ThemeKey.METADATA_DIM),
|
|
47
51
|
]
|
|
48
52
|
if metadata.usage.input_cost is not None:
|
|
49
|
-
input_parts.append((f"(
|
|
53
|
+
input_parts.append((f"({currency_symbol}{metadata.usage.input_cost:.4f})", ThemeKey.METADATA_DIM))
|
|
50
54
|
parts.append(Text.assemble(*input_parts))
|
|
51
55
|
|
|
52
56
|
# Cached
|
|
@@ -56,7 +60,7 @@ def render_response_metadata(e: events.ResponseMetadataEvent) -> RenderableType:
|
|
|
56
60
|
(format_number(metadata.usage.cached_tokens), ThemeKey.METADATA_DIM),
|
|
57
61
|
]
|
|
58
62
|
if metadata.usage.cache_read_cost is not None:
|
|
59
|
-
cached_parts.append((f"(
|
|
63
|
+
cached_parts.append((f"({currency_symbol}{metadata.usage.cache_read_cost:.4f})", ThemeKey.METADATA_DIM))
|
|
60
64
|
parts.append(Text.assemble(*cached_parts))
|
|
61
65
|
|
|
62
66
|
# Output
|
|
@@ -65,7 +69,7 @@ def render_response_metadata(e: events.ResponseMetadataEvent) -> RenderableType:
|
|
|
65
69
|
(format_number(metadata.usage.output_tokens), ThemeKey.METADATA_DIM),
|
|
66
70
|
]
|
|
67
71
|
if metadata.usage.output_cost is not None:
|
|
68
|
-
output_parts.append((f"(
|
|
72
|
+
output_parts.append((f"({currency_symbol}{metadata.usage.output_cost:.4f})", ThemeKey.METADATA_DIM))
|
|
69
73
|
parts.append(Text.assemble(*output_parts))
|
|
70
74
|
|
|
71
75
|
# Reasoning
|
|
@@ -114,13 +118,13 @@ def render_response_metadata(e: events.ResponseMetadataEvent) -> RenderableType:
|
|
|
114
118
|
)
|
|
115
119
|
)
|
|
116
120
|
|
|
117
|
-
# Cost
|
|
121
|
+
# Cost
|
|
118
122
|
if metadata.usage is not None and metadata.usage.total_cost is not None:
|
|
119
123
|
parts.append(
|
|
120
124
|
Text.assemble(
|
|
121
125
|
("cost", ThemeKey.METADATA_DIM),
|
|
122
126
|
(":", ThemeKey.METADATA_DIM),
|
|
123
|
-
(f"
|
|
127
|
+
(f"{currency_symbol}{metadata.usage.total_cost:.4f}", ThemeKey.METADATA_DIM),
|
|
124
128
|
)
|
|
125
129
|
)
|
|
126
130
|
|
|
@@ -7,22 +7,35 @@ from klaude_code.command import is_slash_command_name
|
|
|
7
7
|
from klaude_code.ui.renderers.common import create_grid
|
|
8
8
|
from klaude_code.ui.rich.theme import ThemeKey
|
|
9
9
|
|
|
10
|
+
# Match @-file patterns only when they appear at the beginning of the line
|
|
11
|
+
# or immediately after whitespace, to avoid treating mid-word email-like
|
|
12
|
+
# patterns such as foo@bar.com as file references.
|
|
13
|
+
AT_FILE_RENDER_PATTERN = re.compile(r'(?<!\S)@("([^"]+)"|\S+)')
|
|
14
|
+
|
|
10
15
|
|
|
11
16
|
def render_at_pattern(
|
|
12
17
|
text: str,
|
|
13
18
|
at_style: str = ThemeKey.USER_INPUT_AT_PATTERN,
|
|
14
19
|
other_style: str = ThemeKey.USER_INPUT,
|
|
15
20
|
) -> Text:
|
|
16
|
-
if "@" in text:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
if "@" not in text:
|
|
22
|
+
return Text(text, style=other_style)
|
|
23
|
+
|
|
24
|
+
result = Text("")
|
|
25
|
+
last_end = 0
|
|
26
|
+
for match in AT_FILE_RENDER_PATTERN.finditer(text):
|
|
27
|
+
start, end = match.span()
|
|
28
|
+
if start > last_end:
|
|
29
|
+
# Text before the @-pattern
|
|
30
|
+
result.append_text(Text(text[last_end:start], other_style))
|
|
31
|
+
# The @-pattern itself (e.g. @path or @"path with spaces")
|
|
32
|
+
result.append_text(Text(text[start:end], at_style))
|
|
33
|
+
last_end = end
|
|
34
|
+
|
|
35
|
+
if last_end < len(text):
|
|
36
|
+
result.append_text(Text(text[last_end:], other_style))
|
|
37
|
+
|
|
38
|
+
return result
|
|
26
39
|
|
|
27
40
|
|
|
28
41
|
def render_user_input(content: str) -> RenderableType:
|
klaude_code/ui/rich/theme.py
CHANGED
|
@@ -134,6 +134,7 @@ class ThemeKey(str, Enum):
|
|
|
134
134
|
CONFIG_TABLE_HEADER = "config.table.header"
|
|
135
135
|
CONFIG_STATUS_OK = "config.status.ok"
|
|
136
136
|
CONFIG_STATUS_PRIMARY = "config.status.primary"
|
|
137
|
+
CONFIG_STATUS_ERROR = "config.status.error"
|
|
137
138
|
CONFIG_ITEM_NAME = "config.item.name"
|
|
138
139
|
CONFIG_PARAM_LABEL = "config.param.label"
|
|
139
140
|
CONFIG_PANEL_BORDER = "config.panel.border"
|
|
@@ -225,6 +226,7 @@ def get_theme(theme: str | None = None) -> Themes:
|
|
|
225
226
|
ThemeKey.CONFIG_TABLE_HEADER.value: palette.green,
|
|
226
227
|
ThemeKey.CONFIG_STATUS_OK.value: palette.green,
|
|
227
228
|
ThemeKey.CONFIG_STATUS_PRIMARY.value: palette.yellow,
|
|
229
|
+
ThemeKey.CONFIG_STATUS_ERROR.value: palette.red,
|
|
228
230
|
ThemeKey.CONFIG_ITEM_NAME.value: palette.cyan,
|
|
229
231
|
ThemeKey.CONFIG_PARAM_LABEL.value: palette.grey1,
|
|
230
232
|
ThemeKey.CONFIG_PANEL_BORDER.value: palette.grey3,
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
klaude_code/auth/__init__.py,sha256=jLUgi4V4m0t2BlVuuni7iANOErpJgAeEqByuD1sKUvQ,480
|
|
3
|
+
klaude_code/auth/codex/__init__.py,sha256=dC81gQ8nujoy9IBF9znUbMQbjv0lDWWdHrm-R5yo5cM,501
|
|
4
|
+
klaude_code/auth/codex/exceptions.py,sha256=TcAKPozsY3SCh_krTYFlJ8FU5jepgSTg-5UO1dA4OgE,388
|
|
5
|
+
klaude_code/auth/codex/jwt_utils.py,sha256=tuaJKT4vAIGeaQjNzgNcHWGrYYSDrDeaQT9h4cw5Us8,1134
|
|
6
|
+
klaude_code/auth/codex/oauth.py,sha256=ap78TUPJsF6O6cnkkuj11w1t4bCIVQzyVkuDvOLo0oo,7848
|
|
7
|
+
klaude_code/auth/codex/token_manager.py,sha256=F4xH5PhE9cksqTiWsU_YAboNe284VgUFWF2VY1sZV9U,2720
|
|
2
8
|
klaude_code/cli/__init__.py,sha256=YzlAoWAr5rx5oe6B_4zPxRFS4QaZauuy1AFwampP5fg,45
|
|
3
|
-
klaude_code/cli/main.py,sha256=
|
|
9
|
+
klaude_code/cli/main.py,sha256=4c0pwFDJXIrumvHKKJthlEkUm6p5RLfPfBOrK4HerTE,11609
|
|
4
10
|
klaude_code/cli/runtime.py,sha256=It7JwXi4MfaRHV2CaBjDmR8M8VVJEXoljXMUc7pR85Y,12347
|
|
5
11
|
klaude_code/cli/session_cmd.py,sha256=cIBm3uUurke-TfBvQHz9mGW29LOAh22FIpXVyypnwDo,2549
|
|
6
12
|
klaude_code/command/__init__.py,sha256=ApRFYqzmDxXe-jJ0tHg4qe4XsJ4QSICu8ICQcmwxQ1Y,1125
|
|
@@ -16,11 +22,11 @@ klaude_code/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCF
|
|
|
16
22
|
klaude_code/command/prompt_command.py,sha256=cDdLAyGk3JFS-nRlNzTnT8T35QQ-FC6RT0fD5ELZGO4,2405
|
|
17
23
|
klaude_code/command/refresh_cmd.py,sha256=kgpbcnqf1n_ihMW99AfTXeZEkE2_MNwgQ9DbNfl2jqY,1288
|
|
18
24
|
klaude_code/command/registry.py,sha256=OZhQqoLfWjqojJauemc8L2rnwPhYoAh2Kjx3HSAz_ZE,3554
|
|
19
|
-
klaude_code/command/status_cmd.py,sha256=
|
|
25
|
+
klaude_code/command/status_cmd.py,sha256=ogB8x2swxirh5cs0iiBokmLVD287ztM4PySjT-Qid9c,4330
|
|
20
26
|
klaude_code/command/terminal_setup_cmd.py,sha256=bQfMDZIzak8emkmuaY43_2YaS7t908sUJ_orYwccTtY,10957
|
|
21
27
|
klaude_code/config/__init__.py,sha256=9XVCYYqzJtCi46I94hbUmJ2yTFuZ-UlH-QTx7OpLAkQ,292
|
|
22
28
|
klaude_code/config/config.py,sha256=Vc9u7-40T81Rbx1OdMqSWZLh3vf9aj4wmBUnIOH7jAw,6526
|
|
23
|
-
klaude_code/config/list_model.py,sha256=
|
|
29
|
+
klaude_code/config/list_model.py,sha256=08vLxar7YAcUNzGTN6bUbPtAoXXyfO5y6LjaaXMbsyQ,8019
|
|
24
30
|
klaude_code/config/select_model.py,sha256=el1jqXlNyYmHH_dvdcEkWVOYqIZ9y05_VJRlfZk7HkQ,2565
|
|
25
31
|
klaude_code/const/__init__.py,sha256=joTUQF1NEA-OHY3fuNIjNYYxOJlBW-MtSQ3YE3EAer4,3980
|
|
26
32
|
klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -31,16 +37,17 @@ klaude_code/core/manager/agent_manager.py,sha256=5InJ1EaPKbBSLZy7vLro2B8-DbbjPRH
|
|
|
31
37
|
klaude_code/core/manager/llm_clients.py,sha256=Fdkd7EijC9IDnEPU622cFLeaYGojov5Z2nPyR0xhj3Q,1335
|
|
32
38
|
klaude_code/core/manager/llm_clients_builder.py,sha256=NzZKWXv8xB4GA1Hd6whEYM746atMavnI_nJaq7K5G08,1710
|
|
33
39
|
klaude_code/core/manager/sub_agent_manager.py,sha256=X6jilMg4HSIck_m032AyRUarpuux6TVI15g6L8_3T9Q,3474
|
|
34
|
-
klaude_code/core/prompt.py,sha256=
|
|
40
|
+
klaude_code/core/prompt.py,sha256=VQasJ1J1f1cKytMgUsbmY_vhqe2nTJuU2D9VErUGodU,2961
|
|
35
41
|
klaude_code/core/prompts/prompt-claude-code.md,sha256=3OY5ShcYPp8f0XrIl-3pBVIDZkweWsLzDHy5ldnSOJc,8954
|
|
36
|
-
klaude_code/core/prompts/prompt-codex.md,sha256=
|
|
42
|
+
klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md,sha256=SW-y8AmR99JL_9j26k9YVAOQuZ18vR12aT5CWHkZDc4,11741
|
|
43
|
+
klaude_code/core/prompts/prompt-codex-gpt-5-1.md,sha256=jNi593_4L3EoMvjS0TwltF2b684gtDBsYHa9npxO34A,24239
|
|
37
44
|
klaude_code/core/prompts/prompt-gemini.md,sha256=JjE1tHSByGKJzjn4Gpj1zekT7ry1Yqbwx5qx3fZy2gE,3901
|
|
38
|
-
klaude_code/core/prompts/prompt-subagent-explore.md,sha256=
|
|
45
|
+
klaude_code/core/prompts/prompt-subagent-explore.md,sha256=m7eQMTWWibaZIMPNbMYUhPbNRn5KrTq5tIoXw1HJuLY,2124
|
|
39
46
|
klaude_code/core/prompts/prompt-subagent-oracle.md,sha256=hGtyDm_6UhJZUJwfXt5A-170is1KMHls85fEEo45z-w,1376
|
|
40
47
|
klaude_code/core/prompts/prompt-subagent-webfetch.md,sha256=kHtJINbCRiRDrip_q6idHHU3CwbDfrVlpgtSZvugOWI,2304
|
|
41
48
|
klaude_code/core/prompts/prompt-subagent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
|
|
42
|
-
klaude_code/core/reminders.py,sha256=
|
|
43
|
-
klaude_code/core/task.py,sha256=
|
|
49
|
+
klaude_code/core/reminders.py,sha256=CTVIAqwU8bVB02eq9vI4Iha-xO4_MxaCr71maRpfwmE,18221
|
|
50
|
+
klaude_code/core/task.py,sha256=h3UyU9yRY01Mhsshp5PZBpD3-B5z-s4Kb76gTS0ASO8,10102
|
|
44
51
|
klaude_code/core/tool/__init__.py,sha256=GQjs6IXqtiKn8RI3OmM0wki8p16SBnvuHVBez4Z5xqo,2120
|
|
45
52
|
klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
53
|
klaude_code/core/tool/file/apply_patch.py,sha256=gUukVxt0qEP2NLHiPsmFWOi0sOuW0FaUnN0BfZ6FcII,17257
|
|
@@ -74,18 +81,20 @@ klaude_code/core/tool/tool_abc.py,sha256=3FlVZ8a6hC-_Ci23_cpLaap9nHinHgxSB1TsZL5
|
|
|
74
81
|
klaude_code/core/tool/tool_context.py,sha256=vCA3oYN_YHnINoxejsdEUfM2QxlbXRaJ3D9_udc-8wk,3749
|
|
75
82
|
klaude_code/core/tool/tool_registry.py,sha256=2d-5zIsODztgJe7obS1OAZbrQSqAquULcoXPLLEr2Xs,2665
|
|
76
83
|
klaude_code/core/tool/tool_runner.py,sha256=IyVjMnGVMAjs8bJuCMBfFE1eQ39FSjnOz3Wb5HHQ0T4,10259
|
|
77
|
-
klaude_code/core/tool/truncation.py,sha256=
|
|
84
|
+
klaude_code/core/tool/truncation.py,sha256=hHeJDrvvNt0wE9yGZVaZheYUW0VoJ7QbopKo6wjyP-w,6644
|
|
78
85
|
klaude_code/core/tool/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
86
|
klaude_code/core/tool/web/mermaid_tool.md,sha256=Ketpxpr7lz8238p5Q7ZzcyWchWd4dU68u708-dxaZds,978
|
|
80
87
|
klaude_code/core/tool/web/mermaid_tool.py,sha256=GUwWcrakSZH_Jp61Q_i5TvwQj6sWMrIW0ZbNpJ0dVtE,2750
|
|
81
88
|
klaude_code/core/tool/web/web_fetch_tool.md,sha256=_5U-LSoI86rD26nPb0D5BQCr6hj8eyF0UELSiyLznCA,347
|
|
82
89
|
klaude_code/core/tool/web/web_fetch_tool.py,sha256=iu6kM_-90K8mqHbK9Loui96vICV7d8rmtss68rcFqw0,4958
|
|
83
90
|
klaude_code/core/turn.py,sha256=_Jx0huYlUXXTvgEIo_LFisJnFYssdyZePELSw7d_vHg,8391
|
|
84
|
-
klaude_code/llm/__init__.py,sha256=
|
|
91
|
+
klaude_code/llm/__init__.py,sha256=hjegW9bOyTZ6tN6TxQaMWKkEOuapgK2LJ0vWs9FLj_c,594
|
|
85
92
|
klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
|
|
86
93
|
klaude_code/llm/anthropic/client.py,sha256=yEsp3JSVj-18y-UiYT6zQUMRg8PYJ-Ao3bSPSBiJSJM,11166
|
|
87
|
-
klaude_code/llm/anthropic/input.py,sha256=
|
|
94
|
+
klaude_code/llm/anthropic/input.py,sha256=qPo4nmhnhSfLqef4UUVoIz8EjoXTxvlsrfsc_6qqM_s,8039
|
|
88
95
|
klaude_code/llm/client.py,sha256=Un5LA5Z622JQ1MYEfJi7gXj3ycX3ce0WvYPcOogM32Y,1527
|
|
96
|
+
klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
|
|
97
|
+
klaude_code/llm/codex/client.py,sha256=CKBIC9G9uvTxzNDE8sadSotQ8hVXpMWydb7aC-fVv_s,4182
|
|
89
98
|
klaude_code/llm/input_common.py,sha256=yLn-g9T_lC3AnPPilFwlKEA2-vnIgyOKlHFBYB00jm8,8972
|
|
90
99
|
klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
|
|
91
100
|
klaude_code/llm/openai_compatible/client.py,sha256=LqwkmKZdgDJq8_zlwsb35-QRhunP-ec0VFKMr-SM_uk,9215
|
|
@@ -97,23 +106,23 @@ klaude_code/llm/openrouter/input.py,sha256=JrO3T8XMRumjwDoP4sc1UKTU9K_BFot63pi83
|
|
|
97
106
|
klaude_code/llm/openrouter/reasoning_handler.py,sha256=TYIHdwMopi8DVqOpeN3vpyp-GcWOZgTeRnT5QvlK70U,8100
|
|
98
107
|
klaude_code/llm/registry.py,sha256=KBKSelBLlGooInpzfVztN6OZqqfc0WzmB-cT8lE5fw8,686
|
|
99
108
|
klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
|
|
100
|
-
klaude_code/llm/responses/client.py,sha256=
|
|
109
|
+
klaude_code/llm/responses/client.py,sha256=f1CoXjst1orWQ7eZujpOCBTrUfX0DLU5YTezEna68Lw,10594
|
|
101
110
|
klaude_code/llm/responses/input.py,sha256=hnTnOGpo1-N_vsi7C3O_PJoj-Gf1cBdt9Q1sal3vhYM,6079
|
|
102
|
-
klaude_code/llm/usage.py,sha256=
|
|
111
|
+
klaude_code/llm/usage.py,sha256=CsZ3eAkt8lwJ47r0UV1fThu32tBBPAr-Zjc_-xq63rY,4302
|
|
103
112
|
klaude_code/protocol/__init__.py,sha256=aGUgzhYqvhuT3Mk2vj7lrHGriH4h9TSbqV1RsRFAZjQ,194
|
|
104
113
|
klaude_code/protocol/commands.py,sha256=zoqyBSpFZI8q8LP3rlr1mR-ekCufx-DfPGbzqsgx7X8,544
|
|
105
114
|
klaude_code/protocol/events.py,sha256=Pw8lY7rJLwk-FjKWtX8C_-Op7p0KWLaI-PH1_U7Uoyg,3290
|
|
106
|
-
klaude_code/protocol/llm_param.py,sha256=
|
|
107
|
-
klaude_code/protocol/model.py,sha256=
|
|
115
|
+
klaude_code/protocol/llm_param.py,sha256=Hjq8Z-3nGhAJovf-lcsNc0kBVGRDWKe910J5lZwQfq4,4424
|
|
116
|
+
klaude_code/protocol/model.py,sha256=7pSKURu6FLetkD6MlnpGZqTXclJSv6Uxj1GgreVs0XM,7816
|
|
108
117
|
klaude_code/protocol/op.py,sha256=rkPvDRsOgPyibMI1n0pDO7ghFWJBfDGas9BnACtmfO4,2654
|
|
109
118
|
klaude_code/protocol/op_handler.py,sha256=_lnv3-RxKkrTfGTNBlQ23gbHJBEtMLC8O48SYWDtPjE,843
|
|
110
|
-
klaude_code/protocol/sub_agent.py,sha256=
|
|
119
|
+
klaude_code/protocol/sub_agent.py,sha256=M17Cu58xC40j2pQF0cjeFaGtfLOMjiNIHNzE7Ej50LQ,13419
|
|
111
120
|
klaude_code/protocol/tools.py,sha256=hkjVirnQqGTJS46IWvVKXWR4usPPUgDZDnm34LzAVSc,348
|
|
112
121
|
klaude_code/session/__init__.py,sha256=oXcDA5w-gJCbzmlF8yuWy3ezIW9DgFBNUs-gJHUJ-Rc,121
|
|
113
|
-
klaude_code/session/export.py,sha256=
|
|
122
|
+
klaude_code/session/export.py,sha256=lmU_X_NjNP3G8SNF2dxZk2wp4Q4S0KM4UYU200fZE5s,23573
|
|
114
123
|
klaude_code/session/selector.py,sha256=HTboyzih7V8zbZoSsArJ-GVC1EnXTGocHJwFmZfbeSg,2567
|
|
115
124
|
klaude_code/session/session.py,sha256=KLE3QUNvt8d7Zu_Mj2x6rdHygzsUtLsvMzQbsiIOrKg,19195
|
|
116
|
-
klaude_code/session/templates/export_session.html,sha256=
|
|
125
|
+
klaude_code/session/templates/export_session.html,sha256=q8CradCANsE2uj00qnH6v1KV5QZQPHSWzxXcVCVT0qk,41406
|
|
117
126
|
klaude_code/trace/__init__.py,sha256=B-S4qdCj8W88AaC_gVmhTaejH6eLYClBVh2Q6aGAVBk,184
|
|
118
127
|
klaude_code/trace/log.py,sha256=0K0uek2KWq0zkUZijcO-TBM6STLe-h_8IIW0lx7V7ZA,4865
|
|
119
128
|
klaude_code/ui/__init__.py,sha256=AL1Ro0u8ObNPMj4sci_U4zakG7IpnI3bie-C63E2QPI,2873
|
|
@@ -128,30 +137,30 @@ klaude_code/ui/modes/exec/__init__.py,sha256=RsYa-DmDJj6g7iXb4H9mm2_Cu-KDQOD10RJ
|
|
|
128
137
|
klaude_code/ui/modes/exec/display.py,sha256=m2kkgaUoGD9rEVUmcm7Vs_PyAI2iruKCJYRhANjSsKo,1965
|
|
129
138
|
klaude_code/ui/modes/repl/__init__.py,sha256=WlSaybzk2M3Dngf8mJZWr5vx-yJpeph7lTb5Nm9fMRo,1635
|
|
130
139
|
klaude_code/ui/modes/repl/clipboard.py,sha256=_WVLgv-4mprERmcw7iRYTunrSUU51-oojp_hFCM3gVk,5117
|
|
131
|
-
klaude_code/ui/modes/repl/completers.py,sha256
|
|
140
|
+
klaude_code/ui/modes/repl/completers.py,sha256=V6pxi61w1z0B1eDliudahBQJ6wkPXAGI4AaBg8J0XtE,18283
|
|
132
141
|
klaude_code/ui/modes/repl/display.py,sha256=v-Jxe7MWpOCEsx9FFEzqKaIg0jLS7ZU9bevooBjxxEQ,2242
|
|
133
|
-
klaude_code/ui/modes/repl/event_handler.py,sha256=
|
|
142
|
+
klaude_code/ui/modes/repl/event_handler.py,sha256=5I8Ds1AfUF9eZtKiq99p_Vh3GMB-VV8YjWvwDuUv96c,15812
|
|
134
143
|
klaude_code/ui/modes/repl/input_prompt_toolkit.py,sha256=wwXTQ_ZP70y_SgIQenttY82aBZDsRYhxerEqm46gpOM,7592
|
|
135
144
|
klaude_code/ui/modes/repl/key_bindings.py,sha256=Px-QdRHkzvb2fDGg5d3JHic5ieiGiPcXorPJ5bAM8dI,7801
|
|
136
145
|
klaude_code/ui/modes/repl/renderer.py,sha256=o1QubSm9lej-bVZ1G3ie-5qRxgPMDUo42kC9dTZRkvU,11893
|
|
137
146
|
klaude_code/ui/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
147
|
klaude_code/ui/renderers/assistant.py,sha256=Dxy6v4pX28RyWhnrjBteY8_NvDIi_jQa-j0mWt-eqWY,569
|
|
139
148
|
klaude_code/ui/renderers/common.py,sha256=TPH7LCbeJGqB8ArTsVitqJHEyOxHU6nwnRtvF04nLJ4,184
|
|
140
|
-
klaude_code/ui/renderers/developer.py,sha256
|
|
149
|
+
klaude_code/ui/renderers/developer.py,sha256=hVSpAKx-b9MJUBxKgYd4rY-3J-O4g7wpjbp88M_k6nU,6182
|
|
141
150
|
klaude_code/ui/renderers/diffs.py,sha256=P--aLjvZy4z77FDx6uM9LlIYVjYlyZwj0MncdJTO2AA,7691
|
|
142
151
|
klaude_code/ui/renderers/errors.py,sha256=c_fbnoNOnvuI3Bb24IujwV8Mpes-qWS_xCWfAcBvg6A,517
|
|
143
|
-
klaude_code/ui/renderers/metadata.py,sha256=
|
|
152
|
+
klaude_code/ui/renderers/metadata.py,sha256=tFmekiQ70Rfulj0cqE7AeKVlVjOD6KVEFAIhFuzpTvc,7195
|
|
144
153
|
klaude_code/ui/renderers/sub_agent.py,sha256=3cyn95pu4IniOJyWW4vfQ-X72iLufQ3LT9CkAQMuF4k,2686
|
|
145
154
|
klaude_code/ui/renderers/thinking.py,sha256=jzDfvYuwpafndmBMMb6UumGxur9iFi_X0LYIo08eDlw,1179
|
|
146
155
|
klaude_code/ui/renderers/tools.py,sha256=0Ekh5p7kwUYCuPfVrU-OAoLptt6Onx_jE9awBfxCm3I,20426
|
|
147
|
-
klaude_code/ui/renderers/user_input.py,sha256=
|
|
156
|
+
klaude_code/ui/renderers/user_input.py,sha256=rDdOYvbgJ6oePQAtyTCK-KhARfLKytpTZboZ-cFIuJQ,2603
|
|
148
157
|
klaude_code/ui/rich/__init__.py,sha256=olvMm2SteyKioOqUJbEoav2TsDr_mtKqkSaifNumjwc,27
|
|
149
158
|
klaude_code/ui/rich/live.py,sha256=Uid0QAZG7mHb4KrCF8p9c9n1nHLHzW75xSqcLZ4bLWY,2098
|
|
150
159
|
klaude_code/ui/rich/markdown.py,sha256=hvL0uvMxUBi7II-Jizn9U92mk4flJpEh_xJkxDQhEK8,11425
|
|
151
160
|
klaude_code/ui/rich/quote.py,sha256=tZcxN73SfDBHF_qk0Jkh9gWBqPBn8VLp9RF36YRdKEM,1123
|
|
152
161
|
klaude_code/ui/rich/searchable_text.py,sha256=Adr2EFewX1UInypz-vMOUgZP9gk3Zk8_d2utWhV3K90,2452
|
|
153
162
|
klaude_code/ui/rich/status.py,sha256=sHTenGYERGiLwnkwdGFjFw9WDbbnMSPTKeEJiSYYNaU,8503
|
|
154
|
-
klaude_code/ui/rich/theme.py,sha256=
|
|
163
|
+
klaude_code/ui/rich/theme.py,sha256=JAlFXwcZYbHv0vcuweWnzu4vR2CDe-mqH24CEtNBnL4,10159
|
|
155
164
|
klaude_code/ui/terminal/__init__.py,sha256=33AbEwVH3G-oJSYL3QDlnbjoVj-uH_C0p09Zr71Z7Fw,21
|
|
156
165
|
klaude_code/ui/terminal/color.py,sha256=M-i09DVlLAhAyhQjfeAi7OipoGi1p_OVkaZxeRfykY0,7135
|
|
157
166
|
klaude_code/ui/terminal/control.py,sha256=P9PyaX8v1qp1zxwr7yGwTiNEb772KNMUSQWkVKMvAvQ,5056
|
|
@@ -161,7 +170,7 @@ klaude_code/ui/utils/__init__.py,sha256=YEsCLjbCPaPza-UXTPUMTJTrc9BmNBUP5CbFWlsh
|
|
|
161
170
|
klaude_code/ui/utils/common.py,sha256=xzw-Mgj0agxrf22QxpH7YzVIpkMXIRY6SgXWtLYF0yU,2881
|
|
162
171
|
klaude_code/ui/utils/debouncer.py,sha256=TFF1z7B7-FxONEigkYohhShDlqo4cOcqydE9zz7JBHc,1270
|
|
163
172
|
klaude_code/version.py,sha256=QDgEqSFhyTSiABQFQc9VfujMPQcdjgoCaYTQsr94x0Q,4752
|
|
164
|
-
klaude_code-1.2.
|
|
165
|
-
klaude_code-1.2.
|
|
166
|
-
klaude_code-1.2.
|
|
167
|
-
klaude_code-1.2.
|
|
173
|
+
klaude_code-1.2.7.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
174
|
+
klaude_code-1.2.7.dist-info/entry_points.txt,sha256=7CWKjolvs6dZiYHpelhA_FRJ-sVDh43eu3iWuOhKc_w,53
|
|
175
|
+
klaude_code-1.2.7.dist-info/METADATA,sha256=B8198x-bOx9HK5McY8m6q4WtnFLQ3evMLkYDhorFLtM,5140
|
|
176
|
+
klaude_code-1.2.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|