kimi-cli 0.40__py3-none-any.whl → 0.42__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.

Files changed (55) hide show
  1. kimi_cli/CHANGELOG.md +27 -0
  2. kimi_cli/__init__.py +127 -359
  3. kimi_cli/agents/{koder → default}/agent.yaml +1 -1
  4. kimi_cli/agents/{koder → default}/system.md +1 -1
  5. kimi_cli/agentspec.py +115 -0
  6. kimi_cli/cli.py +249 -0
  7. kimi_cli/config.py +28 -14
  8. kimi_cli/constant.py +4 -0
  9. kimi_cli/exception.py +16 -0
  10. kimi_cli/llm.py +70 -0
  11. kimi_cli/metadata.py +5 -68
  12. kimi_cli/prompts/__init__.py +2 -2
  13. kimi_cli/session.py +81 -0
  14. kimi_cli/soul/__init__.py +102 -6
  15. kimi_cli/soul/agent.py +152 -0
  16. kimi_cli/soul/approval.py +1 -1
  17. kimi_cli/soul/compaction.py +4 -4
  18. kimi_cli/soul/kimisoul.py +39 -46
  19. kimi_cli/soul/runtime.py +94 -0
  20. kimi_cli/tools/dmail/__init__.py +1 -1
  21. kimi_cli/tools/file/glob.md +1 -1
  22. kimi_cli/tools/file/glob.py +2 -2
  23. kimi_cli/tools/file/grep.py +1 -1
  24. kimi_cli/tools/file/patch.py +2 -2
  25. kimi_cli/tools/file/read.py +1 -1
  26. kimi_cli/tools/file/replace.py +2 -2
  27. kimi_cli/tools/file/write.py +2 -2
  28. kimi_cli/tools/task/__init__.py +48 -40
  29. kimi_cli/tools/task/task.md +1 -1
  30. kimi_cli/tools/todo/__init__.py +1 -1
  31. kimi_cli/tools/utils.py +1 -1
  32. kimi_cli/tools/web/search.py +5 -2
  33. kimi_cli/ui/__init__.py +0 -69
  34. kimi_cli/ui/acp/__init__.py +8 -9
  35. kimi_cli/ui/print/__init__.py +21 -37
  36. kimi_cli/ui/shell/__init__.py +8 -19
  37. kimi_cli/ui/shell/liveview.py +1 -1
  38. kimi_cli/ui/shell/metacmd.py +5 -10
  39. kimi_cli/ui/shell/prompt.py +10 -3
  40. kimi_cli/ui/shell/setup.py +5 -5
  41. kimi_cli/ui/shell/update.py +2 -2
  42. kimi_cli/ui/shell/visualize.py +10 -7
  43. kimi_cli/utils/changelog.py +3 -1
  44. kimi_cli/wire/__init__.py +69 -0
  45. kimi_cli/{soul/wire.py → wire/message.py} +4 -39
  46. {kimi_cli-0.40.dist-info → kimi_cli-0.42.dist-info}/METADATA +51 -18
  47. kimi_cli-0.42.dist-info/RECORD +86 -0
  48. kimi_cli-0.42.dist-info/entry_points.txt +3 -0
  49. kimi_cli/agent.py +0 -261
  50. kimi_cli/agents/koder/README.md +0 -3
  51. kimi_cli/utils/provider.py +0 -70
  52. kimi_cli-0.40.dist-info/RECORD +0 -81
  53. kimi_cli-0.40.dist-info/entry_points.txt +0 -3
  54. /kimi_cli/agents/{koder → default}/sub.yaml +0 -0
  55. {kimi_cli-0.40.dist-info → kimi_cli-0.42.dist-info}/WHEEL +0 -0
@@ -419,8 +419,14 @@ class CustomPromptSession:
419
419
  completion = buff.complete_state.completions[0]
420
420
  buff.apply_completion(completion)
421
421
 
422
- @_kb.add("c-k", eager=True)
423
- def _toggle_mode(event: KeyPressEvent) -> None:
422
+ @_kb.add("escape", "enter", eager=True)
423
+ @_kb.add("c-j", eager=True)
424
+ def _insert_newline(event: KeyPressEvent) -> None:
425
+ """Insert a newline when Alt-Enter or Ctrl-J is pressed."""
426
+ event.current_buffer.insert_text("\n")
427
+
428
+ @_kb.add("c-x", eager=True)
429
+ def _switch_mode(event: KeyPressEvent) -> None:
424
430
  self._mode = self._mode.toggle()
425
431
  # Apply mode-specific settings
426
432
  self._apply_mode(event)
@@ -549,7 +555,8 @@ class CustomPromptSession:
549
555
  self._current_toast = None
550
556
  else:
551
557
  shortcuts = [
552
- "ctrl-k: toggle mode",
558
+ "ctrl-x: switch mode",
559
+ "ctrl-j: newline",
553
560
  "ctrl-d: exit",
554
561
  ]
555
562
  for shortcut in shortcuts:
@@ -26,19 +26,19 @@ class _Platform(NamedTuple):
26
26
  _PLATFORMS = [
27
27
  _Platform(
28
28
  id="kimi-for-coding",
29
- name="Kimi For Coding",
29
+ name="Kimi For Coding (CN)",
30
30
  base_url="https://api.kimi.com/coding/v1",
31
31
  search_url="https://api.kimi.com/coding/v1/search",
32
32
  ),
33
33
  _Platform(
34
34
  id="moonshot-cn",
35
- name="Moonshot AI 开放平台",
35
+ name="Moonshot AI 开放平台 (moonshot.cn)",
36
36
  base_url="https://api.moonshot.cn/v1",
37
37
  allowed_models=["kimi-k2-turbo-preview", "kimi-k2-0905-preview", "kimi-k2-0711-preview"],
38
38
  ),
39
39
  _Platform(
40
40
  id="moonshot-ai",
41
- name="Moonshot AI Open Platform",
41
+ name="Moonshot AI Open Platform (moonshot.ai)",
42
42
  base_url="https://api.moonshot.ai/v1",
43
43
  allowed_models=["kimi-k2-turbo-preview", "kimi-k2-0905-preview", "kimi-k2-0711-preview"],
44
44
  ),
@@ -77,7 +77,7 @@ async def setup(app: "ShellApp", args: list[str]):
77
77
  await asyncio.sleep(1)
78
78
  console.clear()
79
79
 
80
- from kimi_cli import Reload
80
+ from kimi_cli.cli import Reload
81
81
 
82
82
  raise Reload
83
83
 
@@ -185,6 +185,6 @@ async def _prompt_text(prompt: str, *, is_password: bool = False) -> str | None:
185
185
  @meta_command
186
186
  def reload(app: "ShellApp", args: list[str]):
187
187
  """Reload configuration"""
188
- from kimi_cli import Reload
188
+ from kimi_cli.cli import Reload
189
189
 
190
190
  raise Reload
@@ -85,7 +85,7 @@ LATEST_VERSION_FILE = get_share_dir() / "latest_version.txt"
85
85
 
86
86
 
87
87
  async def _do_update(*, print: bool, check_only: bool) -> UpdateResult:
88
- from kimi_cli import __version__ as current_version
88
+ from kimi_cli.constant import VERSION as current_version
89
89
 
90
90
  def _print(message: str) -> None:
91
91
  if print:
@@ -105,7 +105,7 @@ async def _do_update(*, print: bool, check_only: bool) -> UpdateResult:
105
105
  return UpdateResult.FAILED
106
106
 
107
107
  logger.debug("Latest version: {latest_version}", latest_version=latest_version)
108
- LATEST_VERSION_FILE.write_text(latest_version)
108
+ LATEST_VERSION_FILE.write_text(latest_version, encoding="utf-8")
109
109
 
110
110
  cur_t = semver_tuple(current_version)
111
111
  lat_t = semver_tuple(latest_version)
@@ -5,19 +5,19 @@ from kosong.base.message import ContentPart, TextPart, ToolCall, ToolCallPart
5
5
  from kosong.tooling import ToolResult
6
6
 
7
7
  from kimi_cli.soul import StatusSnapshot
8
- from kimi_cli.soul.wire import (
8
+ from kimi_cli.ui.shell.console import console
9
+ from kimi_cli.ui.shell.keyboard import listen_for_keyboard
10
+ from kimi_cli.ui.shell.liveview import StepLiveView, StepLiveViewWithMarkdown
11
+ from kimi_cli.utils.logging import logger
12
+ from kimi_cli.wire import WireUISide
13
+ from kimi_cli.wire.message import (
9
14
  ApprovalRequest,
10
15
  CompactionBegin,
11
16
  CompactionEnd,
12
17
  StatusUpdate,
13
18
  StepBegin,
14
19
  StepInterrupted,
15
- Wire,
16
20
  )
17
- from kimi_cli.ui.shell.console import console
18
- from kimi_cli.ui.shell.keyboard import listen_for_keyboard
19
- from kimi_cli.ui.shell.liveview import StepLiveView, StepLiveViewWithMarkdown
20
- from kimi_cli.utils.logging import logger
21
21
 
22
22
 
23
23
  @asynccontextmanager
@@ -39,7 +39,10 @@ async def _keyboard_listener(step: StepLiveView):
39
39
 
40
40
 
41
41
  async def visualize(
42
- wire: Wire, *, initial_status: StatusSnapshot, cancel_event: asyncio.Event | None = None
42
+ wire: WireUISide,
43
+ *,
44
+ initial_status: StatusSnapshot,
45
+ cancel_event: asyncio.Event | None = None,
43
46
  ):
44
47
  """
45
48
  A loop to consume agent events and visualize the agent behavior.
@@ -98,4 +98,6 @@ def format_release_notes(changelog: dict[str, ReleaseEntry]) -> str:
98
98
  return "\n".join(parts).strip()
99
99
 
100
100
 
101
- CHANGELOG = parse_changelog((Path(__file__).parent.parent / "CHANGELOG.md").read_text())
101
+ CHANGELOG = parse_changelog(
102
+ (Path(__file__).parent.parent / "CHANGELOG.md").read_text(encoding="utf-8")
103
+ )
@@ -0,0 +1,69 @@
1
+ import asyncio
2
+
3
+ from kosong.base.message import ContentPart, ToolCallPart
4
+
5
+ from kimi_cli.utils.logging import logger
6
+ from kimi_cli.wire.message import WireMessage
7
+
8
+
9
+ class Wire:
10
+ """
11
+ A channel for communication between the soul and the UI during a soul run.
12
+ """
13
+
14
+ def __init__(self):
15
+ self._queue = asyncio.Queue[WireMessage]()
16
+ self._soul_side = WireSoulSide(self._queue)
17
+ self._ui_side = WireUISide(self._queue)
18
+
19
+ @property
20
+ def soul_side(self) -> "WireSoulSide":
21
+ return self._soul_side
22
+
23
+ @property
24
+ def ui_side(self) -> "WireUISide":
25
+ return self._ui_side
26
+
27
+ def shutdown(self) -> None:
28
+ self._queue.shutdown()
29
+
30
+
31
+ class WireSoulSide:
32
+ """
33
+ The soul side of a wire.
34
+ """
35
+
36
+ def __init__(self, queue: asyncio.Queue[WireMessage]):
37
+ self._queue = queue
38
+
39
+ def send(self, msg: WireMessage) -> None:
40
+ if not isinstance(msg, ContentPart | ToolCallPart):
41
+ logger.debug("Sending wire message: {msg}", msg=msg)
42
+ self._queue.put_nowait(msg)
43
+
44
+
45
+ class WireUISide:
46
+ """
47
+ The UI side of a wire.
48
+ """
49
+
50
+ def __init__(self, queue: asyncio.Queue[WireMessage]):
51
+ self._queue = queue
52
+
53
+ async def receive(self) -> WireMessage:
54
+ msg = await self._queue.get()
55
+ if not isinstance(msg, ContentPart | ToolCallPart):
56
+ logger.debug("Receiving wire message: {msg}", msg=msg)
57
+ return msg
58
+
59
+ def receive_nowait(self) -> WireMessage | None:
60
+ """
61
+ Try receive a message without waiting. If no message is available, return None.
62
+ """
63
+ try:
64
+ msg = self._queue.get_nowait()
65
+ except asyncio.QueueEmpty:
66
+ return None
67
+ if not isinstance(msg, ContentPart | ToolCallPart):
68
+ logger.debug("Receiving wire message: {msg}", msg=msg)
69
+ return msg
@@ -1,14 +1,13 @@
1
1
  import asyncio
2
2
  import uuid
3
- from contextvars import ContextVar
4
3
  from enum import Enum
5
- from typing import NamedTuple
4
+ from typing import TYPE_CHECKING, NamedTuple
6
5
 
7
6
  from kosong.base.message import ContentPart, ToolCall, ToolCallPart
8
7
  from kosong.tooling import ToolResult
9
8
 
10
- from kimi_cli.soul import StatusSnapshot
11
- from kimi_cli.utils.logging import logger
9
+ if TYPE_CHECKING:
10
+ from kimi_cli.soul import StatusSnapshot
12
11
 
13
12
 
14
13
  class StepBegin(NamedTuple):
@@ -39,7 +38,7 @@ class CompactionEnd:
39
38
 
40
39
 
41
40
  class StatusUpdate(NamedTuple):
42
- status: StatusSnapshot
41
+ status: "StatusSnapshot"
43
42
 
44
43
 
45
44
  type ControlFlowEvent = StepBegin | StepInterrupted | CompactionBegin | CompactionEnd | StatusUpdate
@@ -90,37 +89,3 @@ class ApprovalRequest:
90
89
 
91
90
 
92
91
  type WireMessage = Event | ApprovalRequest
93
-
94
-
95
- class Wire:
96
- """
97
- A channel for communication between the soul and the UI.
98
- """
99
-
100
- def __init__(self):
101
- self._queue = asyncio.Queue[WireMessage]()
102
-
103
- def send(self, msg: WireMessage) -> None:
104
- if not isinstance(msg, ContentPart | ToolCallPart):
105
- logger.debug("Sending wire message: {msg}", msg=msg)
106
- self._queue.put_nowait(msg)
107
-
108
- async def receive(self) -> WireMessage:
109
- msg = await self._queue.get()
110
- if not isinstance(msg, ContentPart | ToolCallPart):
111
- logger.debug("Receiving wire message: {msg}", msg=msg)
112
- return msg
113
-
114
- def shutdown(self) -> None:
115
- self._queue.shutdown()
116
-
117
-
118
- current_wire = ContextVar[Wire | None]("current_wire", default=None)
119
-
120
-
121
- def get_wire_or_none() -> Wire | None:
122
- """
123
- Get the current wire or None.
124
- Expect to be not None when called from anywhere in the agent loop.
125
- """
126
- return current_wire.get()
@@ -1,29 +1,34 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kimi-cli
3
- Version: 0.40
3
+ Version: 0.42
4
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.15.0
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-Dist: httpx[socks]>=0.28.0
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.15.0
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-Dist: httpx[socks]==0.28.1
22
22
  Requires-Python: >=3.13
23
23
  Description-Content-Type: text/markdown
24
24
 
25
25
  # Kimi CLI
26
26
 
27
+ [![Commit Activity](https://img.shields.io/github/commit-activity/w/MoonshotAI/kimi-cli)](https://github.com/MoonshotAI/kimi-cli/graphs/commit-activity)
28
+ [![Checks](https://img.shields.io/github/check-runs/MoonshotAI/kimi-cli/main)](https://github.com/MoonshotAI/kimi-cli/actions)
29
+ [![Version](https://img.shields.io/pypi/v/kimi-cli)](https://pypi.org/project/kimi-cli/)
30
+ [![Downloads](https://img.shields.io/pypi/dw/kimi-cli)](https://pypistats.org/packages/kimi-cli)
31
+
27
32
  [中文](https://www.kimi.com/coding/docs/kimi-cli.html)
28
33
 
29
34
  Kimi CLI is a new CLI agent that can help you with your software development tasks and terminal operations.
@@ -152,3 +157,31 @@ Run `kimi` with `--mcp-config-file` option to connect to the specified MCP serve
152
157
  ```sh
153
158
  kimi --mcp-config-file /path/to/mcp.json
154
159
  ```
160
+
161
+ ## Development
162
+
163
+ To develop Kimi CLI, run:
164
+
165
+ ```sh
166
+ git clone https://github.com/MoonshotAI/kimi-cli.git
167
+ cd kimi-cli
168
+
169
+ make prepare # prepare the development environment
170
+ ```
171
+
172
+ Then you can start working on Kimi CLI.
173
+
174
+ Refer to the following commands after you make changes:
175
+
176
+ ```sh
177
+ uv run kimi # run Kimi CLI
178
+
179
+ make format # format code
180
+ make check # run linting and type checking
181
+ make test # run tests
182
+ make help # show all make targets
183
+ ```
184
+
185
+ ## Contributing
186
+
187
+ We welcome contributions to Kimi CLI! Please refer to [CONTRIBUTING.md](./CONTRIBUTING.md) for more information.
@@ -0,0 +1,86 @@
1
+ kimi_cli/CHANGELOG.md,sha256=7db667fadfee922d93c191895cb4c7be4d6724225b5edc908ea285c88b8e9c31,7880
2
+ kimi_cli/__init__.py,sha256=12fdc2946dc726697834c3f48787cd8fc0e2fdf38fb78d7c815236e2ce6a35ff,5576
3
+ kimi_cli/agents/default/agent.yaml,sha256=6e5c51987ef5cfc0c4c4e34cc20b6fc975953ee219623fccae81a19155aab7b3,709
4
+ kimi_cli/agents/default/sub.yaml,sha256=e0c1ea34fdb04b0d6dc635709f0f130aff25d7f9fb97e238470143c8145be251,634
5
+ kimi_cli/agents/default/system.md,sha256=1d8fd4956b2442215396b5e9651771c9da8f9505ccbd3b6d5e91b1ac4ff35418,5001
6
+ kimi_cli/agentspec.py,sha256=1148b5184ca610b2fb261ce365a63eb2fc9d09497330fe0ea4b2567fc98d5657,4307
7
+ kimi_cli/cli.py,sha256=5db63b9299b7ede52c7d758e627579d9082e4466f34fbe5e8bcd0910e1e98e67,6658
8
+ kimi_cli/config.py,sha256=a8a56c974569210c85c68ecbcfd69b6746879a0e2db5556299c9cb78c4c6573b,4896
9
+ kimi_cli/constant.py,sha256=78e25b9304cca7b6f70bb08bf0e1fee4b066297a05386e56dd6935ba42027cd9,110
10
+ kimi_cli/exception.py,sha256=a3fec07566da7d2d34be8cc454fb825f34109bbde3cddf69e1ece6ab21b4b219,259
11
+ kimi_cli/llm.py,sha256=069df4db494257ccc4fc183e6a3a89f032970d811f402ab02104876e69e310d6,2715
12
+ kimi_cli/metadata.py,sha256=9e9d4bc12ff26fc34e0e09d9068be989f2ff3c8b682ef453de69e442f8f672a1,1557
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/session.py,sha256=c0623b0cec8ce311f1ddc7bb47e1e452499e13f816b7c3023342499a436dcfc5,2853
18
+ kimi_cli/share.py,sha256=4292df7f44177419c45c772a933b5f36e2b7533f8cef9842629a438bc7856dc0,204
19
+ kimi_cli/soul/__init__.py,sha256=c1c09bb719c46db8d95873e4ef9856cbef92f54035829749c779ab0fad3dfc50,4702
20
+ kimi_cli/soul/agent.py,sha256=637aa6c8c52fd334fb20f15db6f54ef47dc1731eec14efd54d42c29f53bbe13b,4833
21
+ kimi_cli/soul/approval.py,sha256=48cd230dff81dfd70bd85f1ad2b99604d5569cf617a4c79c444f9772bbc89ce6,2552
22
+ kimi_cli/soul/compaction.py,sha256=dab17979060fceeed4a7a344373833022dc7abac04282364f2a1b20e6edd4581,3558
23
+ kimi_cli/soul/context.py,sha256=541759a65f8f87a3424a6da160ffb2043046e6f6b714124d94d82a77635df9bc,5855
24
+ kimi_cli/soul/denwarenji.py,sha256=66b95f052a1fa844e2347972d34e1916a7be24d3e493701b451f5380b0375c9f,1384
25
+ kimi_cli/soul/kimisoul.py,sha256=7e0b821952f9f0bc7c9c7fd31b697a55dc5e5dfbc011f966638c2775f68480ed,11470
26
+ kimi_cli/soul/message.py,sha256=b0fce0a0901fad38f2778b85f82427d4a42906891893a643e537a9268eb6e190,2529
27
+ kimi_cli/soul/runtime.py,sha256=13a13b48e9743436211a590d1e33ecc73abc3cc77fad36cef6b73795ae77ce74,2629
28
+ kimi_cli/soul/toolset.py,sha256=60166d89ef0efac690fa6866e88afe70fbe80ad862ba2524d70ddf657a730d14,744
29
+ kimi_cli/tools/__init__.py,sha256=4d612402814eede7182e0a55e7dd21c4532b5dd44700dc744763a8308c2f74f8,3280
30
+ kimi_cli/tools/bash/__init__.py,sha256=de21b19c714bda53f6c89e3348c4c82fb4278040130fed1d261b3ab203054e8c,3028
31
+ kimi_cli/tools/bash/bash.md,sha256=5d9cc54b3718097951340b0a737c8e1fa308341fd2c4ebd121be94de31dd5f73,2348
32
+ kimi_cli/tools/dmail/__init__.py,sha256=a9186ed4e52c34cab7516060bb6edca73324912233b1581c0d3a40b026400133,1277
33
+ kimi_cli/tools/dmail/dmail.md,sha256=0d18cae387dd52127ddc99e296253c09e68ccba5f343153c0adbe77d7586e759,1912
34
+ kimi_cli/tools/file/__init__.py,sha256=1516fb4c71097f9c14b605e7b9a1872af8786bdcb48323d1fa83bb1419436abb,546
35
+ kimi_cli/tools/file/glob.md,sha256=11fbfaf6033f57b69c6f91077ddd90505036937cd7217600d96992b9a48b7ca7,1400
36
+ kimi_cli/tools/file/glob.py,sha256=67b0b55e95b57e34cb43ecf382667d1b9b78903787c00bb2d0929dbede812f2f,5413
37
+ kimi_cli/tools/file/grep.md,sha256=12353db42cf3b5d9d91ac7c0f0b9c2a732e8b050c23a78f4e668db823cca4d50,245
38
+ kimi_cli/tools/file/grep.py,sha256=01794320049b46207aeb28bd7f3dbea373ede891916107cab871ea959e81a335,9787
39
+ kimi_cli/tools/file/patch.md,sha256=f9edbed6c6a03bf7448a51acc1f42622395fd7f1674a814e9a3b2302d3b7b92e,404
40
+ kimi_cli/tools/file/patch.py,sha256=7e31d85ece4ece2439e9dfd085505e496d9e47d176b820c61798e3c4f71628db,5228
41
+ kimi_cli/tools/file/read.md,sha256=4c2d83e557daadc0612fb1a613e252b2c8e4df7ae57e6db094e9e75e994cb23b,1066
42
+ kimi_cli/tools/file/read.py,sha256=1d3d8116ee23f224d04c5ba10e3c3261e94fbbe3b932d57ae5fca48a0afdb592,5068
43
+ kimi_cli/tools/file/replace.md,sha256=f429f263fa580f2f6107907a33ba8800dcdbd4fc1d9ff8dc4f858bd76ec6bbc6,267
44
+ kimi_cli/tools/file/replace.py,sha256=8df993fb49a975b87820fbdbc7d7b349e18516250b0f895dd047b87c3df89e73,5204
45
+ kimi_cli/tools/file/write.md,sha256=f37b0f4742da57797ec4dd29fbd4fdc9b6617c6be644724a3b16d651c6129cec,324
46
+ kimi_cli/tools/file/write.py,sha256=22f4eb8e635b279e48bde7f09e7416a01b8ed88c140424c149a6398a0a321f1a,4378
47
+ kimi_cli/tools/mcp.py,sha256=12f63c9ee5b82a5b0f23daca0b5ce4ceb3a6190ce5b553ee24e499699521e426,3620
48
+ kimi_cli/tools/task/__init__.py,sha256=8a0ccc313a616428d68f804986dba69de400502af64bf4c52b366e4d5ff7eeff,6523
49
+ kimi_cli/tools/task/task.md,sha256=391cc3553c7d310a323626bae180dd41cb810fb1233583713ebde105f954147a,2280
50
+ kimi_cli/tools/test.py,sha256=c094a91a2d1a5259e192f1147facd5eebd5e5c413787fce167db90e4b41b5119,1442
51
+ kimi_cli/tools/think/__init__.py,sha256=31b06088e2404cb09d42e0acec97c185e4861890bb687f28b41f39cea01b5733,603
52
+ kimi_cli/tools/think/think.md,sha256=ab40d4de1d8adb208384a4ab548e35776283cb0a681c6e208b041fc40ccba724,200
53
+ kimi_cli/tools/todo/__init__.py,sha256=aa02c8afa19d9ae2ef1f6ffee147dc96732a9cb9895aa5e13fe0f9efe753fe00,897
54
+ kimi_cli/tools/todo/set_todo_list.md,sha256=89509503f43ab321d440a04dc133ddc3e29859f68907a42c39e6093f7bfd485c,1654
55
+ kimi_cli/tools/utils.py,sha256=2e00d6f04f91e05a91bfb691e547a76193063fa6769a03f7d3ff992aba9372bf,4596
56
+ kimi_cli/tools/web/__init__.py,sha256=e13108c598828a8a05907a7a821e7ac92f5d63572bb9866dc12ca026094acb42,95
57
+ kimi_cli/tools/web/fetch.md,sha256=56d00bd93b4e379c4f7efe445fce963eb26b8d20f85d4c19097ba6f33bd0019a,67
58
+ kimi_cli/tools/web/fetch.py,sha256=66448121d27d67f75b977c32244c721c2ccff1b2e097c2fe6717e66018d8f747,3183
59
+ kimi_cli/tools/web/search.md,sha256=24049f9e90d37083e0fc78b8b2e3a5f6fadf09bea00f36712b235d1212a2f532,146
60
+ kimi_cli/tools/web/search.py,sha256=e7fcb1eae31f97637a27fffc774f361c773bf4df5dad5b5a6104aaa91a2f3d22,4511
61
+ kimi_cli/ui/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
62
+ kimi_cli/ui/acp/__init__.py,sha256=cc8bf39f342de7661134f282369b286bb6c4571b1e0001a0cb216207a62d709c,17354
63
+ kimi_cli/ui/print/__init__.py,sha256=0fd783a6a65b85515129edd98adc3a4a154b37e579b313a42648c6c1fabcb1f7,5867
64
+ kimi_cli/ui/shell/__init__.py,sha256=3648c8e3d4e03408fd7c5f626a85d91752155ca703f688bf122b6048a5bf8800,10603
65
+ kimi_cli/ui/shell/console.py,sha256=bcbf7efd214cba3d2259f2a2c1842250cde96d49e4f9f1e0b60273cf1c366be3,842
66
+ kimi_cli/ui/shell/debug.py,sha256=cd4e7259c83f099b5c6519713be5306580f30d3fa4944e07916d4468e960c9c7,5562
67
+ kimi_cli/ui/shell/keyboard.py,sha256=8735c00363484263681adf885baec824e5f76cb4084bd024651e80190926edc5,3035
68
+ kimi_cli/ui/shell/liveview.py,sha256=f4e6ac37c446740b5c55cf37d5ebd327b5d41334d41d5e54ad8ad15445c1a492,14239
69
+ kimi_cli/ui/shell/metacmd.py,sha256=a0e52e9cbd8758c1ba13f025599341aa59dd5bc5e244840da2ff9bb71f952a20,7678
70
+ kimi_cli/ui/shell/prompt.py,sha256=e1590530239244cc39d8e3ff6fdfb4b431da0cf21f8b0ad5c0900c5a4b3978d8,19398
71
+ kimi_cli/ui/shell/setup.py,sha256=36be348c8cdbb908f1b896f7dfd93802df4d76eeb8572d39b81a34dfd5ee2a3c,5374
72
+ kimi_cli/ui/shell/update.py,sha256=56dcb0bd1da82b98c22bfdddca717a2805bd8ac3e93bf23fb3b508549c41fae8,7340
73
+ kimi_cli/ui/shell/visualize.py,sha256=7035d53e41ae59e5df7008759ee4f14e44352cc4ac087c6b67d784a7dd51c733,4291
74
+ kimi_cli/utils/aiohttp.py,sha256=f8f61e3beaf6439e949c33c3a10db3035bf88136e882b09c858ea92a4c888e00,245
75
+ kimi_cli/utils/changelog.py,sha256=bfcf5a5a360b13648bb7a6abc83e427270caa502646b5acc950d62148510641c,3402
76
+ kimi_cli/utils/logging.py,sha256=129298ac214ecd8d913c3431cc05d754f9c4c8c4042c458618bf9e8ddebdb763,399
77
+ kimi_cli/utils/message.py,sha256=ca8f8d3c7dc6d4fce938d1cfe8a7a7343e39ce1e2f0c7b2d76d838edc7d9f187,304
78
+ kimi_cli/utils/path.py,sha256=fdd4fc08999ddc7c610f884b4ba8d27932248b9ed06b5eb4139519edd00b3f75,687
79
+ kimi_cli/utils/pyinstaller.py,sha256=e5d709d0490ef8645bbed2d2363920c59f25bd17c04f471bf4a8c0fa2ebe1801,581
80
+ kimi_cli/utils/string.py,sha256=f8a842ee014b9023d4045392f33ca6f576f5238ad3d40cb6df071a3ce9f5ed9c,365
81
+ kimi_cli/wire/__init__.py,sha256=a8d3ebbe0e6a98893771541d166a3d8ec3bc2551117ee4bc47fabce68694bb5a,1853
82
+ kimi_cli/wire/message.py,sha256=72222d3f3d7228a323dbba7b1084f35018104c58e4bb2aa51d0827984791841d,2398
83
+ kimi_cli-0.42.dist-info/WHEEL,sha256=70ab3c2925fe316809860cb034f99ba13c4b49819b339959274aab755cc084a8,78
84
+ kimi_cli-0.42.dist-info/entry_points.txt,sha256=97e051756296e9db3167f6dce61d6c88e58d170314a2d63d18c84c73a5c1333b,44
85
+ kimi_cli-0.42.dist-info/METADATA,sha256=760c1ea5111946d261c9c995803cbe326c1c70095a9f035b293651eda1deb95c,5187
86
+ kimi_cli-0.42.dist-info/RECORD,,
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ kimi = kimi_cli.cli:main
3
+