kimi-cli 0.40__py3-none-any.whl → 0.41__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.
Potentially problematic release.
This version of kimi-cli might be problematic. Click here for more details.
- kimi_cli/CHANGELOG.md +12 -0
- kimi_cli/__init__.py +18 -280
- kimi_cli/agents/koder/system.md +1 -1
- kimi_cli/agentspec.py +104 -0
- kimi_cli/cli.py +235 -0
- kimi_cli/constant.py +4 -0
- kimi_cli/llm.py +69 -0
- kimi_cli/prompts/__init__.py +2 -2
- kimi_cli/soul/__init__.py +102 -6
- kimi_cli/soul/agent.py +157 -0
- kimi_cli/soul/approval.py +1 -1
- kimi_cli/soul/compaction.py +4 -4
- kimi_cli/soul/context.py +5 -0
- kimi_cli/soul/globals.py +92 -0
- kimi_cli/soul/kimisoul.py +21 -26
- kimi_cli/tools/dmail/__init__.py +1 -1
- kimi_cli/tools/file/glob.md +1 -1
- kimi_cli/tools/file/glob.py +2 -2
- kimi_cli/tools/file/grep.py +1 -1
- kimi_cli/tools/file/patch.py +2 -2
- kimi_cli/tools/file/read.py +1 -1
- kimi_cli/tools/file/replace.py +2 -2
- kimi_cli/tools/file/write.py +2 -2
- kimi_cli/tools/task/__init__.py +23 -22
- kimi_cli/tools/task/task.md +1 -1
- kimi_cli/tools/todo/__init__.py +1 -1
- kimi_cli/tools/utils.py +1 -1
- kimi_cli/tools/web/search.py +2 -2
- kimi_cli/ui/__init__.py +0 -69
- kimi_cli/ui/acp/__init__.py +8 -9
- kimi_cli/ui/print/__init__.py +17 -35
- kimi_cli/ui/shell/__init__.py +5 -13
- kimi_cli/ui/shell/liveview.py +1 -1
- kimi_cli/ui/shell/metacmd.py +3 -3
- kimi_cli/ui/shell/setup.py +5 -5
- kimi_cli/ui/shell/update.py +2 -2
- kimi_cli/ui/shell/visualize.py +10 -7
- kimi_cli/utils/changelog.py +3 -1
- kimi_cli/wire/__init__.py +57 -0
- kimi_cli/{soul/wire.py → wire/message.py} +4 -39
- {kimi_cli-0.40.dist-info → kimi_cli-0.41.dist-info}/METADATA +34 -1
- kimi_cli-0.41.dist-info/RECORD +85 -0
- kimi_cli-0.41.dist-info/entry_points.txt +3 -0
- kimi_cli/agent.py +0 -261
- kimi_cli/utils/provider.py +0 -70
- kimi_cli-0.40.dist-info/RECORD +0 -81
- kimi_cli-0.40.dist-info/entry_points.txt +0 -3
- {kimi_cli-0.40.dist-info → kimi_cli-0.41.dist-info}/WHEEL +0 -0
kimi_cli/agent.py
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
import inspect
|
|
3
|
-
import string
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any, NamedTuple
|
|
6
|
-
|
|
7
|
-
import fastmcp
|
|
8
|
-
import yaml
|
|
9
|
-
from kosong.tooling import Toolset
|
|
10
|
-
from kosong.tooling.simple import ToolType
|
|
11
|
-
from pydantic import BaseModel, Field
|
|
12
|
-
|
|
13
|
-
from kimi_cli.config import Config
|
|
14
|
-
from kimi_cli.llm import LLM
|
|
15
|
-
from kimi_cli.metadata import Session
|
|
16
|
-
from kimi_cli.soul.approval import Approval
|
|
17
|
-
from kimi_cli.soul.denwarenji import DenwaRenji
|
|
18
|
-
from kimi_cli.soul.toolset import CustomToolset
|
|
19
|
-
from kimi_cli.tools.mcp import MCPTool
|
|
20
|
-
from kimi_cli.utils.logging import logger
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class AgentSpec(BaseModel):
|
|
24
|
-
"""Agent specification."""
|
|
25
|
-
|
|
26
|
-
extend: str | None = Field(default=None, description="Agent file to extend")
|
|
27
|
-
name: str | None = Field(default=None, description="Agent name") # required
|
|
28
|
-
system_prompt_path: Path | None = Field(
|
|
29
|
-
default=None, description="System prompt path"
|
|
30
|
-
) # required
|
|
31
|
-
system_prompt_args: dict[str, str] = Field(
|
|
32
|
-
default_factory=dict, description="System prompt arguments"
|
|
33
|
-
)
|
|
34
|
-
tools: list[str] | None = Field(default=None, description="Tools") # required
|
|
35
|
-
exclude_tools: list[str] | None = Field(default=None, description="Tools to exclude")
|
|
36
|
-
subagents: dict[str, "SubagentSpec"] | None = Field(default=None, description="Subagents")
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class SubagentSpec(BaseModel):
|
|
40
|
-
"""Subagent specification."""
|
|
41
|
-
|
|
42
|
-
path: Path = Field(description="Subagent file path")
|
|
43
|
-
description: str = Field(description="Subagent description")
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class BuiltinSystemPromptArgs(NamedTuple):
|
|
47
|
-
"""Builtin system prompt arguments."""
|
|
48
|
-
|
|
49
|
-
KIMI_NOW: str
|
|
50
|
-
"""The current datetime."""
|
|
51
|
-
KIMI_WORK_DIR: Path
|
|
52
|
-
"""The current working directory."""
|
|
53
|
-
KIMI_WORK_DIR_LS: str
|
|
54
|
-
"""The `ls -la` output of current working directory."""
|
|
55
|
-
KIMI_AGENTS_MD: str # TODO: move to first message from system prompt
|
|
56
|
-
"""The content of AGENTS.md."""
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class AgentGlobals(NamedTuple):
|
|
60
|
-
"""Agent globals."""
|
|
61
|
-
|
|
62
|
-
config: Config
|
|
63
|
-
llm: LLM | None
|
|
64
|
-
builtin_args: BuiltinSystemPromptArgs
|
|
65
|
-
denwa_renji: DenwaRenji
|
|
66
|
-
session: Session
|
|
67
|
-
approval: Approval
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
class Agent(NamedTuple):
|
|
71
|
-
"""The loaded agent."""
|
|
72
|
-
|
|
73
|
-
name: str
|
|
74
|
-
system_prompt: str
|
|
75
|
-
toolset: Toolset
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
def get_agents_dir() -> Path:
|
|
79
|
-
return Path(__file__).parent / "agents"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
DEFAULT_AGENT_FILE = get_agents_dir() / "koder" / "agent.yaml"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
async def load_agent_with_mcp(
|
|
86
|
-
agent_file: Path,
|
|
87
|
-
globals_: AgentGlobals,
|
|
88
|
-
mcp_configs: list[dict[str, Any]],
|
|
89
|
-
) -> Agent:
|
|
90
|
-
agent = load_agent(agent_file, globals_)
|
|
91
|
-
assert isinstance(agent.toolset, CustomToolset)
|
|
92
|
-
if mcp_configs:
|
|
93
|
-
await _load_mcp_tools(agent.toolset, mcp_configs)
|
|
94
|
-
return agent
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def load_agent(
|
|
98
|
-
agent_file: Path,
|
|
99
|
-
globals_: AgentGlobals,
|
|
100
|
-
) -> Agent:
|
|
101
|
-
"""
|
|
102
|
-
Load agent from specification file.
|
|
103
|
-
|
|
104
|
-
Raises:
|
|
105
|
-
ValueError: If the agent spec is not valid.
|
|
106
|
-
"""
|
|
107
|
-
agent_spec = _load_agent_spec(agent_file)
|
|
108
|
-
assert agent_spec.extend is None, "agent extension should be recursively resolved"
|
|
109
|
-
if agent_spec.name is None:
|
|
110
|
-
raise ValueError("Agent name is required")
|
|
111
|
-
if agent_spec.system_prompt_path is None:
|
|
112
|
-
raise ValueError("System prompt path is required")
|
|
113
|
-
if agent_spec.tools is None:
|
|
114
|
-
raise ValueError("Tools are required")
|
|
115
|
-
|
|
116
|
-
system_prompt = _load_system_prompt(
|
|
117
|
-
agent_spec.system_prompt_path, agent_spec.system_prompt_args, globals_.builtin_args
|
|
118
|
-
)
|
|
119
|
-
|
|
120
|
-
tool_deps = {
|
|
121
|
-
AgentSpec: agent_spec,
|
|
122
|
-
AgentGlobals: globals_,
|
|
123
|
-
Config: globals_.config,
|
|
124
|
-
BuiltinSystemPromptArgs: globals_.builtin_args,
|
|
125
|
-
Session: globals_.session,
|
|
126
|
-
DenwaRenji: globals_.denwa_renji,
|
|
127
|
-
Approval: globals_.approval,
|
|
128
|
-
}
|
|
129
|
-
tools = agent_spec.tools
|
|
130
|
-
if agent_spec.exclude_tools:
|
|
131
|
-
logger.debug("Excluding tools: {tools}", tools=agent_spec.exclude_tools)
|
|
132
|
-
tools = [tool for tool in tools if tool not in agent_spec.exclude_tools]
|
|
133
|
-
toolset = CustomToolset()
|
|
134
|
-
bad_tools = _load_tools(toolset, tools, tool_deps)
|
|
135
|
-
if bad_tools:
|
|
136
|
-
raise ValueError(f"Invalid tools: {bad_tools}")
|
|
137
|
-
|
|
138
|
-
return Agent(
|
|
139
|
-
name=agent_spec.name,
|
|
140
|
-
system_prompt=system_prompt,
|
|
141
|
-
toolset=toolset,
|
|
142
|
-
)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
def _load_agent_spec(agent_file: Path) -> AgentSpec:
|
|
146
|
-
assert agent_file.is_file(), "expect agent file to exist"
|
|
147
|
-
with open(agent_file, encoding="utf-8") as f:
|
|
148
|
-
data: dict[str, Any] = yaml.safe_load(f)
|
|
149
|
-
|
|
150
|
-
version = data.get("version", 1)
|
|
151
|
-
if version != 1:
|
|
152
|
-
raise ValueError(f"Unsupported agent spec version: {version}")
|
|
153
|
-
|
|
154
|
-
agent_spec = AgentSpec(**data.get("agent", {}))
|
|
155
|
-
if agent_spec.system_prompt_path is not None:
|
|
156
|
-
agent_spec.system_prompt_path = agent_file.parent / agent_spec.system_prompt_path
|
|
157
|
-
if agent_spec.subagents is not None:
|
|
158
|
-
for v in agent_spec.subagents.values():
|
|
159
|
-
v.path = agent_file.parent / v.path
|
|
160
|
-
if agent_spec.extend:
|
|
161
|
-
if agent_spec.extend == "default":
|
|
162
|
-
base_agent_file = DEFAULT_AGENT_FILE
|
|
163
|
-
else:
|
|
164
|
-
base_agent_file = agent_file.parent / agent_spec.extend
|
|
165
|
-
base_agent_spec = _load_agent_spec(base_agent_file)
|
|
166
|
-
if agent_spec.name is not None:
|
|
167
|
-
base_agent_spec.name = agent_spec.name
|
|
168
|
-
if agent_spec.system_prompt_path is not None:
|
|
169
|
-
base_agent_spec.system_prompt_path = agent_spec.system_prompt_path
|
|
170
|
-
for k, v in agent_spec.system_prompt_args.items():
|
|
171
|
-
base_agent_spec.system_prompt_args[k] = v
|
|
172
|
-
if agent_spec.tools is not None:
|
|
173
|
-
base_agent_spec.tools = agent_spec.tools
|
|
174
|
-
if agent_spec.exclude_tools is not None:
|
|
175
|
-
base_agent_spec.exclude_tools = agent_spec.exclude_tools
|
|
176
|
-
if agent_spec.subagents is not None:
|
|
177
|
-
base_agent_spec.subagents = agent_spec.subagents
|
|
178
|
-
agent_spec = base_agent_spec
|
|
179
|
-
return agent_spec
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
def _load_system_prompt(
|
|
183
|
-
path: Path, args: dict[str, str], builtin_args: BuiltinSystemPromptArgs
|
|
184
|
-
) -> str:
|
|
185
|
-
system_prompt = path.read_text().strip()
|
|
186
|
-
logger.debug(
|
|
187
|
-
"Substituting system prompt with builtin args: {builtin_args}, spec args: {spec_args}",
|
|
188
|
-
builtin_args=builtin_args,
|
|
189
|
-
spec_args=args,
|
|
190
|
-
)
|
|
191
|
-
return string.Template(system_prompt).substitute(builtin_args._asdict(), **args)
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
def _load_tools(
|
|
195
|
-
toolset: CustomToolset,
|
|
196
|
-
tool_paths: list[str],
|
|
197
|
-
dependencies: dict[type[Any], Any],
|
|
198
|
-
) -> list[str]:
|
|
199
|
-
bad_tools = []
|
|
200
|
-
for tool_path in tool_paths:
|
|
201
|
-
tool = _load_tool(tool_path, dependencies)
|
|
202
|
-
if tool:
|
|
203
|
-
toolset += tool
|
|
204
|
-
else:
|
|
205
|
-
bad_tools.append(tool_path)
|
|
206
|
-
logger.debug("Loaded tools: {tools}", tools=toolset.tools)
|
|
207
|
-
if bad_tools:
|
|
208
|
-
logger.error("Bad tools: {bad_tools}", bad_tools=bad_tools)
|
|
209
|
-
return bad_tools
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
def _load_tool(tool_path: str, dependencies: dict[type[Any], Any]) -> ToolType | None:
|
|
213
|
-
logger.debug("Loading tool: {tool_path}", tool_path=tool_path)
|
|
214
|
-
module_name, class_name = tool_path.rsplit(":", 1)
|
|
215
|
-
try:
|
|
216
|
-
module = importlib.import_module(module_name)
|
|
217
|
-
except ImportError:
|
|
218
|
-
return None
|
|
219
|
-
cls = getattr(module, class_name, None)
|
|
220
|
-
if cls is None:
|
|
221
|
-
return None
|
|
222
|
-
args = []
|
|
223
|
-
for param in inspect.signature(cls).parameters.values():
|
|
224
|
-
if param.kind == inspect.Parameter.KEYWORD_ONLY:
|
|
225
|
-
# once we encounter a keyword-only parameter, we stop injecting dependencies
|
|
226
|
-
break
|
|
227
|
-
# all positional parameters should be dependencies to be injected
|
|
228
|
-
if param.annotation not in dependencies:
|
|
229
|
-
raise ValueError(f"Tool dependency not found: {param.annotation}")
|
|
230
|
-
args.append(dependencies[param.annotation])
|
|
231
|
-
return cls(*args)
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
async def _load_mcp_tools(
|
|
235
|
-
toolset: CustomToolset,
|
|
236
|
-
mcp_configs: list[dict[str, Any]],
|
|
237
|
-
):
|
|
238
|
-
"""
|
|
239
|
-
Raises:
|
|
240
|
-
ValueError: If the MCP config is not valid.
|
|
241
|
-
RuntimeError: If the MCP server cannot be connected.
|
|
242
|
-
"""
|
|
243
|
-
for mcp_config in mcp_configs:
|
|
244
|
-
client = fastmcp.Client(mcp_config)
|
|
245
|
-
async with client:
|
|
246
|
-
for tool in await client.list_tools():
|
|
247
|
-
toolset += MCPTool(tool, client)
|
|
248
|
-
return toolset
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
def load_agents_md(work_dir: Path) -> str | None:
|
|
252
|
-
paths = [
|
|
253
|
-
work_dir / "AGENTS.md",
|
|
254
|
-
work_dir / "agents.md",
|
|
255
|
-
]
|
|
256
|
-
for path in paths:
|
|
257
|
-
if path.is_file():
|
|
258
|
-
logger.debug("Loaded agents.md: {path}", path=path)
|
|
259
|
-
return path.read_text().strip()
|
|
260
|
-
logger.debug("No AGENTS.md found")
|
|
261
|
-
return None
|
kimi_cli/utils/provider.py
DELETED
|
@@ -1,70 +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(
|
|
33
|
-
provider: LLMProvider,
|
|
34
|
-
model: LLMModel,
|
|
35
|
-
*,
|
|
36
|
-
stream: bool = True,
|
|
37
|
-
session_id: str | None = None,
|
|
38
|
-
) -> LLM:
|
|
39
|
-
match provider.type:
|
|
40
|
-
case "kimi":
|
|
41
|
-
chat_provider = Kimi(
|
|
42
|
-
model=model.model,
|
|
43
|
-
base_url=provider.base_url,
|
|
44
|
-
api_key=provider.api_key.get_secret_value(),
|
|
45
|
-
stream=stream,
|
|
46
|
-
default_headers={
|
|
47
|
-
"User-Agent": kimi_cli.USER_AGENT,
|
|
48
|
-
},
|
|
49
|
-
)
|
|
50
|
-
if session_id:
|
|
51
|
-
chat_provider = chat_provider.with_generation_kwargs(prompt_cache_key=session_id)
|
|
52
|
-
case "openai_legacy":
|
|
53
|
-
chat_provider = OpenAILegacy(
|
|
54
|
-
model=model.model,
|
|
55
|
-
base_url=provider.base_url,
|
|
56
|
-
api_key=provider.api_key.get_secret_value(),
|
|
57
|
-
stream=stream,
|
|
58
|
-
)
|
|
59
|
-
case "_chaos":
|
|
60
|
-
chat_provider = ChaosChatProvider(
|
|
61
|
-
model=model.model,
|
|
62
|
-
base_url=provider.base_url,
|
|
63
|
-
api_key=provider.api_key.get_secret_value(),
|
|
64
|
-
chaos_config=ChaosConfig(
|
|
65
|
-
error_probability=0.8,
|
|
66
|
-
error_types=[429, 500, 503],
|
|
67
|
-
),
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
return LLM(chat_provider=chat_provider, max_context_size=model.max_context_size)
|
kimi_cli-0.40.dist-info/RECORD
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
kimi_cli/CHANGELOG.md,sha256=aa5908bc14e277c574a399bbb47d636fd5a019e26a748c7015db35cc08fc74a0,7377
|
|
2
|
-
kimi_cli/__init__.py,sha256=80ff28778a1d9c1ee9d43be6f4e673fda3b44a0ec1aadc272cb859776f152f0a,11390
|
|
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/__init__.py,sha256=56bee1833b9555c71f50d0def3de7fb6d78e018826d925686ce9295815edb666,142
|
|
12
|
-
kimi_cli/prompts/compact.md,sha256=6655bd7d8270b24d8f97b51ef7c471cf71d686c56f8ec9a5cc9e47caa3aae87c,1877
|
|
13
|
-
kimi_cli/prompts/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=058102a5dfaa73fab1f78e3e3f9d1a039a47410e197fef6a4482f2b2531b98b0,1561
|
|
17
|
-
kimi_cli/soul/approval.py,sha256=1887c44b9e16a30a9ad9418931e25216c4273080d4259b43118110187c346ba7,2549
|
|
18
|
-
kimi_cli/soul/compaction.py,sha256=967912406798835b1eb91465e82384560b24fe9cfe3d95e6400909919a286d0d,3544
|
|
19
|
-
kimi_cli/soul/context.py,sha256=541759a65f8f87a3424a6da160ffb2043046e6f6b714124d94d82a77635df9bc,5855
|
|
20
|
-
kimi_cli/soul/denwarenji.py,sha256=66b95f052a1fa844e2347972d34e1916a7be24d3e493701b451f5380b0375c9f,1384
|
|
21
|
-
kimi_cli/soul/kimisoul.py,sha256=423e2ec32afb8e04f84114c74244f47e4860f609ab2c64c4d9239dd08f41d249,11793
|
|
22
|
-
kimi_cli/soul/message.py,sha256=b0fce0a0901fad38f2778b85f82427d4a42906891893a643e537a9268eb6e190,2529
|
|
23
|
-
kimi_cli/soul/toolset.py,sha256=60166d89ef0efac690fa6866e88afe70fbe80ad862ba2524d70ddf657a730d14,744
|
|
24
|
-
kimi_cli/soul/wire.py,sha256=c69a1e45c584b8a43eddf2230f38b414ce7ffb5b43ad18ff822e0cb36e1b42a6,3367
|
|
25
|
-
kimi_cli/tools/__init__.py,sha256=4d612402814eede7182e0a55e7dd21c4532b5dd44700dc744763a8308c2f74f8,3280
|
|
26
|
-
kimi_cli/tools/bash/__init__.py,sha256=de21b19c714bda53f6c89e3348c4c82fb4278040130fed1d261b3ab203054e8c,3028
|
|
27
|
-
kimi_cli/tools/bash/bash.md,sha256=5d9cc54b3718097951340b0a737c8e1fa308341fd2c4ebd121be94de31dd5f73,2348
|
|
28
|
-
kimi_cli/tools/dmail/__init__.py,sha256=76b2175bc4acd307db0f761b995a9c2cd8ac12f25296fab14707adb9a1baa13b,1261
|
|
29
|
-
kimi_cli/tools/dmail/dmail.md,sha256=0d18cae387dd52127ddc99e296253c09e68ccba5f343153c0adbe77d7586e759,1912
|
|
30
|
-
kimi_cli/tools/file/__init__.py,sha256=1516fb4c71097f9c14b605e7b9a1872af8786bdcb48323d1fa83bb1419436abb,546
|
|
31
|
-
kimi_cli/tools/file/glob.md,sha256=6aab77c357c203fb2d5cc2092375ce860941e3f7343b59e6ef264f42255163fa,1401
|
|
32
|
-
kimi_cli/tools/file/glob.py,sha256=fabd6fbc1480a52d07c5ff3d570e3fb86d455438e97a9970dc44a0e7ff434101,5405
|
|
33
|
-
kimi_cli/tools/file/grep.md,sha256=12353db42cf3b5d9d91ac7c0f0b9c2a732e8b050c23a78f4e668db823cca4d50,245
|
|
34
|
-
kimi_cli/tools/file/grep.py,sha256=b882ffc19cd57f70d8a898abeb5854ff297b4777e64c0cd529688134dba7dd53,9771
|
|
35
|
-
kimi_cli/tools/file/patch.md,sha256=f9edbed6c6a03bf7448a51acc1f42622395fd7f1674a814e9a3b2302d3b7b92e,404
|
|
36
|
-
kimi_cli/tools/file/patch.py,sha256=09e0a6905e27246d83595557dd8867f53a68b158854cdb3b0b8cd23c255a1926,5205
|
|
37
|
-
kimi_cli/tools/file/read.md,sha256=4c2d83e557daadc0612fb1a613e252b2c8e4df7ae57e6db094e9e75e994cb23b,1066
|
|
38
|
-
kimi_cli/tools/file/read.py,sha256=c1824f0e7a56a065808414580663ba4363fcef0d374ba5ea2e8848ac411b5a5d,5061
|
|
39
|
-
kimi_cli/tools/file/replace.md,sha256=f429f263fa580f2f6107907a33ba8800dcdbd4fc1d9ff8dc4f858bd76ec6bbc6,267
|
|
40
|
-
kimi_cli/tools/file/replace.py,sha256=37582cd51534f6b35c08144ec6558906545140512172e204e6b5937e423adbbe,5181
|
|
41
|
-
kimi_cli/tools/file/write.md,sha256=f37b0f4742da57797ec4dd29fbd4fdc9b6617c6be644724a3b16d651c6129cec,324
|
|
42
|
-
kimi_cli/tools/file/write.py,sha256=6c3b04b31422f95ac06ba4afddf3899ed1c635119082dea57d6ef7315b2e0cd8,4355
|
|
43
|
-
kimi_cli/tools/mcp.py,sha256=12f63c9ee5b82a5b0f23daca0b5ce4ceb3a6190ce5b553ee24e499699521e426,3620
|
|
44
|
-
kimi_cli/tools/task/__init__.py,sha256=82b1d73280ba3b616c2a0b3432a854e08786289002abc8233f3186b8f3bcd94f,5915
|
|
45
|
-
kimi_cli/tools/task/task.md,sha256=eaac7458676271423e53862bb27906ed8df3b86c767abd69e28a5d52f9eecdbf,2280
|
|
46
|
-
kimi_cli/tools/test.py,sha256=c094a91a2d1a5259e192f1147facd5eebd5e5c413787fce167db90e4b41b5119,1442
|
|
47
|
-
kimi_cli/tools/think/__init__.py,sha256=31b06088e2404cb09d42e0acec97c185e4861890bb687f28b41f39cea01b5733,603
|
|
48
|
-
kimi_cli/tools/think/think.md,sha256=ab40d4de1d8adb208384a4ab548e35776283cb0a681c6e208b041fc40ccba724,200
|
|
49
|
-
kimi_cli/tools/todo/__init__.py,sha256=a21948c8635c42743e99651297ba20430c82e75a5f862e1952143987811ac009,881
|
|
50
|
-
kimi_cli/tools/todo/set_todo_list.md,sha256=89509503f43ab321d440a04dc133ddc3e29859f68907a42c39e6093f7bfd485c,1654
|
|
51
|
-
kimi_cli/tools/utils.py,sha256=5331f57c95df817285a5a1ea2921bee3b0bcabf6fc50eb4abcb6587839323443,4580
|
|
52
|
-
kimi_cli/tools/web/__init__.py,sha256=e13108c598828a8a05907a7a821e7ac92f5d63572bb9866dc12ca026094acb42,95
|
|
53
|
-
kimi_cli/tools/web/fetch.md,sha256=56d00bd93b4e379c4f7efe445fce963eb26b8d20f85d4c19097ba6f33bd0019a,67
|
|
54
|
-
kimi_cli/tools/web/fetch.py,sha256=66448121d27d67f75b977c32244c721c2ccff1b2e097c2fe6717e66018d8f747,3183
|
|
55
|
-
kimi_cli/tools/web/search.md,sha256=24049f9e90d37083e0fc78b8b2e3a5f6fadf09bea00f36712b235d1212a2f532,146
|
|
56
|
-
kimi_cli/tools/web/search.py,sha256=a89da8d843cca1a18855157832b3c08f38a4216f42e616691f856265de3b3b8a,4331
|
|
57
|
-
kimi_cli/ui/__init__.py,sha256=127928de433021e42fdaab56188457896283cd5e188c7c0f21c2eb718e040495,2386
|
|
58
|
-
kimi_cli/ui/acp/__init__.py,sha256=e5a93c3bbbb919fae41cedd829dbe1363ebcb56feb6413c47071692876007d52,17349
|
|
59
|
-
kimi_cli/ui/print/__init__.py,sha256=9ea2933a00959eb19a07ed1abb3d1aff0d3dc3ee7e393271125fe210a085ecc5,6734
|
|
60
|
-
kimi_cli/ui/shell/__init__.py,sha256=fe608006829c88255d8ee040e2f0823e4d4a4cafea716ad7e35f23db0cdacc4e,10808
|
|
61
|
-
kimi_cli/ui/shell/console.py,sha256=bcbf7efd214cba3d2259f2a2c1842250cde96d49e4f9f1e0b60273cf1c366be3,842
|
|
62
|
-
kimi_cli/ui/shell/debug.py,sha256=cd4e7259c83f099b5c6519713be5306580f30d3fa4944e07916d4468e960c9c7,5562
|
|
63
|
-
kimi_cli/ui/shell/keyboard.py,sha256=8735c00363484263681adf885baec824e5f76cb4084bd024651e80190926edc5,3035
|
|
64
|
-
kimi_cli/ui/shell/liveview.py,sha256=627cdb2110586eac7ee595030633d019e19753c71cb6d57b618193535ad69054,14236
|
|
65
|
-
kimi_cli/ui/shell/metacmd.py,sha256=bb24538dbe451b14427697691275ec7d6ffd2e4a724cdc2f43b726ea7d71d744,7778
|
|
66
|
-
kimi_cli/ui/shell/prompt.py,sha256=f85446d77b998e2594380c29000b06614e3fae8537db46ec96fc5ddc25490b45,19096
|
|
67
|
-
kimi_cli/ui/shell/setup.py,sha256=12417d704b6698b0bcd4cdb99782552aea70bfb4be86a481f7fd2636f18c0d74,5333
|
|
68
|
-
kimi_cli/ui/shell/update.py,sha256=f7662e1728d41c3cf58e57068e6c662c1ddbbd7d455288413ca71214fd27b0ae,7317
|
|
69
|
-
kimi_cli/ui/shell/visualize.py,sha256=322242fe41741a477474b672cfd83b8f10cffc96093ff1007c27354c55e1ce85,4242
|
|
70
|
-
kimi_cli/utils/aiohttp.py,sha256=f8f61e3beaf6439e949c33c3a10db3035bf88136e882b09c858ea92a4c888e00,245
|
|
71
|
-
kimi_cli/utils/changelog.py,sha256=9d9ae05f32e90a53d40626fca437b9a10e8bec5b3e63e9348135969dcab4380e,3380
|
|
72
|
-
kimi_cli/utils/logging.py,sha256=129298ac214ecd8d913c3431cc05d754f9c4c8c4042c458618bf9e8ddebdb763,399
|
|
73
|
-
kimi_cli/utils/message.py,sha256=ca8f8d3c7dc6d4fce938d1cfe8a7a7343e39ce1e2f0c7b2d76d838edc7d9f187,304
|
|
74
|
-
kimi_cli/utils/path.py,sha256=fdd4fc08999ddc7c610f884b4ba8d27932248b9ed06b5eb4139519edd00b3f75,687
|
|
75
|
-
kimi_cli/utils/provider.py,sha256=4e4facd7661b62331a8ded0cfaf588e238f7561979b3735d48de691c895aea29,2466
|
|
76
|
-
kimi_cli/utils/pyinstaller.py,sha256=e5d709d0490ef8645bbed2d2363920c59f25bd17c04f471bf4a8c0fa2ebe1801,581
|
|
77
|
-
kimi_cli/utils/string.py,sha256=f8a842ee014b9023d4045392f33ca6f576f5238ad3d40cb6df071a3ce9f5ed9c,365
|
|
78
|
-
kimi_cli-0.40.dist-info/WHEEL,sha256=70ab3c2925fe316809860cb034f99ba13c4b49819b339959274aab755cc084a8,78
|
|
79
|
-
kimi_cli-0.40.dist-info/entry_points.txt,sha256=d5b0f8ebf823d7590e90bf9511c8ab13f73db97cba1e1fc88585d8d7b415bcc2,40
|
|
80
|
-
kimi_cli-0.40.dist-info/METADATA,sha256=0811034c3b634ace135a22555bc207ee44ba958c8b31f6684200558e25f744db,4150
|
|
81
|
-
kimi_cli-0.40.dist-info/RECORD,,
|
|
File without changes
|