- remove defaultServicesModule() and services/src/module.ts; consume getSingletonServiceDescriptors() directly\n- update daemon service registrations and bootstrap to use registry descriptors\n- add DisposableMap, DisposableSet, disposable tracking, and disposeOnReturn to agent-core DI\n- update AGENTS.md with new registration patterns
- make InstantiationService.services private to prevent external mutation\n- add serviceOverrides to DaemonStartOptions for test injection\n- refactor e2e tests to use startup overrides instead of post-boot container hacks
- move InstantiationType to extensions module; change SyncDescriptor0 to interface\n- add _strict mode and spread args to invokeFunction\n- construct parent-owned descriptors in parent scope\n- materialise delayed services in child scope with global graph tracking\n- update TestInstantiationService ctor and tests for new semantics
- replace scenario 06 with dedicated 06-09 files for model catalog, session children, pending recovery, and image file prompts\n- add prompt execution coverage for parent and child sessions\n- update README scenario index
- Add POST /api/v1/sessions/{session_id}:undo endpoint\n- Add undo request/response schemas and SESSION_UNDO_UNAVAILABLE error code\n- Refactor OpenAPI transforms to support fork, compact, and undo actions\n- Implement SessionService.undo with history validation and compaction boundary guards\n- Add E2E and unit tests for undo endpoint and service logic
- restructure daemon/services DI wiring and lifecycle events
- add session, workspace, model catalog, file, and reverse-RPC REST APIs
- add daemon e2e package with structured scenarios and HTML trace reports
- polish kimi-web rendering, mobile layout, diff view, and session UX
Add an optional `identity` field to HarnessBridgeOptions and default-wire
`kimiRequestHeaders` (User-Agent + X-Msh-Platform/Version/Device-Id) plus
`appVersion` from it. Without these the daemon-hosted KimiCore made
outbound fetches with the Node default User-Agent and the managed
Kimi-for-Coding endpoint rejected with 40340 ("only available for Coding
Agents such as Kimi CLI, …"). The in-process TUI path was unaffected
because SDKRpcClient already synthesised the same headers from its own
identity. Explicit `kimiRequestHeaders` / `appVersion` still win.
apps/kimi-code wires this through its `daemon` subcommand using the
existing `createKimiCodeHostIdentity(version)` helper, and ships a small
`dev:daemon:restart` press-Enter-to-respawn helper so the dev loop can
pick up a fresh build without manually killing the lock-holder.
- default-construct KimiAuthFacade in HarnessBridge when caller omits resolveOAuthTokenProvider\n- stop synthesized always-throw AUTH_LOGIN_REQUIRED closure after device-code login\n- remove tsx watch from dev:daemon to avoid restart loops\n- ignore Docker artifacts in .gitignore\n- add regression test for default resolver wiring
* feat(kosong): support claude-fable-5 adaptive thinking
claude-fable-5 only accepts thinking: {type: "adaptive"} with
output_config.effort; the legacy enabled/budget_tokens config and an
explicit disabled config both return HTTP 400.
- Parse the fable family in Claude model ids (major-only version)
- Route fable >= 5 to adaptive thinking; allow xhigh effort
- Omit the thinking field entirely when thinking is off on fable
- Register the 128k output ceiling and thinking/vision capability
* update .changeset
Updated the configuration to use adaptive thinking for Claude Fable 5 support.
Signed-off-by: 7Sageer <12210216@mail.sustech.edu.cn>
---------
Signed-off-by: 7Sageer <12210216@mail.sustech.edu.cn>
* fix: align datasource plugin environment
* refactor: inject managed Kimi env into all stdio plugins
Pin the datasource credential-name test to the canonical
resolveKimiCodeOAuthKey so a digest drift in the standalone plugin
fails CI, and drop the hardcoded plugin-name special case so every
stdio plugin receives the active managed Kimi base URL / OAuth host
consistently (process.env and KIMI_CODE_HOME are already shared with
all plugins).
Installed plugins whose marketplace version is newer than the local
version now render an `update <local> → <latest>` badge and update in
place on Enter; up-to-date plugins show `installed · v<version>`.
Dev-server and CDN-build marketplace generation now stamp each entry's
version from the plugin manifest so the advertised "latest" stays accurate.
Adds a pure computeUpdateStatus() (semver, no spurious downgrades) with tests.
Co-authored-by: qer <Anna_Knapprfr@mail.com>
* Refactor theme
* custom theme support
* docs: add custom themes guide
Document the custom theme file location, the color token reference, selecting a theme via /theme and tui.toml, and fallback behavior. Link it from the customization sidebar and the tui.toml theme field.
* feat(skill): add built-in custom-theme skill
Guides the model (or a manual /custom-theme run) to author a theme JSON in ~/.kimi-code/themes/: docs token reference, deliberate color choices, hex validation, and how to apply via /theme or /reload-tui. Note in the write-tui skill to keep the token set in sync across colors.ts, the schema, the docs, and this skill. Enrich the custom-theme changeset to cover all three usage paths.
* chore: remove theme research report
* fix(tui): resolve lint errors after main merge
Remove unused chalk/currentTheme/ResolvedTheme imports left by the theme refactor; break the theme <-> pi-tui-theme import cycle by dropping the markdown/editor theme getters from the Theme class (consumers call createMarkdownTheme directly); fix unused vars/params, a floating promise, and a redundant union type.
* fix(tui): address custom theme review feedback
- await applyTheme before refreshing terminal theme tracking, so
switching to "auto" installs the watcher against the new state
- invalidate the transcript on automatic (terminal-driven) theme
changes so already-rendered entries repaint
- rebuild UsagePanel bodies on invalidate (previously a no-op); /usage,
/status, /mcp and /plugins now repaint on a theme switch
- repaint the compaction header on invalidate
- validate a custom theme before applying it from the /theme picker
- hide reserved dark/light/auto names from the custom theme list
- escape the theme name when writing tui.toml
- stop the custom theme loader writing warnings to the raw terminal
- remove a stray hello.ts
* refactor(tui): polish custom theme feature
- footer and todo-panel read the currentTheme singleton directly at
render time instead of caching a palette copy; drop their setColors
methods and the manual setColors calls on every theme change
- support "base": "dark" | "light" in custom theme files so a partial
light theme inherits the light palette for unspecified tokens
- reconcile the docs and the custom-theme skill with the silent
invalid-color fallback (no terminal warning)
* refactor(tui): live-repaint the agent swarm progress panel
Read the currentTheme palette through a getter instead of caching it at
construction time, so the swarm progress panel recolors on a theme switch
like the rest of the transcript. Drops the now-unused `colors` option.
* chore: remove plan.md
* docs: update custom theme guide
* docs: document custom theme skill command
* fix(skill): make custom theme user-triggered only
* docs: merge Kimi Datasource into plugins page and add terminal tip to getting started
- Merge datasource.md content into plugins.md as a dedicated section,
placed between installation management and plugin manifest sections
- Replace verbose feature tables with scenario-driven use cases and a
condensed coverage table
- Add /skill:kimi-datasource as an explicit invocation method alongside
natural language; update /new references to /reload
- Promote GitHub URL formats and notes to named H3 subsections within
installation management
- Add terminal recommendation tip (Kitty / Ghostty) in the Installation
section of getting-started
- Remove standalone datasource.md sidebar entries from zh and en nav
* docs: remove stale datasource pages and add redirects to plugins
Delete zh/en datasource.md (content now merged into plugins.md) and
add VitePress redirects so existing bookmarks and search results for
/customization/datasource land on /customization/plugins instead.
* docs: restore datasource pages as forwarding stubs
Replace deleted files with minimal pages that link to the merged
section in plugins.md. VitePress redirects only fire in SSG builds;
dev-server visitors hitting the old URL would 404 without these stubs.
* docs: add dev-server redirect middleware for removed datasource pages
VitePress `redirects` config only fires during SSG build; the dev
server ignores it, causing 404s on the old /customization/datasource
URLs. Add a Vite `configureServer` middleware that handles the redirect
in dev mode, while the top-level `redirects` config continues to
generate meta-refresh HTML pages for the production build.
---------
Co-authored-by: qer <wbxl2000@outlook.com>
* docs: expand AGENTS.md with reader personas, format decisions, and checklist
Add documentation writing principles that were missing from the existing guide:
- Readers: two audience types (technical vs non-technical) with writing targets
- Authoring workflow: think before rewriting (understand → structure → fill)
- Kimi platform rules: strict separation of api.kimi.com vs api.moonshot.cn URLs
- Typography: forbid four-colon callout syntax (::::), note no nesting
- Writing style: one-idea-per-paragraph, map-before-detail structure, clarify
when to use lists vs prose (avoids confusion between 'no fragmentation'
and 'parallel content needs formatting')
- Format decisions: explicit rules for ordered list / unordered list / table / prose
- Cross-references: when links are required, anchor precision, inline vs next-steps
- Page structure: standard template and banner placement rule
- Content completeness: default to keeping everything, omissions need stated reasons
- Checklist: format violation quick-reference and Kimi-specific consistency checks
All existing rules are preserved unchanged (0 lines removed).
* docs: address review comments on AGENTS.md
- Fix "next steps" rule contradiction: replace blanket ban with "no nav
tip blocks"; `## Next steps` is allowed when related pages exist
- Fix checklist Base URL pointer: was pointing to locale index.md
(which has no platform table); now links to Kimi platform rules above
- Fix callout syntax rule: `::::` is valid as an outer nested fence
when correctly closed; ban only unclosed/mismatched fences
- Fix checklist code block rule: carry forward the existing exception
that natural-language prompt examples may omit the language tag
---------
Co-authored-by: qer <wbxl2000@outlook.com>
* feat(acp-adapter): support embedded resource prompts
- advertise embeddedContext support in ACP capabilities and docs
- convert file:// resource_link blocks into decoded paths with optional line ranges
- keep XML wrappers for non-file or unparseable resource_link URIs
- update adapter tests for the new resource link behavior
* feat(acp-adapter): add ACP built-in slash command routing and UNC path support
- add local execution for /compact, /status, /usage, /mcp, /tasks, /help in ACP sessions
- surface unknown slash commands as local errors instead of forwarding to model\n- export ACP_BUILTIN_SLASH_COMMANDS from acp-adapter for CLI reuse
- fix file:// URI conversion for Windows UNC paths
- rebuild agent builtin tools on session tool kaos rebind
* docs: add Homebrew installation instructions
Add Homebrew as an installation option for macOS/Linux users in both
English and Chinese READMEs.
Closes#130
* feat(cli): detect Homebrew installs and use brew upgrade for updates
When kimi-code is installed via Homebrew, the update system now detects
the installation source and uses 'brew upgrade kimi-code' instead of
falling back to 'npm install -g'. This prevents duplicate installations
when Homebrew users receive update prompts.
* chore: add changeset for Homebrew update detection
* fix(cli): tighten Homebrew detection and disable auto-update
- Only match /cellar/ path segment (not /homebrew/) to avoid false
positives on Apple Silicon where npm global installs live under
/opt/homebrew/lib/node_modules/
- Disable background auto-update for Homebrew: brew upgrade may mutate
dependents silently and the formula can lag behind CDN releases
* fix(cli): add homebrew to InstallSource Zod schema
Keeps the persistence schema in sync with the TypeScript type. Currently
harmless since Homebrew auto-install is disabled, but prevents a silent
state reset if it is ever enabled later.
---------
Co-authored-by: liruifengv <liruifeng1024@gmail.com>