kimi-cli 0.44__py3-none-any.whl → 0.78__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 (137) hide show
  1. kimi_cli/CHANGELOG.md +349 -40
  2. kimi_cli/__init__.py +6 -0
  3. kimi_cli/acp/AGENTS.md +91 -0
  4. kimi_cli/acp/__init__.py +13 -0
  5. kimi_cli/acp/convert.py +111 -0
  6. kimi_cli/acp/kaos.py +270 -0
  7. kimi_cli/acp/mcp.py +46 -0
  8. kimi_cli/acp/server.py +335 -0
  9. kimi_cli/acp/session.py +445 -0
  10. kimi_cli/acp/tools.py +158 -0
  11. kimi_cli/acp/types.py +13 -0
  12. kimi_cli/agents/default/agent.yaml +4 -4
  13. kimi_cli/agents/default/sub.yaml +2 -1
  14. kimi_cli/agents/default/system.md +79 -21
  15. kimi_cli/agents/okabe/agent.yaml +17 -0
  16. kimi_cli/agentspec.py +53 -25
  17. kimi_cli/app.py +180 -52
  18. kimi_cli/cli/__init__.py +595 -0
  19. kimi_cli/cli/__main__.py +8 -0
  20. kimi_cli/cli/info.py +63 -0
  21. kimi_cli/cli/mcp.py +349 -0
  22. kimi_cli/config.py +153 -17
  23. kimi_cli/constant.py +3 -0
  24. kimi_cli/exception.py +23 -2
  25. kimi_cli/flow/__init__.py +117 -0
  26. kimi_cli/flow/d2.py +376 -0
  27. kimi_cli/flow/mermaid.py +218 -0
  28. kimi_cli/llm.py +129 -23
  29. kimi_cli/metadata.py +32 -7
  30. kimi_cli/platforms.py +262 -0
  31. kimi_cli/prompts/__init__.py +2 -0
  32. kimi_cli/prompts/compact.md +4 -5
  33. kimi_cli/session.py +223 -31
  34. kimi_cli/share.py +2 -0
  35. kimi_cli/skill.py +145 -0
  36. kimi_cli/skills/kimi-cli-help/SKILL.md +55 -0
  37. kimi_cli/skills/skill-creator/SKILL.md +351 -0
  38. kimi_cli/soul/__init__.py +51 -20
  39. kimi_cli/soul/agent.py +213 -85
  40. kimi_cli/soul/approval.py +86 -17
  41. kimi_cli/soul/compaction.py +64 -53
  42. kimi_cli/soul/context.py +38 -5
  43. kimi_cli/soul/denwarenji.py +2 -0
  44. kimi_cli/soul/kimisoul.py +442 -60
  45. kimi_cli/soul/message.py +54 -54
  46. kimi_cli/soul/slash.py +72 -0
  47. kimi_cli/soul/toolset.py +387 -6
  48. kimi_cli/toad.py +74 -0
  49. kimi_cli/tools/AGENTS.md +5 -0
  50. kimi_cli/tools/__init__.py +42 -34
  51. kimi_cli/tools/display.py +25 -0
  52. kimi_cli/tools/dmail/__init__.py +10 -10
  53. kimi_cli/tools/dmail/dmail.md +11 -9
  54. kimi_cli/tools/file/__init__.py +1 -3
  55. kimi_cli/tools/file/glob.py +20 -23
  56. kimi_cli/tools/file/grep.md +1 -1
  57. kimi_cli/tools/file/{grep.py → grep_local.py} +51 -23
  58. kimi_cli/tools/file/read.md +24 -6
  59. kimi_cli/tools/file/read.py +134 -50
  60. kimi_cli/tools/file/replace.md +1 -1
  61. kimi_cli/tools/file/replace.py +36 -29
  62. kimi_cli/tools/file/utils.py +282 -0
  63. kimi_cli/tools/file/write.py +43 -22
  64. kimi_cli/tools/multiagent/__init__.py +7 -0
  65. kimi_cli/tools/multiagent/create.md +11 -0
  66. kimi_cli/tools/multiagent/create.py +50 -0
  67. kimi_cli/tools/{task/__init__.py → multiagent/task.py} +48 -53
  68. kimi_cli/tools/shell/__init__.py +120 -0
  69. kimi_cli/tools/{bash → shell}/bash.md +1 -2
  70. kimi_cli/tools/shell/powershell.md +25 -0
  71. kimi_cli/tools/test.py +4 -4
  72. kimi_cli/tools/think/__init__.py +2 -2
  73. kimi_cli/tools/todo/__init__.py +14 -8
  74. kimi_cli/tools/utils.py +64 -24
  75. kimi_cli/tools/web/fetch.py +68 -13
  76. kimi_cli/tools/web/search.py +10 -12
  77. kimi_cli/ui/acp/__init__.py +65 -412
  78. kimi_cli/ui/print/__init__.py +37 -49
  79. kimi_cli/ui/print/visualize.py +179 -0
  80. kimi_cli/ui/shell/__init__.py +141 -84
  81. kimi_cli/ui/shell/console.py +2 -0
  82. kimi_cli/ui/shell/debug.py +28 -23
  83. kimi_cli/ui/shell/keyboard.py +5 -1
  84. kimi_cli/ui/shell/prompt.py +220 -194
  85. kimi_cli/ui/shell/replay.py +111 -46
  86. kimi_cli/ui/shell/setup.py +89 -82
  87. kimi_cli/ui/shell/slash.py +422 -0
  88. kimi_cli/ui/shell/update.py +4 -2
  89. kimi_cli/ui/shell/usage.py +271 -0
  90. kimi_cli/ui/shell/visualize.py +574 -72
  91. kimi_cli/ui/wire/__init__.py +267 -0
  92. kimi_cli/ui/wire/jsonrpc.py +142 -0
  93. kimi_cli/ui/wire/protocol.py +1 -0
  94. kimi_cli/utils/__init__.py +0 -0
  95. kimi_cli/utils/aiohttp.py +2 -0
  96. kimi_cli/utils/aioqueue.py +72 -0
  97. kimi_cli/utils/broadcast.py +37 -0
  98. kimi_cli/utils/changelog.py +12 -7
  99. kimi_cli/utils/clipboard.py +12 -0
  100. kimi_cli/utils/datetime.py +37 -0
  101. kimi_cli/utils/environment.py +58 -0
  102. kimi_cli/utils/envvar.py +12 -0
  103. kimi_cli/utils/frontmatter.py +44 -0
  104. kimi_cli/utils/logging.py +7 -6
  105. kimi_cli/utils/message.py +9 -14
  106. kimi_cli/utils/path.py +99 -9
  107. kimi_cli/utils/pyinstaller.py +6 -0
  108. kimi_cli/utils/rich/__init__.py +33 -0
  109. kimi_cli/utils/rich/columns.py +99 -0
  110. kimi_cli/utils/rich/markdown.py +961 -0
  111. kimi_cli/utils/rich/markdown_sample.md +108 -0
  112. kimi_cli/utils/rich/markdown_sample_short.md +2 -0
  113. kimi_cli/utils/signals.py +2 -0
  114. kimi_cli/utils/slashcmd.py +124 -0
  115. kimi_cli/utils/string.py +2 -0
  116. kimi_cli/utils/term.py +168 -0
  117. kimi_cli/utils/typing.py +20 -0
  118. kimi_cli/wire/__init__.py +98 -29
  119. kimi_cli/wire/serde.py +45 -0
  120. kimi_cli/wire/types.py +299 -0
  121. kimi_cli-0.78.dist-info/METADATA +200 -0
  122. kimi_cli-0.78.dist-info/RECORD +135 -0
  123. kimi_cli-0.78.dist-info/entry_points.txt +4 -0
  124. kimi_cli/cli.py +0 -250
  125. kimi_cli/soul/runtime.py +0 -96
  126. kimi_cli/tools/bash/__init__.py +0 -99
  127. kimi_cli/tools/file/patch.md +0 -8
  128. kimi_cli/tools/file/patch.py +0 -143
  129. kimi_cli/tools/mcp.py +0 -85
  130. kimi_cli/ui/shell/liveview.py +0 -386
  131. kimi_cli/ui/shell/metacmd.py +0 -262
  132. kimi_cli/wire/message.py +0 -91
  133. kimi_cli-0.44.dist-info/METADATA +0 -188
  134. kimi_cli-0.44.dist-info/RECORD +0 -89
  135. kimi_cli-0.44.dist-info/entry_points.txt +0 -3
  136. /kimi_cli/tools/{task → multiagent}/task.md +0 -0
  137. {kimi_cli-0.44.dist-info → kimi_cli-0.78.dist-info}/WHEEL +0 -0
kimi_cli/wire/types.py ADDED
@@ -0,0 +1,299 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ from typing import Any, Literal, TypeGuard, cast
5
+
6
+ from kosong.chat_provider import TokenUsage
7
+ from kosong.message import (
8
+ AudioURLPart,
9
+ ContentPart,
10
+ ImageURLPart,
11
+ TextPart,
12
+ ThinkPart,
13
+ ToolCall,
14
+ ToolCallPart,
15
+ VideoURLPart,
16
+ )
17
+ from kosong.tooling import (
18
+ BriefDisplayBlock,
19
+ DisplayBlock,
20
+ ToolResult,
21
+ ToolReturnValue,
22
+ UnknownDisplayBlock,
23
+ )
24
+ from kosong.utils.typing import JsonType
25
+ from pydantic import BaseModel, Field, field_serializer, field_validator
26
+
27
+ from kimi_cli.tools.display import DiffDisplayBlock, TodoDisplayBlock, TodoDisplayItem
28
+ from kimi_cli.utils.typing import flatten_union
29
+
30
+
31
+ class TurnBegin(BaseModel):
32
+ """
33
+ Indicates the beginning of a new agent turn.
34
+ This event must be sent before any other event in the turn.
35
+ """
36
+
37
+ user_input: str | list[ContentPart]
38
+
39
+
40
+ class StepBegin(BaseModel):
41
+ """
42
+ Indicates the beginning of a new agent step.
43
+ This event must be sent before any other event in the step.
44
+ """
45
+
46
+ n: int
47
+ """The step number."""
48
+
49
+
50
+ class StepInterrupted(BaseModel):
51
+ """Indicates the current step was interrupted, either by user intervention or an error."""
52
+
53
+ pass
54
+
55
+
56
+ class CompactionBegin(BaseModel):
57
+ """
58
+ Indicates that a compaction just began.
59
+ This event must be sent during a step, which means, between `StepBegin` and the next
60
+ `StepBegin` or `StepInterrupted`. And, there must be a `CompactionEnd` directly following
61
+ this event.
62
+ """
63
+
64
+ pass
65
+
66
+
67
+ class CompactionEnd(BaseModel):
68
+ """
69
+ Indicates that a compaction just ended.
70
+ This event must be sent directly after a `CompactionBegin` event.
71
+ """
72
+
73
+ pass
74
+
75
+
76
+ class StatusUpdate(BaseModel):
77
+ """
78
+ An update on the current status of the soul.
79
+ None fields indicate no change from the previous status.
80
+ """
81
+
82
+ context_usage: float | None = None
83
+ """The usage of the context, in percentage."""
84
+ token_usage: TokenUsage | None = None
85
+ """The token usage statistics of the current step."""
86
+ message_id: str | None = None
87
+ """The message ID of the current step."""
88
+
89
+
90
+ class SubagentEvent(BaseModel):
91
+ """
92
+ An event from a subagent.
93
+ """
94
+
95
+ task_tool_call_id: str
96
+ """The ID of the task tool call associated with this subagent."""
97
+ event: Event
98
+ """The event from the subagent."""
99
+ # TODO: maybe restrict the event types? to exclude approval request, etc.
100
+
101
+ @field_serializer("event", when_used="json")
102
+ def _serialize_event(self, event: Event) -> dict[str, Any]:
103
+ envelope = WireMessageEnvelope.from_wire_message(event)
104
+ return envelope.model_dump(mode="json")
105
+
106
+ @field_validator("event", mode="before")
107
+ @classmethod
108
+ def _validate_event(cls, value: Any) -> Event:
109
+ if is_wire_message(value):
110
+ if is_event(value):
111
+ return value
112
+ raise ValueError("SubagentEvent event must be an Event")
113
+
114
+ if not isinstance(value, dict):
115
+ raise ValueError("SubagentEvent event must be a dict")
116
+ event_type = cast(dict[str, Any], value).get("type")
117
+ event_payload = cast(dict[str, Any], value).get("payload")
118
+ envelope = WireMessageEnvelope.model_validate(
119
+ {"type": event_type, "payload": event_payload}
120
+ )
121
+ event = envelope.to_wire_message()
122
+ if not is_event(event):
123
+ raise ValueError("SubagentEvent event must be an Event")
124
+ return event
125
+
126
+
127
+ type ApprovalResponseKind = Literal["approve", "approve_for_session", "reject"]
128
+
129
+
130
+ class ApprovalRequestResolved(BaseModel):
131
+ """
132
+ Indicates that an approval request has been resolved.
133
+ """
134
+
135
+ request_id: str
136
+ """The ID of the resolved approval request."""
137
+ response: ApprovalResponseKind
138
+ """The response to the approval request."""
139
+
140
+
141
+ class ApprovalRequest(BaseModel):
142
+ """
143
+ A request for user approval before proceeding with an action.
144
+ """
145
+
146
+ id: str
147
+ tool_call_id: str
148
+ sender: str
149
+ action: str
150
+ description: str
151
+ display: list[DisplayBlock] = Field(default_factory=list[DisplayBlock])
152
+ """Defaults to an empty list for backwards-compatible wire.jsonl loading."""
153
+
154
+ type Response = ApprovalResponseKind
155
+
156
+ # Note that the above fields are just a copy of `kimi_cli.soul.approval.Request`, but
157
+ # we cannot directly use that class here because we want to avoid dependency from Wire
158
+ # to Soul.
159
+
160
+ def __init__(self, **kwargs: Any) -> None:
161
+ super().__init__(**kwargs)
162
+ self._future = asyncio.Future[ApprovalRequest.Response]()
163
+
164
+ async def wait(self) -> Response:
165
+ """
166
+ Wait for the request to be resolved or cancelled.
167
+
168
+ Returns:
169
+ ApprovalRequest.Response: The response to the approval request.
170
+ """
171
+ return await self._future
172
+
173
+ def resolve(self, response: ApprovalRequest.Response) -> None:
174
+ """
175
+ Resolve the approval request with the given response.
176
+ This will cause the `wait()` method to return the response.
177
+ """
178
+ self._future.set_result(response)
179
+
180
+ @property
181
+ def resolved(self) -> bool:
182
+ """Whether the request is resolved."""
183
+ return self._future.done()
184
+
185
+
186
+ type Event = (
187
+ TurnBegin
188
+ | StepBegin
189
+ | StepInterrupted
190
+ | CompactionBegin
191
+ | CompactionEnd
192
+ | StatusUpdate
193
+ | ContentPart
194
+ | ToolCall
195
+ | ToolCallPart
196
+ | ToolResult
197
+ | SubagentEvent
198
+ | ApprovalRequestResolved
199
+ )
200
+ """Any event, including control flow and content/tooling events."""
201
+
202
+
203
+ type Request = ApprovalRequest
204
+ """Any request. Request is a message that expects a response."""
205
+
206
+ type WireMessage = Event | Request
207
+ """Any message sent over the `Wire`."""
208
+
209
+
210
+ _EVENT_TYPES = cast(tuple[type[Event], ...], flatten_union(Event))
211
+ _REQUEST_TYPES = cast(tuple[type[Request], ...], flatten_union(Request))
212
+ _WIRE_MESSAGE_TYPES = cast(tuple[type[WireMessage], ...], flatten_union(WireMessage))
213
+
214
+
215
+ def is_event(msg: Any) -> TypeGuard[Event]:
216
+ """Check if the message is an Event."""
217
+ return isinstance(msg, _EVENT_TYPES)
218
+
219
+
220
+ def is_request(msg: Any) -> TypeGuard[Request]:
221
+ """Check if the message is a Request."""
222
+ return isinstance(msg, _REQUEST_TYPES)
223
+
224
+
225
+ def is_wire_message(msg: Any) -> TypeGuard[WireMessage]:
226
+ """Check if the message is a WireMessage."""
227
+ return isinstance(msg, _WIRE_MESSAGE_TYPES)
228
+
229
+
230
+ _NAME_TO_WIRE_MESSAGE_TYPE: dict[str, type[WireMessage]] = {
231
+ cls.__name__: cls for cls in _WIRE_MESSAGE_TYPES
232
+ }
233
+
234
+
235
+ class WireMessageEnvelope(BaseModel):
236
+ type: str
237
+ payload: dict[str, JsonType]
238
+
239
+ @classmethod
240
+ def from_wire_message(cls, msg: WireMessage) -> WireMessageEnvelope:
241
+ typename: str | None = None
242
+ for name, typ in _NAME_TO_WIRE_MESSAGE_TYPE.items():
243
+ if issubclass(type(msg), typ):
244
+ typename = name
245
+ break
246
+ assert typename is not None, f"Unknown wire message type: {type(msg)}"
247
+ return cls(
248
+ type=typename,
249
+ payload=msg.model_dump(mode="json"),
250
+ )
251
+
252
+ def to_wire_message(self) -> WireMessage:
253
+ """
254
+ Convert the envelope back into a `WireMessage`.
255
+
256
+ Raises:
257
+ ValueError: If the message type is unknown or the payload is invalid.
258
+ """
259
+ msg_type = _NAME_TO_WIRE_MESSAGE_TYPE.get(self.type)
260
+ if msg_type is None:
261
+ raise ValueError(f"Unknown wire message type: {self.type}")
262
+ return msg_type.model_validate(self.payload)
263
+
264
+
265
+ __all__ = [
266
+ # `WireMessage` variants
267
+ "TurnBegin",
268
+ "StepBegin",
269
+ "StepInterrupted",
270
+ "CompactionBegin",
271
+ "CompactionEnd",
272
+ "StatusUpdate",
273
+ "ContentPart",
274
+ "ToolCall",
275
+ "ToolCallPart",
276
+ "ToolResult",
277
+ "SubagentEvent",
278
+ "ApprovalRequestResolved",
279
+ "ApprovalRequest",
280
+ # helpers
281
+ "WireMessageEnvelope",
282
+ # `StatusUpdate`-related
283
+ "TokenUsage",
284
+ # `ContentPart` types
285
+ "TextPart",
286
+ "ThinkPart",
287
+ "ImageURLPart",
288
+ "AudioURLPart",
289
+ "VideoURLPart",
290
+ # `ToolResult`-related
291
+ "ToolReturnValue",
292
+ # `DisplayBlock` types
293
+ "DisplayBlock",
294
+ "UnknownDisplayBlock",
295
+ "BriefDisplayBlock",
296
+ "DiffDisplayBlock",
297
+ "TodoDisplayBlock",
298
+ "TodoDisplayItem",
299
+ ]
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.3
2
+ Name: kimi-cli
3
+ Version: 0.78
4
+ Summary: Kimi CLI is your next CLI agent.
5
+ Requires-Dist: agent-client-protocol==0.7.0
6
+ Requires-Dist: aiofiles>=24.0,<26.0
7
+ Requires-Dist: aiohttp==3.13.3
8
+ Requires-Dist: typer==0.21.1
9
+ Requires-Dist: kosong[contrib]==0.38.0
10
+ Requires-Dist: loguru>=0.6.0,<0.8
11
+ Requires-Dist: prompt-toolkit==3.0.52
12
+ Requires-Dist: pillow==12.1.0
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: lxml==6.0.2
19
+ Requires-Dist: tenacity==9.1.2
20
+ Requires-Dist: fastmcp==2.12.5
21
+ Requires-Dist: pydantic==2.12.5
22
+ Requires-Dist: httpx[socks]==0.28.1
23
+ Requires-Dist: pykaos==0.6.0
24
+ Requires-Dist: batrachian-toad==0.5.23 ; python_full_version >= '3.14'
25
+ Requires-Dist: tomlkit==0.13.3
26
+ Requires-Dist: jinja2==3.1.4
27
+ Requires-Python: >=3.12
28
+ Description-Content-Type: text/markdown
29
+
30
+ # Kimi CLI
31
+
32
+ [![Commit Activity](https://img.shields.io/github/commit-activity/w/MoonshotAI/kimi-cli)](https://github.com/MoonshotAI/kimi-cli/graphs/commit-activity)
33
+ [![Checks](https://img.shields.io/github/check-runs/MoonshotAI/kimi-cli/main)](https://github.com/MoonshotAI/kimi-cli/actions)
34
+ [![Version](https://img.shields.io/pypi/v/kimi-cli)](https://pypi.org/project/kimi-cli/)
35
+ [![Downloads](https://img.shields.io/pypi/dw/kimi-cli)](https://pypistats.org/packages/kimi-cli)
36
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/MoonshotAI/kimi-cli)
37
+
38
+ [Kimi Code](https://www.kimi.com/code/) | [Documentation](https://moonshotai.github.io/kimi-cli/en/) | [文档](https://moonshotai.github.io/kimi-cli/zh/)
39
+
40
+ Kimi CLI is an AI agent that runs in the terminal, helping you complete software development tasks and terminal operations. It can read and edit code, execute shell commands, search and fetch web pages, and autonomously plan and adjust actions during execution.
41
+
42
+ > [!IMPORTANT]
43
+ > Kimi CLI is currently in technical preview.
44
+
45
+ ## Getting Started
46
+
47
+ See [Getting Started](https://moonshotai.github.io/kimi-cli/en/guides/getting-started.html) for how to install and start using Kimi CLI.
48
+
49
+ ## Key Features
50
+
51
+ ### Shell command mode
52
+
53
+ Kimi CLI is not only a coding agent, but also a shell. You can switch the shell command mode by pressing `Ctrl-X`. In this mode, you can directly run shell commands without leaving Kimi CLI.
54
+
55
+ ![](./docs/media/shell-mode.gif)
56
+
57
+ > [!NOTE]
58
+ > Built-in shell commands like `cd` are not supported yet.
59
+
60
+ ### IDE integration via ACP
61
+
62
+ Kimi CLI supports [Agent Client Protocol] out of the box. You can use it together with any ACP-compatible editor or IDE.
63
+
64
+ [Agent Client Protocol]: https://github.com/agentclientprotocol/agent-client-protocol
65
+
66
+ To use Kimi CLI with ACP clients, make sure to run Kimi CLI in the terminal and send `/setup` to complete the setup first. Then, you can configure your ACP client to start Kimi CLI as an ACP agent server with command `kimi acp`.
67
+
68
+ For example, to use Kimi CLI with [Zed](https://zed.dev/) or [JetBrains](https://blog.jetbrains.com/ai/2025/12/bring-your-own-ai-agent-to-jetbrains-ides/), add the following configuration to your `~/.config/zed/settings.json` or `~/.jetbrains/acp.json` file:
69
+
70
+ ```json
71
+ {
72
+ "agent_servers": {
73
+ "Kimi CLI": {
74
+ "command": "kimi",
75
+ "args": ["acp"],
76
+ "env": {}
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ Then you can create Kimi CLI threads in IDE's agent panel.
83
+
84
+ ![](./docs/media/acp-integration.gif)
85
+
86
+ ### Zsh integration
87
+
88
+ You can use Kimi CLI together with Zsh, to empower your shell experience with AI agent capabilities.
89
+
90
+ Install the [zsh-kimi-cli](https://github.com/MoonshotAI/zsh-kimi-cli) plugin via:
91
+
92
+ ```sh
93
+ git clone https://github.com/MoonshotAI/zsh-kimi-cli.git \
94
+ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/kimi-cli
95
+ ```
96
+
97
+ > [!NOTE]
98
+ > If you are using a plugin manager other than Oh My Zsh, you may need to refer to the plugin's README for installation instructions.
99
+
100
+ Then add `kimi-cli` to your Zsh plugin list in `~/.zshrc`:
101
+
102
+ ```sh
103
+ plugins=(... kimi-cli)
104
+ ```
105
+
106
+ After restarting Zsh, you can switch to agent mode by pressing `Ctrl-X`.
107
+
108
+ ### MCP support
109
+
110
+ Kimi CLI supports MCP (Model Context Protocol) tools.
111
+
112
+ **`kimi mcp` sub-command group**
113
+
114
+ You can manage MCP servers with `kimi mcp` sub-command group. For example:
115
+
116
+ ```sh
117
+ # Add streamable HTTP server:
118
+ kimi mcp add --transport http context7 https://mcp.context7.com/mcp --header "CONTEXT7_API_KEY: ctx7sk-your-key"
119
+
120
+ # Add streamable HTTP server with OAuth authorization:
121
+ kimi mcp add --transport http --auth oauth linear https://mcp.linear.app/mcp
122
+
123
+ # Add stdio server:
124
+ kimi mcp add --transport stdio chrome-devtools -- npx chrome-devtools-mcp@latest
125
+
126
+ # List added MCP servers:
127
+ kimi mcp list
128
+
129
+ # Remove an MCP server:
130
+ kimi mcp remove chrome-devtools
131
+
132
+ # Authorize an MCP server:
133
+ kimi mcp auth linear
134
+ ```
135
+
136
+ **Ad-hoc MCP configuration**
137
+
138
+ Kimi CLI also supports ad-hoc MCP server configuration via CLI option.
139
+
140
+ Given an MCP config file in the well-known MCP config format like the following:
141
+
142
+ ```json
143
+ {
144
+ "mcpServers": {
145
+ "context7": {
146
+ "url": "https://mcp.context7.com/mcp",
147
+ "headers": {
148
+ "CONTEXT7_API_KEY": "YOUR_API_KEY"
149
+ }
150
+ },
151
+ "chrome-devtools": {
152
+ "command": "npx",
153
+ "args": ["-y", "chrome-devtools-mcp@latest"]
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ Run `kimi` with `--mcp-config-file` option to connect to the specified MCP servers:
160
+
161
+ ```sh
162
+ kimi --mcp-config-file /path/to/mcp.json
163
+ ```
164
+
165
+ ### More
166
+
167
+ See more features in the [Documentation](https://moonshotai.github.io/kimi-cli/en/).
168
+
169
+ ## Development
170
+
171
+ To develop Kimi CLI, run:
172
+
173
+ ```sh
174
+ git clone https://github.com/MoonshotAI/kimi-cli.git
175
+ cd kimi-cli
176
+
177
+ make prepare # prepare the development environment
178
+ ```
179
+
180
+ Then you can start working on Kimi CLI.
181
+
182
+ Refer to the following commands after you make changes:
183
+
184
+ ```sh
185
+ uv run kimi # run Kimi CLI
186
+
187
+ make format # format code
188
+ make check # run linting and type checking
189
+ make test # run tests
190
+ make test-kimi-cli # run Kimi CLI tests only
191
+ make test-kosong # run kosong tests only
192
+ make test-pykaos # run pykaos tests only
193
+ make build # build python packages
194
+ make build-bin # build standalone binary
195
+ make help # show all make targets
196
+ ```
197
+
198
+ ## Contributing
199
+
200
+ We welcome contributions to Kimi CLI! Please refer to [CONTRIBUTING.md](./CONTRIBUTING.md) for more information.
@@ -0,0 +1,135 @@
1
+ kimi_cli/CHANGELOG.md,sha256=c97693b19d25f992360d3ef4fb27c0944928edd21b73fecb204a2a1bb04e9b3a,22733
2
+ kimi_cli/__init__.py,sha256=a19614a7db54e43f6e1169171cfd523466d9e26b21f3cd1be898945009ae685b,209
3
+ kimi_cli/acp/AGENTS.md,sha256=43ef19d65d7f96300b1b0e427de656d07bfa9d274d71ced57b98ec39dbe0b4af,4621
4
+ kimi_cli/acp/__init__.py,sha256=17395dd299da0e4b313a26c4619a19fcfa6d5c07302c2dd4e78a3a9811047883,394
5
+ kimi_cli/acp/convert.py,sha256=e49e43aa96a21c3fe6d6ea08fe4f7573be34028f9b3de2d269c6440a8fd89bce,3677
6
+ kimi_cli/acp/kaos.py,sha256=7760f8f603fc9df9e954e3b93c95fbf5d44072e632db3e62af7c836a9091ea98,9348
7
+ kimi_cli/acp/mcp.py,sha256=0fdf064e97ff387105a3b2b07dead99dbf57e7b1eaeef537e98cb5d33229c169,1540
8
+ kimi_cli/acp/server.py,sha256=94a6a959ea934a414f9d6821828d7c6bb7b504a51252b53901525ae118dd2e3c,13573
9
+ kimi_cli/acp/session.py,sha256=85abc5cd975440a510266d93a3641f4d16ca405f542410d10d4476606b3032c0,16808
10
+ kimi_cli/acp/tools.py,sha256=5588bb3d9a1c9a427f87aebc54b9193325a09118f64911f29dc2ee8c2d124eab,5842
11
+ kimi_cli/acp/types.py,sha256=5e916308f4c09262befcdb45b0bd42f365254363bcf27806984691a7c6c580f4,348
12
+ kimi_cli/agents/default/agent.yaml,sha256=bcd0d21ead17d10c2aa6f5f7ae5421beea637993dc47eab20e8a86c2f7463dcb,730
13
+ kimi_cli/agents/default/sub.yaml,sha256=cd6e1f8d6721e349119db9d3621929ac148d3b8eaa45afef7503d76aef3e1654,689
14
+ kimi_cli/agents/default/system.md,sha256=f7fbf510797fda4f89fa40639f4c56e2b40cf99b55e17eecfd8ba3907053355d,8453
15
+ kimi_cli/agents/okabe/agent.yaml,sha256=626056892e659b46109d5c326a62429ef38620576e1d44e0357c69f4bfa02727,543
16
+ kimi_cli/agentspec.py,sha256=9baafb635ae3a20a950dd172ca94880e69732c4f041d7253b4ee9d20aa949569,5326
17
+ kimi_cli/app.py,sha256=db5185a4dda5eab2f2ceefc61333bbe679f74cab98363e280974f8ed2411bad4,12479
18
+ kimi_cli/cli/__init__.py,sha256=7371c5df6f4c6c654d73b128bb80a8c71b8a72799be9efe86fd7e23e36a5896f,18241
19
+ kimi_cli/cli/__main__.py,sha256=0e5b278e7510d7b16cd52cb56668f429b98c702e247489bada0f5d575f05187c,125
20
+ kimi_cli/cli/info.py,sha256=309f324485694ce6fc6c436933d67e56a8febc79aaa348a03172c568abb5b88c,1637
21
+ kimi_cli/cli/mcp.py,sha256=60606dbdf57beb929c265266a40646f6ef8162597cd273808b99e649b1e1f140,11353
22
+ kimi_cli/config.py,sha256=7ca46e89731c4f019e5fe89e57b4279951ea97bcb8ad75c33e1a34ef5ca1b255,9818
23
+ kimi_cli/constant.py,sha256=a14147cfa368039b2b68fbf819f8c5c3f68db931e3ef1aa54e5a46bf76a436b2,164
24
+ kimi_cli/exception.py,sha256=aad3f2c712ca1a4437709b7c6839fd9c3cb017b285eb68434830cc4943aa7434,604
25
+ kimi_cli/flow/__init__.py,sha256=be4dcf11446a4f390c794697cb0b5680aba83f40f7c9de20e689d59d0bd0bb8c,3476
26
+ kimi_cli/flow/d2.py,sha256=27deb4c442bd30e4d765ab89a3a7301f254fe214b25ea935bcfc679a343082d6,11075
27
+ kimi_cli/flow/mermaid.py,sha256=f42ed4e705975abbadc505346dd759d4690786e3319ba59fa1263325d698a4a7,7450
28
+ kimi_cli/llm.py,sha256=1445b076ada725132ed860be751570a5ff05372a37758c91073d8b191bb908d8,7852
29
+ kimi_cli/metadata.py,sha256=9c54a33a257d4ee48f7e136dce0975ce6e592dfed3c31caec730b8acb8c4dcb2,2605
30
+ kimi_cli/platforms.py,sha256=195f1c8d03ba9b5e940b17a9e5fbdbbbaca18b04d535c232e19c6688f4a04029,7952
31
+ kimi_cli/prompts/__init__.py,sha256=57dfdb5f7c541e04b87f2d708ee7af46295735e10d6f18b35313a7e30483385c,210
32
+ kimi_cli/prompts/compact.md,sha256=24753a19a3c0dfabc5545a103666a559cc7dd8caa963715fdc6ca7dd787a0e0a,1858
33
+ kimi_cli/prompts/init.md,sha256=d271a0df6dd7b330ffec4f645a74c0392dafc1b3bfc1e3f2a77624e96cf6abbe,1380
34
+ kimi_cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
35
+ kimi_cli/session.py,sha256=4f32fa7bfd47cab0a0b2e9f8af9b58f442c394724faf8c3ee0f0802cd25c0024,9835
36
+ kimi_cli/share.py,sha256=c337ae72e2d47728d6418cb5aa4c9be67cda1c742466bc3a9fe0f32883b756d9,240
37
+ kimi_cli/skill.py,sha256=57e2f7dab8ef8ff2b1312ee38ad70762e504694d6fca252394f70aadd19928f4,3788
38
+ kimi_cli/skills/kimi-cli-help/SKILL.md,sha256=3056e146fb0309511ad41de0585c82eef58efdd60b6dfda076cc168065bbc286,1993
39
+ kimi_cli/skills/skill-creator/SKILL.md,sha256=ae7db8fe2e84a2f6fa95b74a779d2da0fb7534fdbec407aacdb3990d5b641b76,17629
40
+ kimi_cli/soul/__init__.py,sha256=3552d639766b94c4c99614f19dd20cc9c43e61a1a49eec66811a53707f97177f,6635
41
+ kimi_cli/soul/agent.py,sha256=2b198eab1a9e9904e95ba8af43ff6b67cade121d5da10d0c44b99bf5aa2f2c04,9758
42
+ kimi_cli/soul/approval.py,sha256=bb279af8a7b2bbef5fb88505612063fdd830f2f6885ae4965648417eaa9a900f,4582
43
+ kimi_cli/soul/compaction.py,sha256=50f6359cb00b01a34f773a131a7cd6c38f7bd6595f82a0afb4572d79c424295a,4327
44
+ kimi_cli/soul/context.py,sha256=352694721143714056628705d205e9dc1383b1f3acf18ef4fa182e42a93ebd60,6929
45
+ kimi_cli/soul/denwarenji.py,sha256=a5fafb3e1b7db8f45e758fe1e4ae84346af2ebe0f5d1f4ec78bfbf00498d663d,1420
46
+ kimi_cli/soul/kimisoul.py,sha256=cbf88ab3b54f48615c3dea17c74cec8e9ac93b13c71b2af96308e2efa5a0a771,26160
47
+ kimi_cli/soul/message.py,sha256=9accf156da96288a7b19dfbe8431f757191fd9b8b048a33e97d2508619db8f0d,2576
48
+ kimi_cli/soul/slash.py,sha256=c84a035c4ce36e1902df9351bf2139cf91c6f660e403abba4b444b445efa6cfb,2411
49
+ kimi_cli/soul/toolset.py,sha256=ead7953d328313f38677815426f917e4ef12a0a9d084f1a2f0112226313fa9ec,15080
50
+ kimi_cli/toad.py,sha256=fbf2def1c99770d0da7d7227efde70ef90f61d179bcf7ab1d0f46e2845e8ee38,2251
51
+ kimi_cli/tools/AGENTS.md,sha256=b90bd16545f33cb0daef68a151ac482424a6bbf771177edf7492f1231c5b1cd4,208
52
+ kimi_cli/tools/__init__.py,sha256=f6c6e9bbdf87b8999988be8cd12916407beed5400081752a1d40889fd3ae579c,3604
53
+ kimi_cli/tools/display.py,sha256=426a33a2d1060d89b3cf89abfe0a9ba460880a542e43e2c38c983c5be9639193,518
54
+ kimi_cli/tools/dmail/__init__.py,sha256=ba06dbe4c7b7eccddb3fabe3848ee890e94db06b088dc0d94db721bd2704a906,1217
55
+ kimi_cli/tools/dmail/dmail.md,sha256=0a3ccb62ce1e579521f8a6ab2e799fde36fba23d3a860b6abc28758b9967b7b5,2570
56
+ kimi_cli/tools/file/__init__.py,sha256=ee9ab55c64458f57b7e0596c19d4d267174685b49c9b48c8848f8950a3c4e48d,492
57
+ kimi_cli/tools/file/glob.md,sha256=11fbfaf6033f57b69c6f91077ddd90505036937cd7217600d96992b9a48b7ca7,1400
58
+ kimi_cli/tools/file/glob.py,sha256=5ba1e132c01e95fecede82c5ecfa2c042d6a949017fde660ba8c6b142d743939,5347
59
+ kimi_cli/tools/file/grep.md,sha256=66a59047357123116faad547d3a0a71fc6d34f7157704c0f63b4f5fae82f2cdd,246
60
+ kimi_cli/tools/file/grep_local.py,sha256=0cbd7183d638f1c19aa6e38f84f720d5a00c79a8452c1d467319a53ed3a01876,11096
61
+ kimi_cli/tools/file/read.md,sha256=14475a83df458ee328c4bacaf42dd02604cb6ba2daf10f7ea1a6d1479122c2e0,2451
62
+ kimi_cli/tools/file/read.py,sha256=16200f3c15c124cfa64fe5abb681940ba5f6093c592a266007dbb2c6f0de5cfa,8308
63
+ kimi_cli/tools/file/replace.md,sha256=ffd3045346781d2d40aa4159a67805538c8804fb84e21f1ca35cded68af4a904,268
64
+ kimi_cli/tools/file/replace.py,sha256=b33bcef139d804622ce9fc49a29a05c46a5f7db780e09a7fa8142c0064532dd0,5455
65
+ kimi_cli/tools/file/utils.py,sha256=94e631ac665d66e297272ae538cf0d59040685e9931c2520112b351519ed7179,7581
66
+ kimi_cli/tools/file/write.md,sha256=f37b0f4742da57797ec4dd29fbd4fdc9b6617c6be644724a3b16d651c6129cec,324
67
+ kimi_cli/tools/file/write.py,sha256=4cf4313d4f317f9ed6780fae7207811169d7c098d194ba3b3564d6d78e291384,5099
68
+ kimi_cli/tools/multiagent/__init__.py,sha256=ed1c6d2d18c103155ad008ce45a6c43a35c3a722784bf220f4a04bebd835d062,107
69
+ kimi_cli/tools/multiagent/create.md,sha256=055a1ea07b4af6d50bb0d2acbb4a2ec714e8460c93710bb520dbcd937698ed35,529
70
+ kimi_cli/tools/multiagent/create.py,sha256=9abfdf89a86db238a117a8bab4eb2b163d55bce2213359346205e6e504a59673,1855
71
+ kimi_cli/tools/multiagent/task.md,sha256=391cc3553c7d310a323626bae180dd41cb810fb1233583713ebde105f954147a,2280
72
+ kimi_cli/tools/multiagent/task.py,sha256=6d70378daca0a6e96cbc5987f9d273d326d4f93ed9d0be96d9062fd4f5547dde,6097
73
+ kimi_cli/tools/shell/__init__.py,sha256=7af9d43e73f41495348f2c959a7396dbd9f8ed6c1f70057baeba87234f780566,3919
74
+ kimi_cli/tools/shell/bash.md,sha256=90570c8feea601f664574358bfe4b862632a5c39f3e5277cbaeb5652efc0f988,2298
75
+ kimi_cli/tools/shell/powershell.md,sha256=8914b63a0f3bd900189470893da174393fa09bdbff3288dbd0748e9cccdb556e,2027
76
+ kimi_cli/tools/test.py,sha256=4e4932235ea7f9fcb39e57f543441bd03d822ad05577a00656fdaf3dd130a324,1446
77
+ kimi_cli/tools/think/__init__.py,sha256=920c19961443dea11db375788bd4bd9eb6db066db8d7093b9888e92e44bed08b,605
78
+ kimi_cli/tools/think/think.md,sha256=ab40d4de1d8adb208384a4ab548e35776283cb0a681c6e208b041fc40ccba724,200
79
+ kimi_cli/tools/todo/__init__.py,sha256=e82e9da9a545a75d3c64f6a715bc6a4009d3914a5ca04e97263f2722c536ee0f,1114
80
+ kimi_cli/tools/todo/set_todo_list.md,sha256=89509503f43ab321d440a04dc133ddc3e29859f68907a42c39e6093f7bfd485c,1654
81
+ kimi_cli/tools/utils.py,sha256=f30aa5195ed0e6a1058b830d0e802f9d1324bf92d30d6acf1ebae36fe2d9acb8,6073
82
+ kimi_cli/tools/web/__init__.py,sha256=e13108c598828a8a05907a7a821e7ac92f5d63572bb9866dc12ca026094acb42,95
83
+ kimi_cli/tools/web/fetch.md,sha256=56d00bd93b4e379c4f7efe445fce963eb26b8d20f85d4c19097ba6f33bd0019a,67
84
+ kimi_cli/tools/web/fetch.py,sha256=5884e2da92a3c44e2411bffac6edb1776060bd0c01625672adcf633cb984fd35,5765
85
+ kimi_cli/tools/web/search.md,sha256=24049f9e90d37083e0fc78b8b2e3a5f6fadf09bea00f36712b235d1212a2f532,146
86
+ kimi_cli/tools/web/search.py,sha256=0e83a6461dd731b2704c95ca38d7a5ad1f1b9f1baaf73fd2788e86c6e259d624,4443
87
+ kimi_cli/ui/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
88
+ kimi_cli/ui/acp/__init__.py,sha256=149d2d482ddacefce25fe4040ff05e861899a724f4c811f035bf8207075f243a,2686
89
+ kimi_cli/ui/print/__init__.py,sha256=7acf5421dfc80ce4839526d155a089be173d1acfb634a5015e9b1e4125490a63,4741
90
+ kimi_cli/ui/print/visualize.py,sha256=5d19643f468a4247ae1687ae5ba9ddaca15458113d6496192c68c025a46f4576,5669
91
+ kimi_cli/ui/shell/__init__.py,sha256=b306275d600b67dff46065de93ac7406db43fe4c856a61010647b7f58106a627,13804
92
+ kimi_cli/ui/shell/console.py,sha256=1882aa2c11c31dcf834649462c1f760de9b50213fa09aa8235aa27e3f7e3dbd8,878
93
+ kimi_cli/ui/shell/debug.py,sha256=97cb0f047f0ca8c32a4d217f041b068ef5ff0f8724394f55e48c094a01a97801,5777
94
+ kimi_cli/ui/shell/keyboard.py,sha256=f70fedb6058a7dcef00dc3afadc66e8cbb754d2701447641862c99b305100bde,5231
95
+ kimi_cli/ui/shell/prompt.py,sha256=0419dd52dc764e433f9aeb083f9eb781eb40d9739723ed5a73e687552afd3596,27657
96
+ kimi_cli/ui/shell/replay.py,sha256=0a44a99aef7512624aa6dc53c23a30659c94dc0bc4938e68b5c33ce7818d3afd,5636
97
+ kimi_cli/ui/shell/setup.py,sha256=71c2b53ba4c8e8769bb3ac542c886e67e6224fa80c888dad5c50eb817456f62a,5559
98
+ kimi_cli/ui/shell/slash.py,sha256=c1a17626c7163c7f3f24a1365a2970bfd72b2e05e5ed010abe95adf3c12afa6d,13814
99
+ kimi_cli/ui/shell/update.py,sha256=9bfeedcc042e13f2406c5a282d0fe88f4185be4cb49793930402b812116bb1c5,7370
100
+ kimi_cli/ui/shell/usage.py,sha256=0e642e765de999713c4a91583399e56d53227464c8d11e366fd5cf87b175c21c,8947
101
+ kimi_cli/ui/shell/visualize.py,sha256=f4aecf288a030baf807c8ad2ba057928b066829bdda09bf8591e40a4492d245f,23032
102
+ kimi_cli/ui/wire/__init__.py,sha256=9f8b883b91c9ce56fafb9db52720a1773b2ef2e5b2dd8a96bfaf913d86bd9e62,9748
103
+ kimi_cli/ui/wire/jsonrpc.py,sha256=e89d25fc8f995b67ffc38ef3a0b36d39146d6da2973cbfb6c40f1304d58f8b89,3675
104
+ kimi_cli/ui/wire/protocol.py,sha256=fc02cdbfb0ff68a719eb476296cb9a642417f8ad9b46de76afc5eef09116df91,33
105
+ kimi_cli/utils/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
106
+ kimi_cli/utils/aiohttp.py,sha256=6257967133ea6bf9fb949ce5d88496e3dac144c85b315f085ea0c6d7fab49465,281
107
+ kimi_cli/utils/aioqueue.py,sha256=440a8cc5fef7bf181362f0bf487813c06f56a7ab8ae37c41e5aba89e92fdd32e,2152
108
+ kimi_cli/utils/broadcast.py,sha256=85bb2a64e8aef6d3dc156aff21d1560087ce50026d9c51e5c2856790078e7393,1152
109
+ kimi_cli/utils/changelog.py,sha256=4bdd5b7ee36f06206b862de702f974bb974b23d493a3669f09b9506213df5b11,3597
110
+ kimi_cli/utils/clipboard.py,sha256=66ff12971d06f7db7791237c83d82d63db18f82e81c50ae9a3f535f434616c13,248
111
+ kimi_cli/utils/datetime.py,sha256=dabc6b4ce89be0551a6710cb6a78724d64577855837097fdf74f2c238dcabdb2,1152
112
+ kimi_cli/utils/environment.py,sha256=32c643055b3b841e930d046e08666460db6cf1f37281d394798125e59a872a0a,1658
113
+ kimi_cli/utils/envvar.py,sha256=a44f2548a6db6e1ca9021f54553b4f0991b6dde67fc0fcac810f3907ed97ce6d,277
114
+ kimi_cli/utils/frontmatter.py,sha256=a1fd28a2e996118838c4e3d940f5e11bfd0aa41b74577a513fa7f0441163c32f,1186
115
+ kimi_cli/utils/logging.py,sha256=802b230d3bc29f156a2cb1dbb4db0d6f9983b54cf8aff30d2a79067e8a62e7b7,474
116
+ kimi_cli/utils/message.py,sha256=3941e8e108c7e7de567670de5112b33bc332512c333b502796d1f4eafcf8ce37,509
117
+ kimi_cli/utils/path.py,sha256=54f75a9362ab0a978492a223b1baf6ccf80acf6a6f172321cbdfd2fa03d7c3e7,3792
118
+ kimi_cli/utils/pyinstaller.py,sha256=abd98647fad5efe3215fa57b3e397e2c333ab3852bff32bed0b0987e9aa24d43,698
119
+ kimi_cli/utils/rich/__init__.py,sha256=2cb421c8491bd11aa2360119f88a4788337fc9884aba05d6400761a0e24c4c2b,909
120
+ kimi_cli/utils/rich/columns.py,sha256=a87363bf244b457e8142eee84423e8e48b1dedc78a14181518f47494e12f31b9,3909
121
+ kimi_cli/utils/rich/markdown.py,sha256=61ebb1fb1213c5f3c9d0bdaf4b9b2aab16f6a95c6a67f5a68a37ce470c00988f,33999
122
+ kimi_cli/utils/rich/markdown_sample.md,sha256=2b04c7ad3eadca4bff61e5ccf4d9f2bc400110867afbce190e671ef3ff28007c,1792
123
+ kimi_cli/utils/rich/markdown_sample_short.md,sha256=52f9186332bd41e0e84586c7025c3e69df69cf406add8e71d2413735aeb8aa24,17
124
+ kimi_cli/utils/signals.py,sha256=424ac90d6764e56a55e1fba8cd41f029c72e50257dc111093ef93ee8750a4cde,1423
125
+ kimi_cli/utils/slashcmd.py,sha256=5dbfc385460733d0b0b52a89fd5efcfb800ffad0e0b65f87006c95a9cff47b66,3680
126
+ kimi_cli/utils/string.py,sha256=6885d64e3d4577e2c3c341c025f91b16f79d2884545945c679081a33d02d1833,629
127
+ kimi_cli/utils/term.py,sha256=9ee4bd1021be86d8cc18c2e4c2f031d9bf673a7b2c4dd573e65813d821f08578,4588
128
+ kimi_cli/utils/typing.py,sha256=63fa3a15fcad540a748fbf741659408a9375926ccca6b278c4dbcf1d61899c7e,637
129
+ kimi_cli/wire/__init__.py,sha256=61860cb9c06ca8af6e814ff24baa8015723ed817b381fb3cf826f6e156569cb3,4505
130
+ kimi_cli/wire/serde.py,sha256=53c9d214f88f7ad1c307965c619e061be072540b33a54e2af4c688eb3ae4a0bd,1282
131
+ kimi_cli/wire/types.py,sha256=6deb6d3fc5bef05b5e5963b38571e90a5f431544c54f6cfb857aa34531d4e462,8233
132
+ kimi_cli-0.78.dist-info/WHEEL,sha256=70ab3c2925fe316809860cb034f99ba13c4b49819b339959274aab755cc084a8,78
133
+ kimi_cli-0.78.dist-info/entry_points.txt,sha256=1f61f3727d07a13d32014a312a93961771f222f580c7d607fb3ea6a5ae25e39c,71
134
+ kimi_cli-0.78.dist-info/METADATA,sha256=d9aee4f20f60607cd97133c56742157e01520f8918fbfd51bf7bddf4d1c50855,6259
135
+ kimi_cli-0.78.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ kimi = kimi_cli.cli:cli
3
+ kimi-cli = kimi_cli.cli:cli
4
+