kimi-cli 0.39__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 +23 -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 +2 -4
- kimi_cli/soul/compaction.py +10 -10
- kimi_cli/soul/context.py +5 -0
- kimi_cli/soul/globals.py +92 -0
- kimi_cli/soul/kimisoul.py +26 -30
- kimi_cli/soul/message.py +5 -5
- kimi_cli/tools/bash/__init__.py +2 -2
- 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 +3 -2
- 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/fetch.py +2 -1
- kimi_cli/tools/web/search.py +4 -4
- 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 +9 -15
- kimi_cli/ui/shell/liveview.py +13 -4
- kimi_cli/ui/shell/metacmd.py +3 -3
- kimi_cli/ui/shell/setup.py +7 -6
- kimi_cli/ui/shell/update.py +4 -3
- kimi_cli/ui/shell/visualize.py +18 -9
- kimi_cli/utils/aiohttp.py +10 -0
- 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.39.dist-info → kimi_cli-0.41.dist-info}/METADATA +35 -2
- 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 -72
- kimi_cli-0.39.dist-info/RECORD +0 -80
- kimi_cli-0.39.dist-info/entry_points.txt +0 -3
- {kimi_cli-0.39.dist-info → kimi_cli-0.41.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
kimi_cli/CHANGELOG.md,sha256=123552f382ba5832f923e1c03878e563423d92a7ff5f9a55014686e069e7056c,7648
|
|
2
|
+
kimi_cli/__init__.py,sha256=17c8048d23b3d27c3c4645ebc541d14bd2e42071db6d6df5abee06a7256d7541,4249
|
|
3
|
+
kimi_cli/agents/koder/README.md,sha256=2d9a987110652915cd1a4356caec3eef9380479ce36906c377a1ed177d46690f,96
|
|
4
|
+
kimi_cli/agents/koder/agent.yaml,sha256=f1c5c585e8e0a52419c820d56a4aa928eebdf7bb21f0907d6c02d4ea1c8909d7,709
|
|
5
|
+
kimi_cli/agents/koder/sub.yaml,sha256=e0c1ea34fdb04b0d6dc635709f0f130aff25d7f9fb97e238470143c8145be251,634
|
|
6
|
+
kimi_cli/agents/koder/system.md,sha256=1d8fd4956b2442215396b5e9651771c9da8f9505ccbd3b6d5e91b1ac4ff35418,5001
|
|
7
|
+
kimi_cli/agentspec.py,sha256=fc5d180fe27a50a7d1b616c2ee6cffb823f8d9990f724250110c2d489b89ae9b,3973
|
|
8
|
+
kimi_cli/cli.py,sha256=6e1de173cd73c6d49f8922dd07fc4f177bcfe038416c3fe3e7d464759f7dd50d,6229
|
|
9
|
+
kimi_cli/config.py,sha256=37dd65f2aa03c051dc92d09d9c110361ee35bb8dc94eced2c1e8bf01e3918353,4157
|
|
10
|
+
kimi_cli/constant.py,sha256=78e25b9304cca7b6f70bb08bf0e1fee4b066297a05386e56dd6935ba42027cd9,110
|
|
11
|
+
kimi_cli/llm.py,sha256=4c807741b6073fc18533baf6025f2351035690e94d7993dc9e3ef9a1050e7022,2668
|
|
12
|
+
kimi_cli/metadata.py,sha256=70c01da57529a9f585c0c5f3dd642f92ef16c4e49a107d8da838fa6d4746546a,3933
|
|
13
|
+
kimi_cli/prompts/__init__.py,sha256=6dc5ed2d841f145c09550075f30853cdc51f00d2f5d9aa1097f8edea770536e7,174
|
|
14
|
+
kimi_cli/prompts/compact.md,sha256=6655bd7d8270b24d8f97b51ef7c471cf71d686c56f8ec9a5cc9e47caa3aae87c,1877
|
|
15
|
+
kimi_cli/prompts/init.md,sha256=d271a0df6dd7b330ffec4f645a74c0392dafc1b3bfc1e3f2a77624e96cf6abbe,1380
|
|
16
|
+
kimi_cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
17
|
+
kimi_cli/share.py,sha256=4292df7f44177419c45c772a933b5f36e2b7533f8cef9842629a438bc7856dc0,204
|
|
18
|
+
kimi_cli/soul/__init__.py,sha256=c1c09bb719c46db8d95873e4ef9856cbef92f54035829749c779ab0fad3dfc50,4702
|
|
19
|
+
kimi_cli/soul/agent.py,sha256=cc9ae5b903f7048372fe15833ac95ab9b694eefb0b97981321f51be5fe247560,4942
|
|
20
|
+
kimi_cli/soul/approval.py,sha256=48cd230dff81dfd70bd85f1ad2b99604d5569cf617a4c79c444f9772bbc89ce6,2552
|
|
21
|
+
kimi_cli/soul/compaction.py,sha256=dab17979060fceeed4a7a344373833022dc7abac04282364f2a1b20e6edd4581,3558
|
|
22
|
+
kimi_cli/soul/context.py,sha256=5536c54186ca3df22ad33007e37588228fd1097f0cb8aab68b634433e8cd0ad6,5993
|
|
23
|
+
kimi_cli/soul/denwarenji.py,sha256=66b95f052a1fa844e2347972d34e1916a7be24d3e493701b451f5380b0375c9f,1384
|
|
24
|
+
kimi_cli/soul/globals.py,sha256=fe85cfb616671c06f4b9eb9fcbef78929169e18d26a6abb3c6d3efd686593c97,2638
|
|
25
|
+
kimi_cli/soul/kimisoul.py,sha256=44fa91ff54902adc142588c4168a7919ea342759c5e5412cae660fac07802984,11658
|
|
26
|
+
kimi_cli/soul/message.py,sha256=b0fce0a0901fad38f2778b85f82427d4a42906891893a643e537a9268eb6e190,2529
|
|
27
|
+
kimi_cli/soul/toolset.py,sha256=60166d89ef0efac690fa6866e88afe70fbe80ad862ba2524d70ddf657a730d14,744
|
|
28
|
+
kimi_cli/tools/__init__.py,sha256=4d612402814eede7182e0a55e7dd21c4532b5dd44700dc744763a8308c2f74f8,3280
|
|
29
|
+
kimi_cli/tools/bash/__init__.py,sha256=de21b19c714bda53f6c89e3348c4c82fb4278040130fed1d261b3ab203054e8c,3028
|
|
30
|
+
kimi_cli/tools/bash/bash.md,sha256=5d9cc54b3718097951340b0a737c8e1fa308341fd2c4ebd121be94de31dd5f73,2348
|
|
31
|
+
kimi_cli/tools/dmail/__init__.py,sha256=a9186ed4e52c34cab7516060bb6edca73324912233b1581c0d3a40b026400133,1277
|
|
32
|
+
kimi_cli/tools/dmail/dmail.md,sha256=0d18cae387dd52127ddc99e296253c09e68ccba5f343153c0adbe77d7586e759,1912
|
|
33
|
+
kimi_cli/tools/file/__init__.py,sha256=1516fb4c71097f9c14b605e7b9a1872af8786bdcb48323d1fa83bb1419436abb,546
|
|
34
|
+
kimi_cli/tools/file/glob.md,sha256=11fbfaf6033f57b69c6f91077ddd90505036937cd7217600d96992b9a48b7ca7,1400
|
|
35
|
+
kimi_cli/tools/file/glob.py,sha256=24f52f61e0c9dff7eb2e8138238de365d17f90dfff6555b27e741bf5f7bc43a6,5413
|
|
36
|
+
kimi_cli/tools/file/grep.md,sha256=12353db42cf3b5d9d91ac7c0f0b9c2a732e8b050c23a78f4e668db823cca4d50,245
|
|
37
|
+
kimi_cli/tools/file/grep.py,sha256=01794320049b46207aeb28bd7f3dbea373ede891916107cab871ea959e81a335,9787
|
|
38
|
+
kimi_cli/tools/file/patch.md,sha256=f9edbed6c6a03bf7448a51acc1f42622395fd7f1674a814e9a3b2302d3b7b92e,404
|
|
39
|
+
kimi_cli/tools/file/patch.py,sha256=022262263a062bbc3418c132588b5c1e039a0e6c3572af5389193b5aea235027,5228
|
|
40
|
+
kimi_cli/tools/file/read.md,sha256=4c2d83e557daadc0612fb1a613e252b2c8e4df7ae57e6db094e9e75e994cb23b,1066
|
|
41
|
+
kimi_cli/tools/file/read.py,sha256=5d452270c9e0e668276cc3dfad56d5b26c8431a8b0d9b97d0d4484c8e62b5faa,5068
|
|
42
|
+
kimi_cli/tools/file/replace.md,sha256=f429f263fa580f2f6107907a33ba8800dcdbd4fc1d9ff8dc4f858bd76ec6bbc6,267
|
|
43
|
+
kimi_cli/tools/file/replace.py,sha256=615bb2d1e4d14f5f2c3e780af69b0f69b23f4b610f451077c93d57a1ca860cf1,5204
|
|
44
|
+
kimi_cli/tools/file/write.md,sha256=f37b0f4742da57797ec4dd29fbd4fdc9b6617c6be644724a3b16d651c6129cec,324
|
|
45
|
+
kimi_cli/tools/file/write.py,sha256=9aff67ce8817adf223f9bd982c7ad5d8b13f4d33b221147ac3253035d3a2b7a7,4378
|
|
46
|
+
kimi_cli/tools/mcp.py,sha256=12f63c9ee5b82a5b0f23daca0b5ce4ceb3a6190ce5b553ee24e499699521e426,3620
|
|
47
|
+
kimi_cli/tools/task/__init__.py,sha256=e671d9ea87c811104629eaaf8a1f8e9c3c82b0294354683dba6747ea528bdbcd,6032
|
|
48
|
+
kimi_cli/tools/task/task.md,sha256=391cc3553c7d310a323626bae180dd41cb810fb1233583713ebde105f954147a,2280
|
|
49
|
+
kimi_cli/tools/test.py,sha256=c094a91a2d1a5259e192f1147facd5eebd5e5c413787fce167db90e4b41b5119,1442
|
|
50
|
+
kimi_cli/tools/think/__init__.py,sha256=31b06088e2404cb09d42e0acec97c185e4861890bb687f28b41f39cea01b5733,603
|
|
51
|
+
kimi_cli/tools/think/think.md,sha256=ab40d4de1d8adb208384a4ab548e35776283cb0a681c6e208b041fc40ccba724,200
|
|
52
|
+
kimi_cli/tools/todo/__init__.py,sha256=aa02c8afa19d9ae2ef1f6ffee147dc96732a9cb9895aa5e13fe0f9efe753fe00,897
|
|
53
|
+
kimi_cli/tools/todo/set_todo_list.md,sha256=89509503f43ab321d440a04dc133ddc3e29859f68907a42c39e6093f7bfd485c,1654
|
|
54
|
+
kimi_cli/tools/utils.py,sha256=2e00d6f04f91e05a91bfb691e547a76193063fa6769a03f7d3ff992aba9372bf,4596
|
|
55
|
+
kimi_cli/tools/web/__init__.py,sha256=e13108c598828a8a05907a7a821e7ac92f5d63572bb9866dc12ca026094acb42,95
|
|
56
|
+
kimi_cli/tools/web/fetch.md,sha256=56d00bd93b4e379c4f7efe445fce963eb26b8d20f85d4c19097ba6f33bd0019a,67
|
|
57
|
+
kimi_cli/tools/web/fetch.py,sha256=66448121d27d67f75b977c32244c721c2ccff1b2e097c2fe6717e66018d8f747,3183
|
|
58
|
+
kimi_cli/tools/web/search.md,sha256=24049f9e90d37083e0fc78b8b2e3a5f6fadf09bea00f36712b235d1212a2f532,146
|
|
59
|
+
kimi_cli/tools/web/search.py,sha256=2f72c82ed1f775db9fed2ef1ceb1a26184b745805d11f070e198a2c16668c152,4347
|
|
60
|
+
kimi_cli/ui/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
61
|
+
kimi_cli/ui/acp/__init__.py,sha256=cc8bf39f342de7661134f282369b286bb6c4571b1e0001a0cb216207a62d709c,17354
|
|
62
|
+
kimi_cli/ui/print/__init__.py,sha256=10590ec04b8d0f8d1593471c40fc96d7062854f3fbc81a6822703d8118310fd1,5730
|
|
63
|
+
kimi_cli/ui/shell/__init__.py,sha256=35e3a4a29e8610bc214a696c064746db8d19e991f014904e9ef2bd3845e63947,10708
|
|
64
|
+
kimi_cli/ui/shell/console.py,sha256=bcbf7efd214cba3d2259f2a2c1842250cde96d49e4f9f1e0b60273cf1c366be3,842
|
|
65
|
+
kimi_cli/ui/shell/debug.py,sha256=cd4e7259c83f099b5c6519713be5306580f30d3fa4944e07916d4468e960c9c7,5562
|
|
66
|
+
kimi_cli/ui/shell/keyboard.py,sha256=8735c00363484263681adf885baec824e5f76cb4084bd024651e80190926edc5,3035
|
|
67
|
+
kimi_cli/ui/shell/liveview.py,sha256=f4e6ac37c446740b5c55cf37d5ebd327b5d41334d41d5e54ad8ad15445c1a492,14239
|
|
68
|
+
kimi_cli/ui/shell/metacmd.py,sha256=69ef37801f9d5ce513717d6351966f54f363c5ce41b176e98a0fc8b71fe5a78c,7786
|
|
69
|
+
kimi_cli/ui/shell/prompt.py,sha256=f85446d77b998e2594380c29000b06614e3fae8537db46ec96fc5ddc25490b45,19096
|
|
70
|
+
kimi_cli/ui/shell/setup.py,sha256=36be348c8cdbb908f1b896f7dfd93802df4d76eeb8572d39b81a34dfd5ee2a3c,5374
|
|
71
|
+
kimi_cli/ui/shell/update.py,sha256=56dcb0bd1da82b98c22bfdddca717a2805bd8ac3e93bf23fb3b508549c41fae8,7340
|
|
72
|
+
kimi_cli/ui/shell/visualize.py,sha256=7035d53e41ae59e5df7008759ee4f14e44352cc4ac087c6b67d784a7dd51c733,4291
|
|
73
|
+
kimi_cli/utils/aiohttp.py,sha256=f8f61e3beaf6439e949c33c3a10db3035bf88136e882b09c858ea92a4c888e00,245
|
|
74
|
+
kimi_cli/utils/changelog.py,sha256=bfcf5a5a360b13648bb7a6abc83e427270caa502646b5acc950d62148510641c,3402
|
|
75
|
+
kimi_cli/utils/logging.py,sha256=129298ac214ecd8d913c3431cc05d754f9c4c8c4042c458618bf9e8ddebdb763,399
|
|
76
|
+
kimi_cli/utils/message.py,sha256=ca8f8d3c7dc6d4fce938d1cfe8a7a7343e39ce1e2f0c7b2d76d838edc7d9f187,304
|
|
77
|
+
kimi_cli/utils/path.py,sha256=fdd4fc08999ddc7c610f884b4ba8d27932248b9ed06b5eb4139519edd00b3f75,687
|
|
78
|
+
kimi_cli/utils/pyinstaller.py,sha256=e5d709d0490ef8645bbed2d2363920c59f25bd17c04f471bf4a8c0fa2ebe1801,581
|
|
79
|
+
kimi_cli/utils/string.py,sha256=f8a842ee014b9023d4045392f33ca6f576f5238ad3d40cb6df071a3ce9f5ed9c,365
|
|
80
|
+
kimi_cli/wire/__init__.py,sha256=92514141ef99c2923dacba48e7c96692d636848e3b222de7de9f696691cc1aaa,1427
|
|
81
|
+
kimi_cli/wire/message.py,sha256=72222d3f3d7228a323dbba7b1084f35018104c58e4bb2aa51d0827984791841d,2398
|
|
82
|
+
kimi_cli-0.41.dist-info/WHEEL,sha256=70ab3c2925fe316809860cb034f99ba13c4b49819b339959274aab755cc084a8,78
|
|
83
|
+
kimi_cli-0.41.dist-info/entry_points.txt,sha256=97e051756296e9db3167f6dce61d6c88e58d170314a2d63d18c84c73a5c1333b,44
|
|
84
|
+
kimi_cli-0.41.dist-info/METADATA,sha256=d3865fbce4c1bdaae5bd311dab5cca3569035d80cb65b27185d740596522c5e2,5187
|
|
85
|
+
kimi_cli-0.41.dist-info/RECORD,,
|
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,72 +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
|
-
case _:
|
|
70
|
-
raise ValueError(f"Unsupported provider: {provider.type}")
|
|
71
|
-
|
|
72
|
-
return LLM(chat_provider=chat_provider, max_context_size=model.max_context_size)
|
kimi_cli-0.39.dist-info/RECORD
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
kimi_cli/CHANGELOG.md,sha256=0ded00048bd564f13c14a98e6a8eaf8e0730c02d2ab16b997b68e383626baa0c,7178
|
|
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=3015fddcead40c00a594147e040c45a0b7f86a3f25322b2839a9e3b72944c935,2634
|
|
18
|
-
kimi_cli/soul/compaction.py,sha256=03213007626dcb7453d3c5ad08381c83d7e7feb8f8b8a434ab33dc71243512bf,3506
|
|
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=9b4b7419b03feec2aa1a7ef784bf7e67cb95409316a7031d85ad50b99ebc34f2,11749
|
|
22
|
-
kimi_cli/soul/message.py,sha256=16bbdc203c791dc50c7ebbc52d91fae801313920db1029217f30b5516ba5dbf3,2459
|
|
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=75a61d3e12481dea075229b9fe831029768b38a5575bc2eb7d6c39d71c0459da,2996
|
|
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=765a7f7c3387f05c2d47781b484c612639e1cfd3a1b77291e3613ce239e46947,9720
|
|
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=f0e00464e8c5e6fadd7a31b27eded781921bffdaa6fcbd0ca79247e71fe2e61b,3132
|
|
55
|
-
kimi_cli/tools/web/search.md,sha256=24049f9e90d37083e0fc78b8b2e3a5f6fadf09bea00f36712b235d1212a2f532,146
|
|
56
|
-
kimi_cli/tools/web/search.py,sha256=cba367a80b224c2a80e61c0c33bca6ff61c57b202a2e9f8037e221a60f05c340,4295
|
|
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=165f60912c29f5bc409a0e53efc921c04893a138a09218597f758212182ad434,10705
|
|
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=0d91dc3f851563ae514310a054b084b13fda06d33819c75b7b818d407e8a99ac,13862
|
|
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=cd87fef38b213cb6c1adba11851b0bf36059f564fe6002017bb36486446443e6,5282
|
|
68
|
-
kimi_cli/ui/shell/update.py,sha256=bc331f832d2c41d5b95f4926c4ff235ef92e70ff76d66173c354f05ee52545dd,7266
|
|
69
|
-
kimi_cli/ui/shell/visualize.py,sha256=a5ff51441e80587909e9337c293762e55be24534331c24e71539c7b166ed568b,4032
|
|
70
|
-
kimi_cli/utils/changelog.py,sha256=9d9ae05f32e90a53d40626fca437b9a10e8bec5b3e63e9348135969dcab4380e,3380
|
|
71
|
-
kimi_cli/utils/logging.py,sha256=129298ac214ecd8d913c3431cc05d754f9c4c8c4042c458618bf9e8ddebdb763,399
|
|
72
|
-
kimi_cli/utils/message.py,sha256=ca8f8d3c7dc6d4fce938d1cfe8a7a7343e39ce1e2f0c7b2d76d838edc7d9f187,304
|
|
73
|
-
kimi_cli/utils/path.py,sha256=fdd4fc08999ddc7c610f884b4ba8d27932248b9ed06b5eb4139519edd00b3f75,687
|
|
74
|
-
kimi_cli/utils/provider.py,sha256=195ae475e3f87fff81f98b2714aa3d38049dcf8194a5ba933290d0e475ba9a10,2553
|
|
75
|
-
kimi_cli/utils/pyinstaller.py,sha256=e5d709d0490ef8645bbed2d2363920c59f25bd17c04f471bf4a8c0fa2ebe1801,581
|
|
76
|
-
kimi_cli/utils/string.py,sha256=f8a842ee014b9023d4045392f33ca6f576f5238ad3d40cb6df071a3ce9f5ed9c,365
|
|
77
|
-
kimi_cli-0.39.dist-info/WHEEL,sha256=70ab3c2925fe316809860cb034f99ba13c4b49819b339959274aab755cc084a8,78
|
|
78
|
-
kimi_cli-0.39.dist-info/entry_points.txt,sha256=d5b0f8ebf823d7590e90bf9511c8ab13f73db97cba1e1fc88585d8d7b415bcc2,40
|
|
79
|
-
kimi_cli-0.39.dist-info/METADATA,sha256=ebf4fcfa32c5003f018d1cca3ba9e369ddafb65a3cc033df664e5e3c6e5200ff,4152
|
|
80
|
-
kimi_cli-0.39.dist-info/RECORD,,
|
|
File without changes
|