kimi-cli 0.35__py3-none-any.whl → 0.52__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.
- kimi_cli/CHANGELOG.md +165 -0
- kimi_cli/__init__.py +0 -374
- kimi_cli/agents/{koder → default}/agent.yaml +1 -1
- kimi_cli/agents/{koder → default}/system.md +1 -1
- kimi_cli/agentspec.py +115 -0
- kimi_cli/app.py +208 -0
- kimi_cli/cli.py +321 -0
- kimi_cli/config.py +33 -16
- kimi_cli/constant.py +4 -0
- kimi_cli/exception.py +16 -0
- kimi_cli/llm.py +144 -3
- kimi_cli/metadata.py +6 -69
- kimi_cli/prompts/__init__.py +4 -0
- kimi_cli/session.py +103 -0
- kimi_cli/soul/__init__.py +130 -9
- kimi_cli/soul/agent.py +159 -0
- kimi_cli/soul/approval.py +5 -6
- kimi_cli/soul/compaction.py +106 -0
- kimi_cli/soul/context.py +1 -1
- kimi_cli/soul/kimisoul.py +180 -80
- kimi_cli/soul/message.py +6 -6
- kimi_cli/soul/runtime.py +96 -0
- kimi_cli/soul/toolset.py +3 -2
- kimi_cli/tools/__init__.py +35 -31
- kimi_cli/tools/bash/__init__.py +25 -9
- kimi_cli/tools/bash/cmd.md +31 -0
- kimi_cli/tools/dmail/__init__.py +5 -4
- kimi_cli/tools/file/__init__.py +8 -0
- kimi_cli/tools/file/glob.md +1 -1
- kimi_cli/tools/file/glob.py +4 -4
- kimi_cli/tools/file/grep.py +36 -19
- kimi_cli/tools/file/patch.py +52 -10
- kimi_cli/tools/file/read.py +6 -5
- kimi_cli/tools/file/replace.py +16 -4
- kimi_cli/tools/file/write.py +16 -4
- kimi_cli/tools/mcp.py +7 -4
- kimi_cli/tools/task/__init__.py +60 -41
- kimi_cli/tools/task/task.md +1 -1
- kimi_cli/tools/todo/__init__.py +4 -2
- kimi_cli/tools/utils.py +1 -1
- kimi_cli/tools/web/fetch.py +2 -1
- kimi_cli/tools/web/search.py +13 -12
- kimi_cli/ui/__init__.py +0 -68
- kimi_cli/ui/acp/__init__.py +67 -38
- kimi_cli/ui/print/__init__.py +46 -69
- kimi_cli/ui/shell/__init__.py +145 -154
- kimi_cli/ui/shell/console.py +27 -1
- kimi_cli/ui/shell/debug.py +187 -0
- kimi_cli/ui/shell/keyboard.py +183 -0
- kimi_cli/ui/shell/metacmd.py +34 -81
- kimi_cli/ui/shell/prompt.py +245 -28
- kimi_cli/ui/shell/replay.py +104 -0
- kimi_cli/ui/shell/setup.py +19 -19
- kimi_cli/ui/shell/update.py +11 -5
- kimi_cli/ui/shell/visualize.py +576 -0
- kimi_cli/ui/wire/README.md +109 -0
- kimi_cli/ui/wire/__init__.py +340 -0
- kimi_cli/ui/wire/jsonrpc.py +48 -0
- kimi_cli/utils/__init__.py +0 -0
- kimi_cli/utils/aiohttp.py +10 -0
- kimi_cli/utils/changelog.py +6 -2
- kimi_cli/utils/clipboard.py +10 -0
- kimi_cli/utils/message.py +15 -1
- kimi_cli/utils/rich/__init__.py +33 -0
- kimi_cli/utils/rich/markdown.py +959 -0
- kimi_cli/utils/rich/markdown_sample.md +108 -0
- kimi_cli/utils/rich/markdown_sample_short.md +2 -0
- kimi_cli/utils/signals.py +41 -0
- kimi_cli/utils/string.py +8 -0
- kimi_cli/utils/term.py +114 -0
- kimi_cli/wire/__init__.py +73 -0
- kimi_cli/wire/message.py +191 -0
- kimi_cli-0.52.dist-info/METADATA +186 -0
- kimi_cli-0.52.dist-info/RECORD +99 -0
- kimi_cli-0.52.dist-info/entry_points.txt +3 -0
- kimi_cli/agent.py +0 -261
- kimi_cli/agents/koder/README.md +0 -3
- kimi_cli/prompts/metacmds/__init__.py +0 -4
- kimi_cli/soul/wire.py +0 -101
- kimi_cli/ui/shell/liveview.py +0 -158
- kimi_cli/utils/provider.py +0 -64
- kimi_cli-0.35.dist-info/METADATA +0 -24
- kimi_cli-0.35.dist-info/RECORD +0 -76
- kimi_cli-0.35.dist-info/entry_points.txt +0 -3
- /kimi_cli/agents/{koder → default}/sub.yaml +0 -0
- /kimi_cli/prompts/{metacmds/compact.md → compact.md} +0 -0
- /kimi_cli/prompts/{metacmds/init.md → init.md} +0 -0
- {kimi_cli-0.35.dist-info → kimi_cli-0.52.dist-info}/WHEEL +0 -0
kimi_cli/ui/shell/liveview.py
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import streamingjson
|
|
2
|
-
from kosong.base.message import ToolCall, ToolCallPart
|
|
3
|
-
from kosong.tooling import ToolError, ToolOk, ToolResult, ToolReturnType
|
|
4
|
-
from rich.console import Group, RenderableType
|
|
5
|
-
from rich.live import Live
|
|
6
|
-
from rich.markup import escape
|
|
7
|
-
from rich.spinner import Spinner
|
|
8
|
-
from rich.text import Text
|
|
9
|
-
|
|
10
|
-
from kimi_cli.soul import StatusSnapshot
|
|
11
|
-
from kimi_cli.tools import extract_subtitle
|
|
12
|
-
from kimi_cli.ui.shell.console import console
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class _ToolCallDisplay:
|
|
16
|
-
def __init__(self, tool_call: ToolCall):
|
|
17
|
-
self._tool_name = tool_call.function.name
|
|
18
|
-
self._lexer = streamingjson.Lexer()
|
|
19
|
-
if tool_call.function.arguments is not None:
|
|
20
|
-
self._lexer.append_string(tool_call.function.arguments)
|
|
21
|
-
|
|
22
|
-
self._title_markup = f"Using [blue]{self._tool_name}[/blue]"
|
|
23
|
-
self._subtitle = extract_subtitle(self._lexer, self._tool_name)
|
|
24
|
-
self._finished = False
|
|
25
|
-
self._spinner = Spinner("dots", text=self._spinner_markup)
|
|
26
|
-
self.renderable: RenderableType = Group(self._spinner)
|
|
27
|
-
|
|
28
|
-
@property
|
|
29
|
-
def finished(self) -> bool:
|
|
30
|
-
return self._finished
|
|
31
|
-
|
|
32
|
-
@property
|
|
33
|
-
def _spinner_markup(self) -> str:
|
|
34
|
-
return self._title_markup + self._subtitle_markup
|
|
35
|
-
|
|
36
|
-
@property
|
|
37
|
-
def _subtitle_markup(self) -> str:
|
|
38
|
-
subtitle = self._subtitle
|
|
39
|
-
return f"[grey50]: {escape(subtitle)}[/grey50]" if subtitle else ""
|
|
40
|
-
|
|
41
|
-
def append_args_part(self, args_part: str):
|
|
42
|
-
if self.finished:
|
|
43
|
-
return
|
|
44
|
-
self._lexer.append_string(args_part)
|
|
45
|
-
# TODO: don't extract detail if it's already stable
|
|
46
|
-
new_subtitle = extract_subtitle(self._lexer, self._tool_name)
|
|
47
|
-
if new_subtitle and new_subtitle != self._subtitle:
|
|
48
|
-
self._subtitle = new_subtitle
|
|
49
|
-
self._spinner.update(text=self._spinner_markup)
|
|
50
|
-
|
|
51
|
-
def finish(self, result: ToolReturnType):
|
|
52
|
-
"""
|
|
53
|
-
Finish the live display of a tool call.
|
|
54
|
-
After calling this, the `renderable` property should be re-rendered.
|
|
55
|
-
"""
|
|
56
|
-
self._finished = True
|
|
57
|
-
sign = "[red]✗[/red]" if isinstance(result, ToolError) else "[green]✓[/green]"
|
|
58
|
-
lines = [
|
|
59
|
-
Text.from_markup(f"{sign} Used [blue]{self._tool_name}[/blue]" + self._subtitle_markup)
|
|
60
|
-
]
|
|
61
|
-
if result.brief:
|
|
62
|
-
lines.append(
|
|
63
|
-
Text.from_markup(
|
|
64
|
-
f" {result.brief}", style="grey50" if isinstance(result, ToolOk) else "red"
|
|
65
|
-
)
|
|
66
|
-
)
|
|
67
|
-
self.renderable = Group(*lines)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
class StepLiveView:
|
|
71
|
-
def __init__(self, status: StatusSnapshot):
|
|
72
|
-
self._line_buffer = Text("")
|
|
73
|
-
self._tool_calls: dict[str, _ToolCallDisplay] = {}
|
|
74
|
-
self._last_tool_call: _ToolCallDisplay | None = None
|
|
75
|
-
self._status_text: Text | None = Text(
|
|
76
|
-
self._format_status(status), style="grey50", justify="right"
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
def __enter__(self):
|
|
80
|
-
self._live = Live(
|
|
81
|
-
self._compose(),
|
|
82
|
-
console=console,
|
|
83
|
-
refresh_per_second=4,
|
|
84
|
-
transient=False, # leave the last frame on the screen
|
|
85
|
-
vertical_overflow="visible",
|
|
86
|
-
)
|
|
87
|
-
self._live.__enter__()
|
|
88
|
-
return self
|
|
89
|
-
|
|
90
|
-
def __exit__(self, exc_type, exc_value, traceback):
|
|
91
|
-
self._live.__exit__(exc_type, exc_value, traceback)
|
|
92
|
-
|
|
93
|
-
def _compose(self) -> RenderableType:
|
|
94
|
-
sections = []
|
|
95
|
-
if self._line_buffer:
|
|
96
|
-
sections.append(self._line_buffer)
|
|
97
|
-
for view in self._tool_calls.values():
|
|
98
|
-
sections.append(view.renderable)
|
|
99
|
-
if self._status_text:
|
|
100
|
-
sections.append(self._status_text)
|
|
101
|
-
return Group(*sections)
|
|
102
|
-
|
|
103
|
-
def _push_out(self, text: Text | str):
|
|
104
|
-
"""
|
|
105
|
-
Push the text out of the live view to the console.
|
|
106
|
-
After this, the printed line will not be changed further.
|
|
107
|
-
"""
|
|
108
|
-
console.print(text)
|
|
109
|
-
|
|
110
|
-
def append_text(self, text: str):
|
|
111
|
-
lines = text.split("\n")
|
|
112
|
-
prev_is_empty = not self._line_buffer
|
|
113
|
-
for line in lines[:-1]:
|
|
114
|
-
self._push_out(self._line_buffer + line)
|
|
115
|
-
self._line_buffer.plain = ""
|
|
116
|
-
self._line_buffer.append(lines[-1])
|
|
117
|
-
if (prev_is_empty and self._line_buffer) or (not prev_is_empty and not self._line_buffer):
|
|
118
|
-
self._live.update(self._compose())
|
|
119
|
-
|
|
120
|
-
def append_tool_call(self, tool_call: ToolCall):
|
|
121
|
-
self._tool_calls[tool_call.id] = _ToolCallDisplay(tool_call)
|
|
122
|
-
self._last_tool_call = self._tool_calls[tool_call.id]
|
|
123
|
-
self._live.update(self._compose())
|
|
124
|
-
|
|
125
|
-
def append_tool_call_part(self, tool_call_part: ToolCallPart):
|
|
126
|
-
if not tool_call_part.arguments_part:
|
|
127
|
-
return
|
|
128
|
-
if self._last_tool_call is None:
|
|
129
|
-
return
|
|
130
|
-
self._last_tool_call.append_args_part(tool_call_part.arguments_part)
|
|
131
|
-
|
|
132
|
-
def append_tool_result(self, tool_result: ToolResult):
|
|
133
|
-
if view := self._tool_calls.get(tool_result.tool_call_id):
|
|
134
|
-
view.finish(tool_result.result)
|
|
135
|
-
self._live.update(self._compose())
|
|
136
|
-
|
|
137
|
-
def update_status(self, status: StatusSnapshot):
|
|
138
|
-
if self._status_text is None:
|
|
139
|
-
return
|
|
140
|
-
self._status_text.plain = self._format_status(status)
|
|
141
|
-
|
|
142
|
-
def finish(self):
|
|
143
|
-
for view in self._tool_calls.values():
|
|
144
|
-
if not view.finished:
|
|
145
|
-
# this should not happen, but just in case
|
|
146
|
-
view.finish(ToolOk(output=""))
|
|
147
|
-
self._live.update(self._compose())
|
|
148
|
-
|
|
149
|
-
def interrupt(self):
|
|
150
|
-
for view in self._tool_calls.values():
|
|
151
|
-
if not view.finished:
|
|
152
|
-
view.finish(ToolError(message="", brief="Interrupted"))
|
|
153
|
-
self._live.update(self._compose())
|
|
154
|
-
|
|
155
|
-
@staticmethod
|
|
156
|
-
def _format_status(status: StatusSnapshot) -> str:
|
|
157
|
-
bounded = max(0.0, min(status.context_usage, 1.0))
|
|
158
|
-
return f"context: {bounded:.1%}"
|
kimi_cli/utils/provider.py
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
from kosong.chat_provider import ChaosChatProvider, Kimi, OpenAILegacy
|
|
4
|
-
from kosong.chat_provider.chaos import ChaosConfig
|
|
5
|
-
from pydantic import SecretStr
|
|
6
|
-
|
|
7
|
-
import kimi_cli
|
|
8
|
-
from kimi_cli.config import LLMModel, LLMProvider
|
|
9
|
-
from kimi_cli.llm import LLM
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def augment_provider_with_env_vars(provider: LLMProvider, model: LLMModel):
|
|
13
|
-
match provider.type:
|
|
14
|
-
case "kimi":
|
|
15
|
-
if base_url := os.getenv("KIMI_BASE_URL"):
|
|
16
|
-
provider.base_url = base_url
|
|
17
|
-
if api_key := os.getenv("KIMI_API_KEY"):
|
|
18
|
-
provider.api_key = SecretStr(api_key)
|
|
19
|
-
if model_name := os.getenv("KIMI_MODEL_NAME"):
|
|
20
|
-
model.model = model_name
|
|
21
|
-
if max_context_size := os.getenv("KIMI_MODEL_MAX_CONTEXT_SIZE"):
|
|
22
|
-
model.max_context_size = int(max_context_size)
|
|
23
|
-
case "openai_legacy":
|
|
24
|
-
if base_url := os.getenv("OPENAI_BASE_URL"):
|
|
25
|
-
provider.base_url = base_url
|
|
26
|
-
if api_key := os.getenv("OPENAI_API_KEY"):
|
|
27
|
-
provider.api_key = SecretStr(api_key)
|
|
28
|
-
case _:
|
|
29
|
-
pass
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def create_llm(provider: LLMProvider, model: LLMModel, stream: bool = True) -> LLM:
|
|
33
|
-
match provider.type:
|
|
34
|
-
case "kimi":
|
|
35
|
-
chat_provider = Kimi(
|
|
36
|
-
model=model.model,
|
|
37
|
-
base_url=provider.base_url,
|
|
38
|
-
api_key=provider.api_key.get_secret_value(),
|
|
39
|
-
stream=stream,
|
|
40
|
-
default_headers={
|
|
41
|
-
"User-Agent": kimi_cli.USER_AGENT,
|
|
42
|
-
},
|
|
43
|
-
)
|
|
44
|
-
case "openai_legacy":
|
|
45
|
-
chat_provider = OpenAILegacy(
|
|
46
|
-
model=model.model,
|
|
47
|
-
base_url=provider.base_url,
|
|
48
|
-
api_key=provider.api_key.get_secret_value(),
|
|
49
|
-
stream=stream,
|
|
50
|
-
)
|
|
51
|
-
case "_chaos":
|
|
52
|
-
chat_provider = ChaosChatProvider(
|
|
53
|
-
model=model.model,
|
|
54
|
-
base_url=provider.base_url,
|
|
55
|
-
api_key=provider.api_key.get_secret_value(),
|
|
56
|
-
chaos_config=ChaosConfig(
|
|
57
|
-
error_probability=0.8,
|
|
58
|
-
error_types=[429, 500, 503],
|
|
59
|
-
),
|
|
60
|
-
)
|
|
61
|
-
case _:
|
|
62
|
-
raise ValueError(f"Unsupported provider: {provider.type}")
|
|
63
|
-
|
|
64
|
-
return LLM(chat_provider=chat_provider, max_context_size=model.max_context_size)
|
kimi_cli-0.35.dist-info/METADATA
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: kimi-cli
|
|
3
|
-
Version: 0.35
|
|
4
|
-
Summary: Kimi CLI is your next CLI agent.
|
|
5
|
-
Requires-Dist: agent-client-protocol>=0.4.9
|
|
6
|
-
Requires-Dist: aiofiles>=25.1.0
|
|
7
|
-
Requires-Dist: aiohttp>=3.13.1
|
|
8
|
-
Requires-Dist: click>=8.3.0
|
|
9
|
-
Requires-Dist: kosong>=0.14.1
|
|
10
|
-
Requires-Dist: loguru>=0.7.3
|
|
11
|
-
Requires-Dist: patch-ng>=1.19.0
|
|
12
|
-
Requires-Dist: prompt-toolkit>=3.0.52
|
|
13
|
-
Requires-Dist: pyyaml>=6.0.3
|
|
14
|
-
Requires-Dist: rich>=14.2.0
|
|
15
|
-
Requires-Dist: ripgrepy>=2.2.0
|
|
16
|
-
Requires-Dist: streamingjson>=0.0.5
|
|
17
|
-
Requires-Dist: trafilatura>=2.0.0
|
|
18
|
-
Requires-Dist: tenacity>=9.1.2
|
|
19
|
-
Requires-Dist: fastmcp>=2.12.5
|
|
20
|
-
Requires-Dist: pydantic>=2.12.3
|
|
21
|
-
Requires-Python: >=3.13
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
|
|
24
|
-
# Kimi CLI
|
kimi_cli-0.35.dist-info/RECORD
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
kimi_cli/CHANGELOG.md,sha256=734517112bfbcefbc47675f14932689afc73784d54f6c840226c055c631831b2,6606
|
|
2
|
-
kimi_cli/__init__.py,sha256=51c994671106389725ced892921a79019dec0df8965e90720bf344d751c4fd7e,11102
|
|
3
|
-
kimi_cli/agent.py,sha256=46fc0293489cc1d5daaa9be6b29c8a17bbf8c5a552fd437941eb1f0ae1335a3a,8528
|
|
4
|
-
kimi_cli/agents/koder/README.md,sha256=2d9a987110652915cd1a4356caec3eef9380479ce36906c377a1ed177d46690f,96
|
|
5
|
-
kimi_cli/agents/koder/agent.yaml,sha256=f1c5c585e8e0a52419c820d56a4aa928eebdf7bb21f0907d6c02d4ea1c8909d7,709
|
|
6
|
-
kimi_cli/agents/koder/sub.yaml,sha256=e0c1ea34fdb04b0d6dc635709f0f130aff25d7f9fb97e238470143c8145be251,634
|
|
7
|
-
kimi_cli/agents/koder/system.md,sha256=27ef94b525e846f6a8e55222042b6ca8eb8d2663ff7009d7b07c50ed8798bb02,4999
|
|
8
|
-
kimi_cli/config.py,sha256=37dd65f2aa03c051dc92d09d9c110361ee35bb8dc94eced2c1e8bf01e3918353,4157
|
|
9
|
-
kimi_cli/llm.py,sha256=e4c4a184ce7b78fb60ce29f7b967676dd338131ab05f5ea7c3cb7b3e7c6a64d4,165
|
|
10
|
-
kimi_cli/metadata.py,sha256=70c01da57529a9f585c0c5f3dd642f92ef16c4e49a107d8da838fa6d4746546a,3933
|
|
11
|
-
kimi_cli/prompts/metacmds/__init__.py,sha256=56bee1833b9555c71f50d0def3de7fb6d78e018826d925686ce9295815edb666,142
|
|
12
|
-
kimi_cli/prompts/metacmds/compact.md,sha256=6655bd7d8270b24d8f97b51ef7c471cf71d686c56f8ec9a5cc9e47caa3aae87c,1877
|
|
13
|
-
kimi_cli/prompts/metacmds/init.md,sha256=d271a0df6dd7b330ffec4f645a74c0392dafc1b3bfc1e3f2a77624e96cf6abbe,1380
|
|
14
|
-
kimi_cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
15
|
-
kimi_cli/share.py,sha256=4292df7f44177419c45c772a933b5f36e2b7533f8cef9842629a438bc7856dc0,204
|
|
16
|
-
kimi_cli/soul/__init__.py,sha256=10036ca53a06b42dd66e77bb2190c762c51ed4c3af7d237c05a7e59824ba0d75,1580
|
|
17
|
-
kimi_cli/soul/approval.py,sha256=4f268c0212cc0dc86126e71dc6b6577e26dc89784e5a24ed200d9519d5018baf,2563
|
|
18
|
-
kimi_cli/soul/context.py,sha256=541759a65f8f87a3424a6da160ffb2043046e6f6b714124d94d82a77635df9bc,5855
|
|
19
|
-
kimi_cli/soul/denwarenji.py,sha256=66b95f052a1fa844e2347972d34e1916a7be24d3e493701b451f5380b0375c9f,1384
|
|
20
|
-
kimi_cli/soul/kimisoul.py,sha256=f6ef5e73e7f5081090fe7e7cb13b816f750bb5b99331467ad6523eda26a5de0d,9558
|
|
21
|
-
kimi_cli/soul/message.py,sha256=16bbdc203c791dc50c7ebbc52d91fae801313920db1029217f30b5516ba5dbf3,2459
|
|
22
|
-
kimi_cli/soul/toolset.py,sha256=60166d89ef0efac690fa6866e88afe70fbe80ad862ba2524d70ddf657a730d14,744
|
|
23
|
-
kimi_cli/soul/wire.py,sha256=0926a1c5d01c35d72cbf5c8f818d3dc439defbb8cadec818e3aba51e9cc0d881,2723
|
|
24
|
-
kimi_cli/tools/__init__.py,sha256=4d612402814eede7182e0a55e7dd21c4532b5dd44700dc744763a8308c2f74f8,3280
|
|
25
|
-
kimi_cli/tools/bash/__init__.py,sha256=2dbe6968accdef2a9f61262bb4929af00cebaeb2fb8fb64f21ea86a3004b6714,2972
|
|
26
|
-
kimi_cli/tools/bash/bash.md,sha256=5d9cc54b3718097951340b0a737c8e1fa308341fd2c4ebd121be94de31dd5f73,2348
|
|
27
|
-
kimi_cli/tools/dmail/__init__.py,sha256=76b2175bc4acd307db0f761b995a9c2cd8ac12f25296fab14707adb9a1baa13b,1261
|
|
28
|
-
kimi_cli/tools/dmail/dmail.md,sha256=0d18cae387dd52127ddc99e296253c09e68ccba5f343153c0adbe77d7586e759,1912
|
|
29
|
-
kimi_cli/tools/file/__init__.py,sha256=9c237ad169523e0be965eb2a92a4675dd03a6aef14faa65982504dd6ff8d1a3c,444
|
|
30
|
-
kimi_cli/tools/file/glob.md,sha256=6aab77c357c203fb2d5cc2092375ce860941e3f7343b59e6ef264f42255163fa,1401
|
|
31
|
-
kimi_cli/tools/file/glob.py,sha256=fabd6fbc1480a52d07c5ff3d570e3fb86d455438e97a9970dc44a0e7ff434101,5405
|
|
32
|
-
kimi_cli/tools/file/grep.md,sha256=12353db42cf3b5d9d91ac7c0f0b9c2a732e8b050c23a78f4e668db823cca4d50,245
|
|
33
|
-
kimi_cli/tools/file/grep.py,sha256=765a7f7c3387f05c2d47781b484c612639e1cfd3a1b77291e3613ce239e46947,9720
|
|
34
|
-
kimi_cli/tools/file/patch.md,sha256=f9edbed6c6a03bf7448a51acc1f42622395fd7f1674a814e9a3b2302d3b7b92e,404
|
|
35
|
-
kimi_cli/tools/file/patch.py,sha256=4290a8202d7a19a83a3fe6da63d298e6195c86d8faed46cdacd0323cbdb8c1c8,4765
|
|
36
|
-
kimi_cli/tools/file/read.md,sha256=4c2d83e557daadc0612fb1a613e252b2c8e4df7ae57e6db094e9e75e994cb23b,1066
|
|
37
|
-
kimi_cli/tools/file/read.py,sha256=c1824f0e7a56a065808414580663ba4363fcef0d374ba5ea2e8848ac411b5a5d,5061
|
|
38
|
-
kimi_cli/tools/file/replace.md,sha256=f429f263fa580f2f6107907a33ba8800dcdbd4fc1d9ff8dc4f858bd76ec6bbc6,267
|
|
39
|
-
kimi_cli/tools/file/replace.py,sha256=066bfe14517061b8c4abf722d64c5eee3dfe0ed0037b61c8132792845fb35586,4742
|
|
40
|
-
kimi_cli/tools/file/write.md,sha256=f37b0f4742da57797ec4dd29fbd4fdc9b6617c6be644724a3b16d651c6129cec,324
|
|
41
|
-
kimi_cli/tools/file/write.py,sha256=687648fb8d3c32a1c38655675a0b0981e206a021ba9a0c299cc51abb4cb991e3,3915
|
|
42
|
-
kimi_cli/tools/mcp.py,sha256=12f63c9ee5b82a5b0f23daca0b5ce4ceb3a6190ce5b553ee24e499699521e426,3620
|
|
43
|
-
kimi_cli/tools/task/__init__.py,sha256=82b1d73280ba3b616c2a0b3432a854e08786289002abc8233f3186b8f3bcd94f,5915
|
|
44
|
-
kimi_cli/tools/task/task.md,sha256=eaac7458676271423e53862bb27906ed8df3b86c767abd69e28a5d52f9eecdbf,2280
|
|
45
|
-
kimi_cli/tools/test.py,sha256=c094a91a2d1a5259e192f1147facd5eebd5e5c413787fce167db90e4b41b5119,1442
|
|
46
|
-
kimi_cli/tools/think/__init__.py,sha256=31b06088e2404cb09d42e0acec97c185e4861890bb687f28b41f39cea01b5733,603
|
|
47
|
-
kimi_cli/tools/think/think.md,sha256=ab40d4de1d8adb208384a4ab548e35776283cb0a681c6e208b041fc40ccba724,200
|
|
48
|
-
kimi_cli/tools/todo/__init__.py,sha256=a21948c8635c42743e99651297ba20430c82e75a5f862e1952143987811ac009,881
|
|
49
|
-
kimi_cli/tools/todo/set_todo_list.md,sha256=89509503f43ab321d440a04dc133ddc3e29859f68907a42c39e6093f7bfd485c,1654
|
|
50
|
-
kimi_cli/tools/utils.py,sha256=5331f57c95df817285a5a1ea2921bee3b0bcabf6fc50eb4abcb6587839323443,4580
|
|
51
|
-
kimi_cli/tools/web/__init__.py,sha256=e13108c598828a8a05907a7a821e7ac92f5d63572bb9866dc12ca026094acb42,95
|
|
52
|
-
kimi_cli/tools/web/fetch.md,sha256=56d00bd93b4e379c4f7efe445fce963eb26b8d20f85d4c19097ba6f33bd0019a,67
|
|
53
|
-
kimi_cli/tools/web/fetch.py,sha256=f0e00464e8c5e6fadd7a31b27eded781921bffdaa6fcbd0ca79247e71fe2e61b,3132
|
|
54
|
-
kimi_cli/tools/web/search.md,sha256=24049f9e90d37083e0fc78b8b2e3a5f6fadf09bea00f36712b235d1212a2f532,146
|
|
55
|
-
kimi_cli/tools/web/search.py,sha256=cba367a80b224c2a80e61c0c33bca6ff61c57b202a2e9f8037e221a60f05c340,4295
|
|
56
|
-
kimi_cli/ui/__init__.py,sha256=6846e79b55b823e722c7d9189f87961f489918f1071d502633f250023b2a0ed9,2342
|
|
57
|
-
kimi_cli/ui/acp/__init__.py,sha256=e5a93c3bbbb919fae41cedd829dbe1363ebcb56feb6413c47071692876007d52,17349
|
|
58
|
-
kimi_cli/ui/print/__init__.py,sha256=6c3c341bf11edd022806103a49a6895802a50ab887623525a494d456ec6ffeb1,6687
|
|
59
|
-
kimi_cli/ui/shell/__init__.py,sha256=18d9f4ef25bc6b39d0d1e58970f92f2586e17f859bd69241ff5aa20f08e8d80f,12495
|
|
60
|
-
kimi_cli/ui/shell/console.py,sha256=4f8c420286acc83e85f8eefd34a543db77ff92f5616f15f8b70754c43dfc254f,69
|
|
61
|
-
kimi_cli/ui/shell/liveview.py,sha256=c676f84fbaf4ceb3b9a8c816b24701c21f8d45dd93862222e7a37d1312de5c81,5841
|
|
62
|
-
kimi_cli/ui/shell/metacmd.py,sha256=71e743a0642ec4d5bf4c68a760a43e046161946de22f062ffd1c8f4641eca9ff,9501
|
|
63
|
-
kimi_cli/ui/shell/prompt.py,sha256=f85446d77b998e2594380c29000b06614e3fae8537db46ec96fc5ddc25490b45,19096
|
|
64
|
-
kimi_cli/ui/shell/setup.py,sha256=a35651c3f0583cf5bdc5169530cc33df4942196c7cbc6cff6c47990dec4ff40a,5387
|
|
65
|
-
kimi_cli/ui/shell/update.py,sha256=e37b521ed39bdb183e01b19729861fc7751cb21240f49320157766f8908b5691,7110
|
|
66
|
-
kimi_cli/utils/changelog.py,sha256=9d9ae05f32e90a53d40626fca437b9a10e8bec5b3e63e9348135969dcab4380e,3380
|
|
67
|
-
kimi_cli/utils/logging.py,sha256=129298ac214ecd8d913c3431cc05d754f9c4c8c4042c458618bf9e8ddebdb763,399
|
|
68
|
-
kimi_cli/utils/message.py,sha256=ca8f8d3c7dc6d4fce938d1cfe8a7a7343e39ce1e2f0c7b2d76d838edc7d9f187,304
|
|
69
|
-
kimi_cli/utils/path.py,sha256=fdd4fc08999ddc7c610f884b4ba8d27932248b9ed06b5eb4139519edd00b3f75,687
|
|
70
|
-
kimi_cli/utils/provider.py,sha256=351207d17bf5a509b2758fd9757fdb0119cf36274c68e18c0da88953bbdad44c,2371
|
|
71
|
-
kimi_cli/utils/pyinstaller.py,sha256=e5d709d0490ef8645bbed2d2363920c59f25bd17c04f471bf4a8c0fa2ebe1801,581
|
|
72
|
-
kimi_cli/utils/string.py,sha256=f8a842ee014b9023d4045392f33ca6f576f5238ad3d40cb6df071a3ce9f5ed9c,365
|
|
73
|
-
kimi_cli-0.35.dist-info/WHEEL,sha256=70ab3c2925fe316809860cb034f99ba13c4b49819b339959274aab755cc084a8,78
|
|
74
|
-
kimi_cli-0.35.dist-info/entry_points.txt,sha256=d5b0f8ebf823d7590e90bf9511c8ab13f73db97cba1e1fc88585d8d7b415bcc2,40
|
|
75
|
-
kimi_cli-0.35.dist-info/METADATA,sha256=66928c2eebde963171b9a1fd2544215fe9a0ab684aff08dfe4b896adce9ac81a,685
|
|
76
|
-
kimi_cli-0.35.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|