kimi-cli 0.37__tar.gz → 0.38__tar.gz

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 (79) hide show
  1. {kimi_cli-0.37 → kimi_cli-0.38}/PKG-INFO +2 -2
  2. {kimi_cli-0.37 → kimi_cli-0.38}/README.md +1 -1
  3. {kimi_cli-0.37 → kimi_cli-0.38}/pyproject.toml +1 -1
  4. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/CHANGELOG.md +4 -0
  5. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/__init__.py +13 -1
  6. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/update.py +8 -3
  7. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/__init__.py +0 -0
  8. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/agent.py +0 -0
  9. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/agents/koder/README.md +0 -0
  10. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/agents/koder/agent.yaml +0 -0
  11. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/agents/koder/sub.yaml +0 -0
  12. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/agents/koder/system.md +0 -0
  13. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/config.py +0 -0
  14. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/llm.py +0 -0
  15. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/metadata.py +0 -0
  16. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/prompts/__init__.py +0 -0
  17. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/prompts/compact.md +0 -0
  18. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/prompts/init.md +0 -0
  19. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/py.typed +0 -0
  20. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/share.py +0 -0
  21. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/__init__.py +0 -0
  22. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/approval.py +0 -0
  23. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/compaction.py +0 -0
  24. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/context.py +0 -0
  25. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/denwarenji.py +0 -0
  26. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/kimisoul.py +0 -0
  27. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/message.py +0 -0
  28. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/toolset.py +0 -0
  29. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/soul/wire.py +0 -0
  30. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/__init__.py +0 -0
  31. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/bash/__init__.py +0 -0
  32. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/bash/bash.md +0 -0
  33. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/dmail/__init__.py +0 -0
  34. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/dmail/dmail.md +0 -0
  35. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/__init__.py +0 -0
  36. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/glob.md +0 -0
  37. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/glob.py +0 -0
  38. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/grep.md +0 -0
  39. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/grep.py +0 -0
  40. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/patch.md +0 -0
  41. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/patch.py +0 -0
  42. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/read.md +0 -0
  43. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/read.py +0 -0
  44. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/replace.md +0 -0
  45. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/replace.py +0 -0
  46. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/write.md +0 -0
  47. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/file/write.py +0 -0
  48. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/mcp.py +0 -0
  49. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/task/__init__.py +0 -0
  50. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/task/task.md +0 -0
  51. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/test.py +0 -0
  52. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/think/__init__.py +0 -0
  53. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/think/think.md +0 -0
  54. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/todo/__init__.py +0 -0
  55. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/todo/set_todo_list.md +0 -0
  56. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/utils.py +0 -0
  57. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/web/__init__.py +0 -0
  58. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/web/fetch.md +0 -0
  59. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/web/fetch.py +0 -0
  60. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/web/search.md +0 -0
  61. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/tools/web/search.py +0 -0
  62. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/__init__.py +0 -0
  63. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/acp/__init__.py +0 -0
  64. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/print/__init__.py +0 -0
  65. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/console.py +0 -0
  66. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/debug.py +0 -0
  67. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/keyboard.py +0 -0
  68. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/liveview.py +0 -0
  69. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/metacmd.py +0 -0
  70. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/prompt.py +0 -0
  71. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/setup.py +0 -0
  72. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/ui/shell/visualize.py +0 -0
  73. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/changelog.py +0 -0
  74. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/logging.py +0 -0
  75. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/message.py +0 -0
  76. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/path.py +0 -0
  77. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/provider.py +0 -0
  78. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/pyinstaller.py +0 -0
  79. {kimi_cli-0.37 → kimi_cli-0.38}/src/kimi_cli/utils/string.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kimi-cli
3
- Version: 0.37
3
+ Version: 0.38
4
4
  Summary: Kimi CLI is your next CLI agent.
5
5
  Requires-Dist: agent-client-protocol>=0.4.9
6
6
  Requires-Dist: aiofiles>=25.1.0
@@ -69,7 +69,7 @@ Run `kimi` command in the directory you want to work on, then send `/setup` to s
69
69
 
70
70
  ![](./docs/images/setup.png)
71
71
 
72
- After setup is complete, Kimi CLI will be ready to use. You can send `/help` to get more information.
72
+ After setup, Kimi CLI will be ready to use. You can send `/help` to get more information.
73
73
 
74
74
  ## Features
75
75
 
@@ -46,7 +46,7 @@ Run `kimi` command in the directory you want to work on, then send `/setup` to s
46
46
 
47
47
  ![](./docs/images/setup.png)
48
48
 
49
- After setup is complete, Kimi CLI will be ready to use. You can send `/help` to get more information.
49
+ After setup, Kimi CLI will be ready to use. You can send `/help` to get more information.
50
50
 
51
51
  ## Features
52
52
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kimi-cli"
3
- version = "0.37"
3
+ version = "0.38"
4
4
  description = "Kimi CLI is your next CLI agent."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -9,6 +9,10 @@ Internal builds may append content to the Unreleased section.
9
9
  Only write entries that are worth mentioning to users.
10
10
  -->
11
11
 
12
+ ## [0.38] - 2025-10-24
13
+
14
+ - Minor UX improvements
15
+
12
16
  ## [0.37] - 2025-10-24
13
17
 
14
18
  ### Fixed
@@ -16,7 +16,7 @@ from kimi_cli.ui import RunCancelled, run_soul
16
16
  from kimi_cli.ui.shell.console import console
17
17
  from kimi_cli.ui.shell.metacmd import get_meta_command
18
18
  from kimi_cli.ui.shell.prompt import CustomPromptSession, PromptMode, toast
19
- from kimi_cli.ui.shell.update import UpdateResult, do_update
19
+ from kimi_cli.ui.shell.update import LATEST_VERSION_FILE, UpdateResult, do_update, semver_tuple
20
20
  from kimi_cli.ui.shell.visualize import visualize
21
21
  from kimi_cli.utils.logging import logger
22
22
 
@@ -262,6 +262,18 @@ def _print_welcome_info(name: str, model: str, info_items: dict[str, str]) -> No
262
262
  )
263
263
  )
264
264
 
265
+ if LATEST_VERSION_FILE.exists():
266
+ from kimi_cli import __version__ as current_version
267
+
268
+ latest_version = LATEST_VERSION_FILE.read_text().strip()
269
+ if semver_tuple(latest_version) > semver_tuple(current_version):
270
+ rows.append(
271
+ Text.from_markup(
272
+ f"\n[yellow]New version available: {latest_version}. "
273
+ "Please run `uv tool upgrade kimi-cli` to upgrade.[/yellow]"
274
+ )
275
+ )
276
+
265
277
  console.print(
266
278
  Panel(
267
279
  Group(*rows),
@@ -11,6 +11,7 @@ from pathlib import Path
11
11
 
12
12
  import aiohttp
13
13
 
14
+ from kimi_cli.share import get_share_dir
14
15
  from kimi_cli.ui.shell.console import console
15
16
  from kimi_cli.utils.logging import logger
16
17
 
@@ -30,7 +31,7 @@ class UpdateResult(Enum):
30
31
  _UPDATE_LOCK = asyncio.Lock()
31
32
 
32
33
 
33
- def _semver_tuple(version: str) -> tuple[int, int, int]:
34
+ def semver_tuple(version: str) -> tuple[int, int, int]:
34
35
  v = version.strip()
35
36
  if v.startswith("v"):
36
37
  v = v[1:]
@@ -79,6 +80,9 @@ async def do_update(*, print: bool = True, check_only: bool = False) -> UpdateRe
79
80
  return await _do_update(print=print, check_only=check_only)
80
81
 
81
82
 
83
+ LATEST_VERSION_FILE = get_share_dir() / "latest_version.txt"
84
+
85
+
82
86
  async def _do_update(*, print: bool, check_only: bool) -> UpdateResult:
83
87
  from kimi_cli import __version__ as current_version
84
88
 
@@ -100,9 +104,10 @@ async def _do_update(*, print: bool, check_only: bool) -> UpdateResult:
100
104
  return UpdateResult.FAILED
101
105
 
102
106
  logger.debug("Latest version: {latest_version}", latest_version=latest_version)
107
+ LATEST_VERSION_FILE.write_text(latest_version)
103
108
 
104
- cur_t = _semver_tuple(current_version)
105
- lat_t = _semver_tuple(latest_version)
109
+ cur_t = semver_tuple(current_version)
110
+ lat_t = semver_tuple(latest_version)
106
111
 
107
112
  if cur_t >= lat_t:
108
113
  logger.debug("Already up to date: {current_version}", current_version=current_version)
File without changes
File without changes
File without changes
File without changes
File without changes