Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ Only write entries that are worth mentioning to users.

## Unreleased

- Shell: Fix file path completion missing shallow files due to slot limits by using a trie data structure with BFS traversal, prioritizing shallow paths

## 1.16.0 (2026-02-27)

- Web: Update ASCII logo banner to a new styled design
Expand Down
2 changes: 1 addition & 1 deletion docs/en/configuration/config-files.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Config Files
# Config files
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page’s top-level heading was changed to sentence case (# Config files), but other pages in this same section use title case (e.g. # Data Locations, # Environment Variables). If the docs convention is title case for H1s, consider keeping # Config Files for consistency.

Suggested change
# Config files
# Config Files

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is caused by make gen-docs.


Kimi Code CLI uses configuration files to manage API providers, models, services, and runtime parameters, supporting both TOML and JSON formats.

Expand Down
2 changes: 2 additions & 0 deletions docs/en/release-notes/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ This page documents the changes in each Kimi Code CLI release.

## Unreleased

- Shell: Fix file path completion missing shallow files due to slot limits by using a trie data structure with BFS traversal, prioritizing shallow paths

## 1.16.0 (2026-02-27)

- Web: Update ASCII logo banner to a new styled design
Expand Down
2 changes: 2 additions & 0 deletions docs/zh/release-notes/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

## 未发布

- Shell:修复文件路径补全因收集限制而遗漏浅层文件的问题,使用 Trie 数据结构和 BFS 遍历并优先扫描浅层路径

## 1.16.0 (2026-02-27)

- Web:更新 ASCII Logo 横幅为新的样式设计
Expand Down
160 changes: 81 additions & 79 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,113 +5,98 @@ description = "Kimi Code CLI is your next CLI agent."
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"agent-client-protocol==0.7.0",
"aiofiles>=24.0,<26.0",
"aiohttp==3.13.3",
"typer==0.21.1",
"kosong[contrib]==0.43.0",
# loguru stays >=0.6.0 because notify-py (via batrachian-toad) caps it at <=0.6.0 on 3.14+.
"loguru>=0.6.0,<0.8",
"prompt-toolkit==3.0.52",
"pillow==12.1.0",
"pyyaml==6.0.3",
"rich==14.2.0",
"ripgrepy==2.2.0",
"streamingjson==0.0.5",
"trafilatura==2.0.0",
# lxml is used by trafilatura/htmldate/justext; keep pinned for binary wheels.
"lxml==6.0.2",
"tenacity==9.1.2",
"fastmcp==2.12.5",
"pydantic==2.12.5",
"httpx[socks]==0.28.1",
"pykaos==0.7.0",
"batrachian-toad==0.5.23; python_version >= \"3.14\"",
"tomlkit==0.14.0",
"jinja2==3.1.6",
"pyobjc-framework-cocoa>=12.1 ; sys_platform == 'darwin'",
"fastapi>=0.115.0",
"uvicorn[standard]>=0.32.0",
"scalar-fastapi>=1.5.0",
"websockets>=14.0",
"keyring>=25.7.0",
"setproctitle>=1.3.0",
"agent-client-protocol==0.7.0",
"aiofiles>=24.0,<26.0",
"aiohttp==3.13.3",
"batrachian-toad==0.5.23; python_version >= \"3.14\"",
"fastapi>=0.115.0",
"fastmcp==2.12.5",
"httpx[socks]==0.28.1",
"jinja2==3.1.6",
"keyring>=25.7.0",
"kosong[contrib]==0.43.0",
# loguru stays >=0.6.0 because notify-py (via batrachian-toad) caps it at <=0.6.0 on 3.14+.
"loguru>=0.6.0,<0.8",
# lxml is used by trafilatura/htmldate/justext; keep pinned for binary wheels.
"lxml==6.0.2",
"pillow==12.1.0",
"prompt-toolkit==3.0.52",
"pydantic==2.12.5",
"pykaos==0.7.0",
"pyobjc-framework-cocoa>=12.1 ; sys_platform == 'darwin'",
"pyyaml==6.0.3",
"rich==14.2.0",
"ripgrepy==2.2.0",
"scalar-fastapi>=1.5.0",
"setproctitle>=1.3.0",
"streamingjson==0.0.5",
"tenacity==9.1.2",
"tomlkit==0.14.0",
"trafilatura==2.0.0",
"typer==0.21.1",
"uvicorn[standard]>=0.32.0",
"websockets>=14.0",
]

[project.scripts]
kimi = "kimi_cli.cli:cli"
kimi-cli = "kimi_cli.cli:cli"

[dependency-groups]
dev = [
"pyinstaller==6.18.0",
"inline-snapshot[black]>=0.31.1",
"pyright>=1.1.407",
"ty>=0.0.9",
"pytest>=9.0.2",
"pytest-asyncio>=1.3.0",
"ruff>=0.14.10",
"inline-snapshot[black]>=0.31.1",
"pyinstaller==6.18.0",
"pyright>=1.1.407",
"pytest>=9.0.2",
"pytest-asyncio>=1.3.0",
"ruff>=0.14.10",
"ty>=0.0.9",
]

[build-system]
requires = ["uv_build>=0.8.5,<0.10.0"]
build-backend = "uv_build"

[tool.uv.build-backend]
module-name = ["kimi_cli"]
source-exclude = ["examples/**/*", "tests/**/*", "src/kimi_cli/deps/**/*"]

[tool.uv.workspace]
members = [
"packages/kosong",
"packages/kaos",
"packages/kimi-code",
"sdks/kimi-sdk",
[tool.pyright]
typeCheckingMode = "standard"
pythonVersion = "3.14"
include = [
"src/**/*.py",
"tests/**/*.py",
"tests_ai/scripts/**/*.py",
"tests_e2e/**/*.py",
]

[tool.uv.sources]
kosong = { workspace = true }
pykaos = { workspace = true }
kimi-cli = { workspace = true }

[project.scripts]
kimi = "kimi_cli.cli:cli"
kimi-cli = "kimi_cli.cli:cli"
strict = ["src/kimi_cli/**/*.py"]

[tool.ruff]
line-length = 100

[tool.ruff.lint]
select = [
"E", # pycodestyle
"F", # Pyflakes
"UP", # pyupgrade
"B", # flake8-bugbear
"SIM", # flake8-simplify
"I", # isort
"E", # pycodestyle
"F", # Pyflakes
"UP", # pyupgrade
"B", # flake8-bugbear
"SIM", # flake8-simplify
"I", # isort
]

[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["E501"]
"tests_e2e/**/*.py" = ["E501"]
"src/kimi_cli/web/api/**/*.py" = ["B008"] # FastAPI Depends() is standard usage

[tool.pyright]
typeCheckingMode = "standard"
pythonVersion = "3.14"
include = [
"src/**/*.py",
"tests/**/*.py",
"tests_ai/scripts/**/*.py",
"tests_e2e/**/*.py",
]
strict = ["src/kimi_cli/**/*.py"]
"src/kimi_cli/web/api/**/*.py" = [
"B008"
] # FastAPI Depends() is standard usage

[tool.ty.environment]
python-version = "3.14"

[tool.ty.src]
include = [
"src/**/*.py",
"tests/**/*.py",
"tests_ai/scripts/**/*.py",
"tests_e2e/**/*.py",
"src/**/*.py",
"tests/**/*.py",
"tests_ai/scripts/**/*.py",
"tests_e2e/**/*.py",
]

[tool.typos.files]
Expand All @@ -122,3 +107,20 @@ datas = "datas"
Seeked = "Seeked"
seeked = "seeked"
iterm = "iterm"

[tool.uv.build-backend]
module-name = ["kimi_cli"]
source-exclude = ["examples/**/*", "tests/**/*", "src/kimi_cli/deps/**/*"]

[tool.uv.workspace]
members = [
"packages/kosong",
"packages/kaos",
"packages/kimi-code",
"sdks/kimi-sdk",
]

[tool.uv.sources]
kosong = { workspace = true }
pykaos = { workspace = true }
kimi-cli = { workspace = true }
Loading
Loading